Шаг 32.
Класс TWinControl. Фокус ввода

    На этом шаге мы продолжим изучение некоторых событий и методов класса TWinControl. Полный перечень свойств, методов и событий приведен на шаге 17.

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

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

   property OnEnter: TNotifyEvent; 
   property OnExit: TNotifyEvent;     .

    Свойство:

   property TabStop: Boolean; 

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

   property TabOrder: TTabOrder;
   TTabOrder = -l..32767;     .

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

    При невозможности перейти на элемент по клавише Tab его свойство TabOrder равно -1.

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

   procedure GetTabOrderList(List: TList);   .

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

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

   procedure BringToFront;
   procedure SendToBack;     .

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

    На следующем шаге мы продолжим изучение состава класса TWinControl, в частности, разберем наследование родительских свойств.




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