Ordena o TabOrder automaticamente de acordo com a posição Top e Left do Componente
procedure TFTabOrder.SetChildTabOrders(const Parent: TWinControl);
procedure FixTabOrder(const Parent: TWinControl) ;
var
i, Cont: Integer;
List: TList;
begin
List := TList.Create;
try
for i := 0 to Parent.ControlCount - 1 do begin
if Parent.Controls[i] is TWinControl then begin
if List.Count = 0 then
Cont := 0
else begin
with Parent.Controls[i] do
for Cont := 0 to List.Count - 1 do
if (Top < TControl(List[Cont]).Top) or ((Top = TControl(List[Cont]).Top) and (Left < TControl(List[Cont]).Left)) then
Break;
end;
List.Insert(Cont, Parent.Controls[i]);
FixTabOrder(TWinControl(Parent.Controls[i]));
end;
end;
for i := 0 to List.Count - 1 do
TWinControl(List[i]).TabOrder := i;
finally
List.Free;
end;
end;
begin
FixTabOrder(Parent);
end;
Exemplo: Download do exemplo
0 comentários:
Postar um comentário