|
||||||||
|
Элементы управления
Потомком TComponent является класс TControl ? элемент управления Windows. Все то, что видит (или может увидеть) пользователь в клиентской области вашей формы во время выполнения, порождено от класса TControl (клиентская область ? вся рабочая поверхность окна Windows, исключая заголовок, полосу меню и обрамление). Таким образом, потомки TControl являются визуальными компонентами. Далее будем называть их, как принято в Windows, элементами управления, или, где это уместно, просто элементами. Отметим также подвох, связанный с названием "Библиотека визуальных компонентов" (Visual Component Library, VCL). Называя так свою библиотеку, разработчики из фирмы Borland были абсолютно правы, так как речь идет в первую очередь о новой ? визуальной ? технологии программирования. Но нужно помнить, что в VCL входит множество полноправных невизуальных компонентов. Например, меню ? оно, конечно, видимо на экране, но не в клиентской области; поэтому формально меню не является визуальным компонентом. Большинство из свойств, которые вы будете видеть и изменять в визуальных компонентах, помещенных в Инспектор объектов, впервые описаны в классе TControl. Этот класс уже обладает "поведением" ? в нем предусматривается реакция на основные события. Объект класса TControl не является окном Windows и в силу этого не может получить фокус ввода. Однако у него обязательно имеется родительский элемент , обладающий этим свойством и отвечающий за показ дочернего элемента и обработку некоторых поступающих ему сообщений. (Раз TControl не является окном, то он не имеет контекста устройства для рисования. Этот контекст обеспечивает ему родитель. Тип родительского элемента ? TWinControl ? будет рассмотрен ниже). Обратите внимание на терминологию: Owner ? это владелец компонента, а Parent ? его родитель, определяемый свойством
Элемент управления может обрабатывать сообщения Windows. Чтобы послать собственной функции обработки элемента сообщение Windows вида Msg с параметрами WParam и LParam, можно воспользоваться методом:
С каждым элементом управления связан некий текст, который может играть роль заголовка или редактироваться. В зависимости от роли текст может содержаться в свойствах Caption:
либо Text:
Не задумываясь о том, в каком именно свойстве содержится текст, получить доступ к нему можно посредством методов:
Все три метода работают, посылая в собственную функцию-обработчик сообщений объекта (через вызов метода Perform) сообщения Windows вида WM_GETTEXT, WM_SETTEXT и WM.GETTEXTLENGTH. Курсор, который будет устанавливаться на компоненте, определен свойством:
В Delphi предопределены стандартные типы курсоров. Их имена:
Этим именам соответствуют константы со значениями от 0 до -17; под этими идентификаторами все курсоры доступны в свойстве Cursors глобального объекта Screen. Можно добавить к ним собственные курсоры, загрузив их из ресурсов и присвоив положительные идентификаторы:
Познакомиться с имеющимися видами курсоров можно, скомпилировав прилагаемый на дискете пример CURSORS. У каждого элемента есть два свойства, отражающие его стиль и состояние. Они могут сослужить программисту хорошую службу. Первый из них ? набор флагов, управляющих поведением компонента:
Эти флаги означают, что данный компонент имеет следующие особенности:
Набор флагов, отражающих состояние элемента, описывается свойством:
Они означают следующее:
Свойства ControlStyle и ControlState описаны не в пользовательской документации, а в документации разработчика новых компонентов. Вы можете читать их значения для получения информации об элементе управления, но изменять их стоит только тогда, когда вы полностью отдаете себе отчет в том, к чему это приведет. Подавляющее большинство элементов управления имеет собственное всплывающее меню, появление которого связано с нажатием правой кнопки мыши. Доступ к нему возможен через свойство:
Подробно о его создании и использовании рассказано в разделе, посвященном меню.
Для комментария : kadan@grsu.grodno.by | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
За содержание страницы отвечает Гончарова М.Н. © Кафедра СПиКБ, 2002-2017 |