Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Справочник по компонентам Delphi.doc
Скачиваний:
104
Добавлен:
02.05.2014
Размер:
1 Mб
Скачать

Фокус ввода

Будучи окнами Windows, TWinControl и его потомки должны управлять фоку­сом ввода (состоянием, когда они получают и обрабатывают входные сооб­щения). Они имеют предназначенные для этого методы:

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

function Focused: Boolean-

Показывает, имеет ли элемент в данный момент фокус ввода.

function CanFocus: Boolean;

Возвращает True, если оконный элемент может по­лучить фокус ввода (для этого он и все его роди­тельские оконные элементы управления должны быть активными (Enabled) и видимыми).

procedure SetFocus;

Запрашивает у родительской формы получение фокуса ввода.

При получении и утере фокуса оконными компонентами происходят события:

(Pb) property OnEnter: TNotifyEvent;

(Р1э) property OnExit: TNotifyEvent;

TNotifyEvent — простейшее событие — извещение, не имеющее параметров. Свойство

(Pb) property TabStop: Boolean;

показывает, есть ли на данном элементе табулостоп. Между элементами формы, у которых TabStop установлено в Тше, можно передвигаться (перемещать фокус ввода) нажатиями клавиш <Tab>/<Shift>+<Tab>. Очередность перехода фокуса определяется специальным списком. Положение элемента управления в родительском списке табулостопов определяется при помощи свойства:

(Pb) property TabOrder: TTabOrder;

TTabOrder = -1..32767;

При разработке формы номера присваиваются последовательно в порядке добавления компонентов, начиная с 0. Нулевой компонент первым получит фокус при активизации. Программист может менять значение этого свойства, не заботясь об учете других элементов, т. к. перенумерация производится автоматически. При отсутствии табулостопа на элементе его свойство TabOrder равно -1.

Можно получить и весь список, содержащий иерархию дочерних элементов, имеющих табулостоп:

procedure GetTabOrderList(List: TList) ;

Этот метод добавляет в уже существующий список List все дочерние компо­ненты, имеющие табулостоп; каждый из них при добавлении делает то же самое. Таким образом, элементы списка имеют тип TWinControl.

Два метода предназначены для управления показом перекрывающихся до­черних элементов управления:

procedure BringToFront;

procedure SendToBack;

Метод BringToFront переносит элемент в конец родительского списка (визуа­лизация начинается с первого) и показывает его поверх остальных. SendToBack, наоборот, переносит элемент в начало и таким образом сверху окажутся все перекрывающиеся с ним. При этом элемент теряет фокус ввода (если имел).

Класс инкапсулирует шрифт Windows. В Delphi допускаются только горизон­тально расположенные шрифты. В конструкторе объекта по умолчанию принимается шрифт System цвета clWindowText размера 10 пунктов.

ЗЛ.П. Привязка к родительским свойствам

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

(pdi property ParentColor: boolean;

@ property ParentCtl3D: boolean;

(Pb) property ParentFont: boolean;

(pS) property ParentShowHint: boolean;

Все четыре свойства отвечают за наличие связи между соответствующими свойствами в родительских и дочерних элементах. Если какое-то из них у элемента установлено в True, это означает, что он наследует свойство от родителя и меняет цвет, трехмерность, шрифт или показ ярлычков вместе и вслед за ним. Но если само свойство дочернего элемента (например, Color или ParentColor) переустановить явно, то связь с родительским свойством разрьюается.

Соседние файлы в папке Delphi