Шаг 25.
Свойства и методы класса TControl

    На этом шаге мы более подробно рассмотрим некоторые события и методы класса 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);     .

    Их описание приведено в следующей таблице:
Таблица 1. Описание флагов TControlStyle
Флаг Описание
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);    . 

    Они означают следующее:
Таблица 2. Описание флагов TControlState
Флаг Описание
csLButtonDown Над элементом в данный момент нажата левая кнопка мыши.
csClicked Если элемент может воспринимать щелчки мышью, этот флаг устанавливается, пока кнопка мыши находится в нажатом состоянии.
csPalette Элемент поддерживает собственную палитру и должен получать извещения о перерисовке в необходимых случаях.
csReadingState Элемент в данный момент читается из потока.
csAlignmentNeeded Элемент требует выравнивания относительно родительского компонента.
csFocusing В данный момент происходит получение элементом фокуса ввода.
csCreating Элемент создается (этот флаг в настоящий момент не задействован).

    Свойства ControlStyle и ControlState можно читать для получения информации об элементе управления, но изменять их стоит только тогда, когда вы четко представляете, к чему это приведет.

    Подавляющее большинство элементов управления имеет собственное всплывающее меню, появление которого связано с нажатием правой кнопки мыши. Доступ к нему возможен через свойство:

   property PopupMenu: TPopupMenu;     .

    На следующем шаге мы продолжим знакомиться со свойствами и методами класса TControl.




Предыдущий шаг Содержание Следующий шаг