ЭЛЕМЕНТЫ УПРАВЛЕНИЯ

Потомком TComponent является класс TControl — элемент управления Win­dows. Все то, что видит (или может увидеть) пользователь в клиентской области вашей формы во время выполнения, порождено от класса 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;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.