ЭЛЕМЕНТЫ УПРАВЛЕНИЯ
Потомком TComponent является класс TControl — элемент управления Windows. Все то, что видит (или может увидеть) пользователь в клиентской области вашей формы во время выполнения, порождено от класса TControl (клиентская область — вся рабочая поверхность окна Windows, исключая заголовок, полосу меню и обрамление). Таким образом, потомки TControl являются визуалъньши компонентами. Далее будем называть их, как принято в Windows,элементами управления, или, где это уместно, просто элементами.
Отметим также подвох, связанный с названием "Библиотека визуальных компонентов" (Visual Components Library, VCL). Называя так свою библиотеку, разработчики из фирмы Borland были абсолютно правы, так как речь идет в первую очередь о новой — визуальной — технологии программирования. Но нужно помнить, что в VCL входит множество полноправных невизуальных компонентов. Например, меню — оно, конечно, видимо на экране, но не в клиентской области; поэтому формально меню не является визуальным компонентом.
Большинство из свойств, которые вы будете видеть и изменять в визуальных компонентах, помещенных в Инспектор объектов, впервые описаны в классе TControl. Этот класс уже обладает "поведением" — в нем предусматривается реакция на основные события.
Объект класса TControl не является окном Windows и в силу этого не может получить фокус ввода. Однако у него обязательно имеется родительский элемент, обладающий этим свойством и отвечающий за показ дочернего элемента и обработку некоторых поступающих ему сообщений. (Раз TControl не является окном, то он не имеет контекста устройства для рисования. Этот контекст обеспечивает ему родитель. Тип родительского элемента — TWinControl — будет рассмотрен ниже).
Обратите внимание на терминологию: Owner — это владелец компонента, а Parent — его родитель, определяемый свойством
property Parent: TWinControl;
Элемент управления может обрабатывать сообщения Windows. Чтобы послать собственной функции обработки элемента сообщение Windows вида Msg с параметрами WParam и LParam, можно воспользоваться методом:
function Perform(Msg, WParam: Word; LParam: Longint): Longint;
С каждым элементом управления связан некий текст, который может играть роль заголовка или редактироваться. В зависимости от роли текст может содержаться в свойствах Caption:
(РЬ) property Caption: TCaption;
TCaption= string[255];
либо Text:
property Text: TCaption;
Не задумываясь о том, в каком именно свойстве содержится текст, получить доступ к нему можно посредством методов:
function GetTextBuf(Buffer: PChar; BufSize: Integer): Integer;
procedure SetTextBuftBuffer: PChar);
function GetTextLen: Integer;
Все три метода работают, посылая в собственную функцию-обработчик сообщений объекта (через вызов метода Perform) сообщения Windows вида WM_GETTEXT, WM_SETTEXT и WM_GETTEXTLENGTH.
Курсор, который будет устанавливаться на компоненте, определен свойством:
property Cursor: TCursor;
TCursor = -32768..32767;
В Delphi предопределены стандартные типы курсоров. Их имена:
crDefault, crNone, crArrow, crCross, crIBeam, crSize, crSizeNESW, crSizeNS, crSizeNWSE, crSizeWE, crUpArrow, crHourGlass, crDrag, crNoDrop, crHSplit, crVSplit, crMultiDrag, crSQLWait.
Этим именам соответствуют константы со значениями от 0 до -17; под этими идентификаторами все курсоры доступны в свойстве Cursors глобального объекта Screen. Можно добавить к ним собственные курсоры, загрузив их из ресурсов и присвоив положительные идентификаторы:
{$R cursors.RES} const
Curl = 1;
Cur2 = 2;
procedure TFormI. For-mCreate (Sender: TObject);
begin
Screen.Cursors[Curl] := LoadCursor(hinstance, 'CUR_1');
Screen.Cursors[Cur2] := LoadCursor(hinstance, 'CUR_2<);
end;
Познакомиться с имеющимися видами курсоров можно, скомпилировав прилагаемый на дискете пример CURSORS.
У каждого элемента есть два свойства, отражающие его стиль и состояние. Они могут сослужить программисту хорошую службу.
Первый из них — набор флагов, управляющих поведением компонента:
property ControlStyle: TControlStyle;
TControlStyle = set of (csAcceptsControls, csCaptureMouse, csDesignInteractive, csClickEvents, csFramed, csSetCaption, csOpaque, csDoubleClicks, csFixedWidth, csFixedHeight);
Эти флаги означают, что данный компонент имеет следующие особенности:
с sAccept sControls | Может содержать другие (дочерние) элементы управления. Таким свойством обладают не все элементы: обладающие им называются группирующими и рассмотрены в отдельном разделе. |
csCaptureMouse | Может получать сообщения от мыши. |
csDesignInteractive | Транслирует нажатия правой кнопки мыши в нажатия левой во время разработки. |
csFramed | Имеет обрамление (черным прямоугольником единичной толщины). |
csSetCaption | Позволяет при изменении имени менять синхронно и свойство Text (если Text не был явно переустановлен). |
csOpaque | Фон элемента непрозрачен. Это означает, что при пересечении нескольких компонентов на экране располо„.:мный под ним виден не будет. |
csClickEvents | Воспринимает щелчки мышью. |
с sDoubleC1i cks | Воспринимает двойные щелчки мышью. Если этот флаг отсутствует, двойные щелчки воспринимаются как простые. |
csFixedWidth, csFixedHeight | Имеет фиксированную ширину или высоту соответственно. Она не изменяется при масштабировании компонента. |
Набор флагов, отражающих состояние элемента, описывается свойством:
property ControlState: TControlState;
TControlState = set of (csLButtonDown, csClicked, csPalette, csReadingState, csAlignmentNeeded, csFocusing, csCreating);
Они означают следующее:
csLButtonDown | Над элементом в данный момент нажата левая кнопка мыши. |
csClicked | Если элемент может воспринимать щелчки мышью, этот флаг устанавливается, пока кнопка мыши находится в нажатом состоянии. |
csPalette | Элемент поддерживает собственную палитру и должен получать извещения о перерисовке в необх. случаях. |
csReadingState | Элемент в данный момент читается из потока. |
сsAlignmentNeeded | Элемент требует выравнивания относительно родительского (см. раздел "Положение, размеры и выравнивание элементов управления"). |
csFocusing | В данный момент происходит получение элементом фокуса ввода. |
csCreating | Элемент создается (этот флаг в настоящий момент не задействован). |
Свойства ControlStyle и ControlState описаны не в пользовательской документации, а в документации разработчика новых компонентов. Вы можете читать их значения для получения информации об элементе управления, но изменять их стоит только тогда, когда вы полностью отдаете себе отчет в том, к чему это приведет.
Подавляющее большинство элементов управления имеет собственное вспльша-ющее меню, появление которого связано с нажатием правой кнопки мыши. Доступ к нему возможен через свойство:
property PopupMenu: TPopupMenu;
Контрольні питання
1. Надати поняття та характеристику елементів керування з багатьма станами Delphi
2. Навести характеристику елементів керування
АУДИТОРНЕ ЗАНЯТТЯ
ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ. ВІЗУАЛЬНІ КОМПОНЕНТИ. БАЗИ ДАНИХ
ТЕМА 6.2: ВІЗУАЛЬНІ КОМПОНЕНТИ
Дата добавления: 2014-12-01; просмотров: 1199;