Pergunta

Estou executando o Lazarus 0.9.30.2.

Eu tenho um TForm no qual existe um TPageControl.Dentro do TPageControl existe uma série de TTabSheets.Em tempo de execução, a ordem dos TTabSheets difere do tempo de design (veja a imagem).

enter image description here

A ordem em tempo de design é o que desejo ver em tempo de execução, pelo menos na primeira vez que o formulário é exibido.Por que a ordem muda em tempo de execução e existe uma maneira de controlar isso?

Foi útil?

Solução

@TLama está correto ao afirmar que isso está relacionado à maneira como o controle de guias do Windows se comporta quando está na visualização multilinha.O comportamento que você está observando está relacionado à maneira como a seleção é tratada nas guias multilinhas.Quando você seleciona uma guia, ela sempre é mostrada na linha inferior porque a dica visual para indicar qual guia está selecionada só pode funcionar realmente para as guias na linha inferior.

Dada essa restrição, o controle simplesmente precisa reorganizar as linhas das guias à medida que você modifica a guia selecionada.É surpreendentemente confuso para o usuário.Um bom design de UI nunca faz com que os elementos da UI mudem de posição assim.

Claramente o que está acontecendo aqui é que o rearranjo está acontecendo em tempo de execução quando o formulário é mostrado pela primeira vez e por alguma razão isso resulta em um arranjo diferente do arranjo em tempo de design.Dado que o usuário pode organizar as linhas em qualquer ordem apenas selecionando-as, não tenho certeza se você deve se preocupar com a ordem em que as linhas aparecem.

Se você está decidido a forçar um arranjo específico quando o formulário é exibido pela primeira vez, você pode adicionar um código como este a um OnCreate manipulador para o formulário:

PageControl1.ActivePage := TabSheet9;
PageControl1.ActivePage := TabSheet5;
PageControl1.ActivePage := TabSheet1;

A prática recomendada para design de IU é evitar controles de guias com várias linhas e recomendo que você tente redesenhar sua IU dessa forma.

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