Delphi ordem de tabulação
-
29-10-2019 - |
Pergunta
A ordem de tabulação no meu formulário em Delphi (Embarcadero® Delphi® 2010 Versão 14.0) está incorreta, o que significa que a tecla tab avança para aparentemente aleatório de itens na forma.
No entanto, quando eu for, e alterá-lo no Delphi, ele reorganiza-los para mim, na mesma ordem incorreta!
Então, eu decidi programaticamente atribuir:
procedure FixDelphiTabOrder;
begin
Form2.ButtonClear.TabOrder := 2000;
Form2.ButtonExport.TabOrder := 1900;
Form2.ButtonNew.TabOrder := 1800;
Form2.MaxFreq.TabOrder := 1700;
Form2.MinFreq.TabOrder := 1600;
Form2.Summary.TabOrder := 1500;
Form2.Plot6dB.TabOrder := 1400;
Form2.Plot3dB.TabOrder := 1300;
Form2.Use_dBs.TabOrder := 1200;
Form2.PlotPoints.TabOrder := 1100;
Form2.PlotPhase.TabOrder := 1000;
Form2.Prop8Value.TabOrder := 900;
Form2.Prop7Value.TabOrder := 800;
Form2.Prop6Value.TabOrder := 700;
Form2.Prop5Value.TabOrder := 600;
Form2.Prop4Value.TabOrder := 500;
Form2.Prop3Value.TabOrder := 400;
Form2.Prop2Value.TabOrder := 300;
Form2.Prop1Value.TabOrder := 200;
Form2.FilterType.TabOrder := 100;
ShowMessage(IntToStr(Form2.Prop1Value.TabOrder));
end;
(Eu tentei atribuir tanto para frente e para trás;ele faz a mesma coisa.)
Mas isso ainda não funciona.A caixa de mensagem aparece com 7 em vez de 100, o tempo todo.Algo está constantemente a alterar a ordem, mas não é o meu código.
Por isso, e é possível para corrigi-lo?
Esta é para a minha A2 Projeto de Computação
Solução
TabOrder
é contíguo.O primeiro controle tem TabOrder
de 0
.O próximo tem TabOrder
de 1
e assim por diante.Você não pode deixar lacunas.
Enquanto você pode atribuir TabOrder
programaticamente, eu pessoalmente acho mais fácil de usar a interface de usuário para fazer.Clique direito sobre o formulário, ou, de fato, em um recipiente de controle, e selecione o Ordem De Tabulação item de menu.Em seguida, você verá uma caixa de diálogo como este:
Você pode usar os botões de seta para re-fim, ou você pode simplesmente arrastar os itens para voltar a encomendar.Ele funciona razoavelmente bem no meu ponto de vista, mas você deve lembrar-se de que os controles que contêm outros controles (por exemplo,painéis, tabsheets etc.) têm a sua própria ordem de tabulação.Para tal controle que você precisa para selecionar o controle, clique com o botão direito do mouse e, em seguida, modificar a ordem de tabulação para os filhos de que o recipiente.
Outras dicas
Se eu entendi bem, CnPack pode ajudar no tempo de design.
Abaixo você pode ver um recurso.O CnPack pode mostrar as ordens de tabulação conforme você coloca os componentes no formulário.Isso pode ajudar quando você tem muitas edições, botões ou painéis.
Outra funcionalidade é o botão "Auto Set Tab Order in the Form", que configura a Tab Order usando a posição de cada controle para definir sua Tab Order.Veja abaixo o mesmo formulário após pressionado o botão.
Acho que eles ajudam muito no design de grandes formulários.
Outra opção seria a tela GExperts Tab Order que tem o mesmo recurso "ordenar por posição":
A maneira como defino a ordem das guias é selecionando cada componente na ordem em que você deseja que a ordem das guias e, a seguir, recorte os controles para a área de transferência ( CTRL-X ) e cole ( CTRL-V ) de volta.