Auto TabOrder
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
Комментарии