Карта сайтаСсылкиКонтакты

Auto TabOrder

PDF Печать
Статьи

Свойство TabOrder есть у всех потомков управления TWinControl, например, TButton, TEdit, TComboBox и т.д. и указывает на позицию элемента управления в последовательности перехода.

Это порядок перехода по элементам управления, когда пользователь нажимает клавишу Tab.

Изначально установлен порядок, в какой последовательности компоненты были добавлены на форму.

Auto TabOrder - программно

Сколько раз Вы вставляли визуальные компоненты управления между двумя управлениями и забывали исправить порядок перехода?

Функция SetChildTabOrders программно исправляет свойство TabOrder для всех дочерних компонентов указанного родителя.


procedure SetChildTaborders(const Parent: TWinControl) ;
 
  procedure FixTabOrder(const Parent: TWinControl) ;
  var
    ctl, L: Integer;
    List: TList;
  begin
    List := TList.Create;
    try
      for ctl := 0 to Parent.ControlCount - 1 do
      begin
        if Parent.Controls[ctl] is TWinControl then
        begin
          if List.Count = 0 then
            L := 0
           else
           begin
             with Parent.Controls[ctl] do
               for L := 0 to List.Count - 1 do
                 if (Top < TControl(List[L]).Top) or ((
                     Top = TControl(List[L]).Top) and (
                     Left < TControl(List[L]).Left)) then Break;
           end;
 
           List.Insert(L, Parent.Controls[ctl]) ;
           FixTabOrder(TWinControl(Parent.Controls[ctl])) ;
           end;
         end;
 
       for ctl := 0 to List.Count - 1 do
         TWinControl(List[ctl]).TabOrder := ctl;
     finally
       List.Free;
     end;
   end;
 begin
   FixTabOrder(Parent) ;
 end;

Автор: Jens Borrisholt


 

Добавить комментарий


Защитный код
Обновить