На этом шаге мы более подробно рассмотрим некоторые события и методы
класса TControl.
Полный перечень свойств, методов и событий приведен на шаге 16.
Потомком TComponent является класс TControl - элемент управления Windows. Все то, что видит (или может увидеть) пользователь в клиентской области формы во время выполнения, порождено от класса TControl. Заметим, что клиентская область - вся рабочая поверхность окна Windows, исключая заголовок, полосу меню и обрамление. Таким образом, потомки TControl являются визуальными компонентами. Далее будем называть их, как принято в Windows, элементами управления, или, где это уместно, просто элементами.
Напомним, что определить владельца компонента можно, воспользовавшись свойством Owner, а свойство Parent типа TWinControl позволяет узнать его родителя.
Элемент управления может обрабатывать сообщения Windows. Чтобы послать собственной функции обработки элемента сообщение Windows вида Msg с параметрами WParam и LParam, можно воспользоваться методом:
function Perform (Msg, WParam: Word; LParam: LongInt): LongInt; .
С каждым элементом управления связан некий текст, который может играть роль заголовка или редактироваться. В зависимости от роли текст может содержаться в свойствах:
property Caption: TCaption; TCaption = string[255]; либо property Text: TCaption; .
He задумываясь о том, в каком именно свойстве содержится текст, получить доступ к нему можно посредством методов:
function GetTextBuf (Buffer: PChar; BufSize: Integer): Integer; procedure SetTextBuf (Buffer: PChar); function GetTextLen: Integer;
Все три метода работают, посылая в собственную функцию-обработчик сообщений объекта (через вызов метода Perform) сообщения Windows вида: WM_GETTEXT, WM_SETTEXT и WM_GETTEXTLENGTH.
Курсор, который будет устанавливаться на компоненте, определен свойством:
property Cursor: TCursor; TCursor = -32768..32767; .
О курсорах мы говорили при изучении класса TScreen.
У каждого элемента есть два свойства, отражающие его стиль и состояние. Первый из них - набор флагов, управляющих поведением компонента:
property ControlStyle: TControlStyle; TControlStyle = Set of (csAcceptsControls, csCaptureMouse, csDesignInteractive, csClickEvents, csFramed, csSetCaption, csdpague, csDoubleClicks, csFixedWidth, csFixedHeight); .
Их описание приведено в следующей таблице:
Флаг | Описание |
---|---|
csAcceptsControls | Может содержать другие (дочерние) элементы управления. Таким свойством обладают не все элементы: обладающие им элементы называются группирующими. |
csCaptureMouse | Может получать сообщения от мыши. |
csDesignlnteractive | Транслирует нажатия правой кнопки мыши в нажатия левой во время разработки приложения. |
csFramed | Имеет обрамление (черным прямоугольником единичной толщины). |
csSetCaption | Позволяет при изменении имени менять синхронно и свойство Text (если Text не был явно переустановлен). |
csOpaque | Фон элемента непрозрачен. Это означает, что при пересечении нескольких компонентов на экране компонент, расположенный под ним, виден не будет. |
csClickEvents | Воспринимает щелчки мышью. |
csDoubleClicks | Воспринимает двойные щелчки мышью. Если этот флаг отсутствует, двойные щелчки воспринимаются как простые. |
csFixedWidth csFixedHeight |
Имеет фиксированную ширину или высоту соответственно. Она не изменяется при масштабировании компонента. |
Набор флагов, отражающих состояние элемента, описывается свойством:
property ControlState: TControlState; TControlState = Set of (csLButtonDown, csClicked, csPalette, csReadingState, csAlignmentNeeded, csFocusing, csCreating); .
Они означают следующее:
Флаг | Описание |
---|---|
csLButtonDown | Над элементом в данный момент нажата левая кнопка мыши. |
csClicked | Если элемент может воспринимать щелчки мышью, этот флаг устанавливается, пока кнопка мыши находится в нажатом состоянии. |
csPalette | Элемент поддерживает собственную палитру и должен получать извещения о перерисовке в необходимых случаях. |
csReadingState | Элемент в данный момент читается из потока. |
csAlignmentNeeded | Элемент требует выравнивания относительно родительского компонента. |
csFocusing | В данный момент происходит получение элементом фокуса ввода. |
csCreating | Элемент создается (этот флаг в настоящий момент не задействован). |
Свойства ControlStyle и ControlState можно читать для получения информации об элементе управления, но изменять их стоит только тогда, когда вы четко представляете, к чему это приведет.
Подавляющее большинство элементов управления имеет собственное всплывающее меню, появление которого связано с нажатием правой кнопки мыши. Доступ к нему возможен через свойство:
property PopupMenu: TPopupMenu; .
На следующем шаге мы продолжим знакомиться со свойствами и методами класса TControl.