Utilisation du panneau relatif

De RAD Studio
Aller à : navigation, rechercher

Remonter à VCL


Le TRelativePanel est un contrôle de conteneur qui vous permet de positionner des contrôles enfant relatifs au panneau lui-même ou relatifs à d'autres contrôles enfant de ce panneau.

En raison de la nature non restrictive de ce contrôle, si vous ne respectez pas certaines directives, vous risquez de configurer des règles d'alignement conflictuelles.

Priorité des règles d'alignement

Vous devez absolument garder à l'esprit cette section lorsque vous utilisez le panneau relatif. Le processus de positionnement des enfants d'un panneau relatif s'exécute selon l'ordre suivant :

  1. AlignXxWithPanel : toute propriété "Align" ayant un rapport avec "Panel", par exemple AlignLeftWithPanel.
    • Le centrage de (AlignXxCenterWithPanel) est prioritaire par rapport aux alignements latéraux.
    • La gauche (left) est prioritaire sur la droite (right), le haut (top) sur le bas (bottom).
  2. AlignXxWith : le reste des propriétés "Align".
    • Le centrage de (AlignXxCenterWith) est prioritaire par rapport aux alignements latéraux.
    • La gauche (left) est prioritaire sur la droite (right), le haut (top) sur le bas (bottom).
  3. Alignements latéraux : LeftOf, RightOf, Above et Below.
    • La gauche (left) est prioritaire sur la droite (right), le dessus (above) sur le dessous (below).

L'ordre dans lequel les enfants sont positionnés lors des étapes 2 et 3 dépend de leur index dans le tableau des enfants. Si vous voulez qu'un contrôle "l'emporte" sur un autre dans un conflit d'alignement, définissez l'index du contrôle devant l'emporter sur une valeur supérieure.

Considérations spéciales

Alignement hors de vue (disparition des contrôles)

Il n'existe pas de moyen d'éviter de définir un alignement poussant un contrôle en dehors du panneau relatif. Dans ce cas, le contrôle disparaît du panneau. C'est intentionnel et cela peut s'avérer utile dans certains cas.

Dépendance circulaire

Il n'existe pas de moyen d'éviter de définir une dépendance circulaire entre les contrôles dans le panneau relatif. Au moment où vous définissez une dépendance circulaire, la position des contrôles devient inattendue et imprévisible.

Relations conflictuelles

Si vous définissez plusieurs alignements ciblant le même bord d'un contrôle, il se peut que vous rencontriez un conflit. Pour de plus amples informations sur les règles d'alignement prioritaires par rapport aux autres, reportez-vous à la section Priorité des règles d'alignement.

Alignements de bords opposés et auto-dimensionnement

Si vous définissez les alignements de bords opposés (gauche et droite ou haut et bas) d'un contrôle sur la même cible ("Panel" ou un autre contrôle frère), le contrôle affecté change automatiquement sa largeur ou sa hauteur pour qu'elle corresponde à une cible. Par exemple, si vous définissez à la fois AlignLeftWithPanel et AlignRightWithPanel pour un bouton, ce bouton change sa largeur pour qu'elle corresponde à la largeur du panneau relatif.

Ce comportement peut produire des situations inattendues. Par exemple, si vous définissez à la fois AlignLeftWithPanel| et AlignRightWithPanel pour un contrôle d'édition et que vous paramétrez ce contrôle pour qu'il se trouve à gauche (LeftOf) d'un contrôle de bouton, le contrôle d'édition suppose la largeur du panneau relatif, mais en raison de la règle de position "à gauche de", il "sort" du panneau relatif.

Voir aussi