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

Foi útil?

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:

enter image description here

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.
CnPack Display TabOrders in Designing Mode

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. "Definição automática de pedidos de tabulação no formulário" button

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": insira a descrição da imagem aqui

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top