Question

J'utilise Lazarus 0.9.30.2.

J'ai un TForm sur lequel se trouve un TPageControl.Dans TPageControl, il existe une série de TTabSheets.Au moment de l'exécution, l'ordre des TTabSheets diffère de celui au moment de la conception (voir image).

enter image description here

L'ordre au moment de la conception est ce que je veux voir au moment de l'exécution, au moins pour la toute première fois que le formulaire est affiché.Pourquoi l’ordre change-t-il au moment de l’exécution et existe-t-il un moyen de contrôler cela ?

Était-ce utile?

La solution

@TLama a raison de dire que cela est lié au comportement du contrôle d'onglet Windows en mode multiligne.Le comportement que vous observez est lié à la façon dont la sélection est gérée pour les onglets multilignes.Lorsque vous sélectionnez un onglet, il est toujours affiché dans la rangée du bas, car le repère visuel indiquant quel onglet est sélectionné ne peut réellement fonctionner que pour les onglets de la rangée du bas.

Compte tenu de cette contrainte, le contrôle doit simplement réorganiser les rangées d'onglets lorsque vous modifiez l'onglet sélectionné.C'est incroyablement déroutant pour l'utilisateur.Une bonne conception d'interface utilisateur ne voit jamais les éléments d'interface utilisateur changer de position comme celui-ci.

Clairement, ce qui se passe ici, c'est que le réarrangement se produit au moment de l'exécution, lorsque le formulaire est affiché pour la première fois et, pour une raison quelconque, cela entraîne un arrangement différent de celui au moment de la conception.Étant donné que l'utilisateur peut organiser les lignes dans n'importe quel ordre simplement en les sélectionnant, je ne suis pas sûr que vous devriez vous soucier de l'ordre dans lequel les lignes apparaissent.

Si vous êtes déterminé à forcer un arrangement particulier lorsque le formulaire s'affiche pour la première fois, vous pouvez ajouter un code comme celui-ci à un OnCreate gestionnaire du formulaire :

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

La meilleure pratique pour la conception de l'interface utilisateur consiste à éviter les contrôles à onglets multilignes et je vous invite à tenter de repenser votre interface utilisateur de cette façon.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top