Программирование / Делфа длАТПП-01 / Билет8
.docВОПР 8
Невидимые компоненты Не каждый компонент виден на форме во время запуска программы. Например, размещение на форме компонента MainMenu приводит к появлению в разрабатываемом приложении меню, но соответствующая пиктограмма во время запуска программы не отображается. Компоненты, представляющие диалоговые окна общего назначения, вообше никак не визуализируются во время работы программы. Размеры невидимого компонента в процессе разработки не изменяются — он всегда отображается в виде пиктограммы.
Класс TList позволяет создать набор из произвольного количества элементов и организовать индексный способ доступа к ним, как это делается при работе с массивом. Списки отличаются от массивов двумя важными особенностями. Во-первых, их размер может динамически меняться в ходе работы программы, фактически ограничиваясь лишь доступной памятью. Во-вторых, в списках могут храниться элементы разных типов.
Технически списки представляют собой массивы нетипизированных указателей на размещенные в динамической памяти элементы. Эти массивы размещаются в куче -отсюда возможность динамического изменения размеров списков; с другой стороны, входящие в списки нетипизированные указатели позволяют ссылаться на произвольные элементы.
Свойства класса:
property Capacity : Integer;
|
Содержит количество элементов массива указателей списка. Всегда больше Count. Если при добавлении очередного элемента Count стало равно Capacity, происходит автоматическое расширение списка на 16 элементов
|
property Count: Integer;
|
Количество элементов списка. Это свойство изменяется при добавлении или удалении элемента
|
property Items (Index: Integer) : Pointer;
|
Возвращает указатель на элемент списка по его индексу. Самый первый элемент списка имеет индекс 0
|
property List: pPointerList;
|
Возвращает указатель на массив элементов списка
|
TStrings
Абстрактный класс TStrings инкапсулирует поля и методы для работы с наборами строк. От него порождены многочисленные специализированные потомки, обслуживающие наборы строк в таких компонентах, как TComboBox, TListBox, TRichEdit и др. Эти классы (TComboBoxStrings, TListBoxStrings, TRichEditStrings и др.)
объявляются в разделах implementation соответствующих модулей (stdCtrls, ComCtrls и др.) и поэтому скрыты от браузера Delphi и не включены в Help-службу. Единственным доступным наследником TStrings является TStringList - полнофункциональный класс общего назначения.
Замечательной особенностью TStrings и его потомков является то обстоятельство, что элементами наборов служат пары строка-объект, в которых строка - собственно строка символов, а объект - объект любого класса Delphi, Такая двойственность позволяет сохранять в TStrings объекты с текстовыми примечаниями, сортировать объекты, отыскивать нужный объект по его описанию и т. д. Кроме того, в качестве объекта может использоваться потомок от TStrings, что позволяет создавать многомерные наборы строк.
Свойства класса:
property Capacity: Integer;
|
Текущая емкость набора строк
|
property CommaText: String;
|
Служит для установки или получения всего набора строк в виде единой строки с кавычками и запятыми (см. ниже пояснения)
|
property Count: Integer;
|
Текущее количество строк в наборе
|
property Names [Index: Integer] : String;
|
Для строки с индексом Index возвращает часть Name, если это строка вида Name=Value, в противном случае возвращает пустую строку
|
property Objects [Index: Integer] : TObject;
|
Открывает доступ к объекту, связанному со строкой с индексом Index
|
property Strings [Index: Integer] : String;
|
Открывает доступ к строке с индексом Index
|
property StringsAdapter: TStrings Adapter;
|
Это свойство используется только при разработке компонентов, отвечающих стандарту ActiveX
|
property Text: String;
|
Интерпретирует набор строк в виде одной длинной строки с разделителями EOLN между отдельными строками набора
|
property Values [const Name: String] : String;
|
По части Name отыскивает в наборе и возвращает часть Value для строк вида Name=Value
|
TStringList
TStringList представляет собой полнофункциональный класс общего назначения и является прямым потомкам TStrings. Помимо перекрытых абстрактных методов своего родителя класс включает в себя такие дополнительные методы и свойства:
property Duplicates: IDupli-cates;
|
Свойство, позволяющее управлять возможностью размещения в наборе двух и более идентичных строк
|
property Sorted: Boolean;
|
Признак необходимости сортировки строк в алфавитном порядке
|
property OnChange: TNoti-fyEvent;
|
Определяет реакцию на изменение набора строк. Возникает после последнего изменения
|
property OnChanging: TNoti-fyEvent;
|
Определяет реакцию на изменение набора строк. Возникает до очередного изменения
|
function Find (const S: String; var Index: Integer): Boolean;
|
Ищет в наборе строку S и в случае успеха в параметре Index возвращает ее индекс
|
КОМПОНЕНТЫ СТРАНИЦЫ DIALOGS
В состав Windows входит ряд типовых диалоговых окон, таких как окно выбора загружаемого файла, окно выбора шрифта, окно для настройки принтера и т. д. В Delphi реализованы классы, объекты которых дают программисту удобные способы создания и использования таких окон.
Работа со стандартными диалоговыми окнами осуществляется в три этапа.
Вначале на форму помещается соответствующий компонент и осуществляется настройка его свойств (следует заметить, что собственно компонент-диалог не виден в момент работы программы, видно лишь создаваемое им стандартное окно). Настройка свойств может проходить как на этапе конструирования, так и в ходе прогона программы. Как и для любых других компонентов, программист не должен заботиться о вызове конструктора и деструктора диалога - эти вызовы реализуются автоматически в момент старта и завершения программы.
На втором этапе осуществляется вызов стандартного для диалогов метода Execute, который создает и показывает на экране диалоговое окно. Вызов этого метода обычно располагается внутри обработчика какого-либо события. Например, обработчик выбора опции меню Открыть файл может вызвать метод Execute диалога TOpenDialog, обработчик нажатия инструментальной кнопки Сохранить может вызвать такой же метод у компонента TSaveDialog и т. д. Только после обращения к Execute на экране появляется соответствующее диалоговое окно. Окно диалога является модальным окном, поэтому сразу после обращения к Execute дальнейшее выполнение программы приостанавлиаается до тех пор, пока пользователь не закроет окно. Поскольку Execute - логическая функция, она возвращает в программу True, если результат диалога с пользователем был успешным.
Проанализировав результат Execute, программа может выполнить третий этап - использование введенных с помощью диалогового окна данных - имени файла, настроек принтера, выбранного шрифта и т. д.