Aligner des éléments avec les Anchors

Résolu
DragonicFlash Messages postés 20 Date d'inscription dimanche 22 juin 2003 Statut Membre Dernière intervention 31 octobre 2006 - 18 oct. 2006 à 12:51
DragonicFlash Messages postés 20 Date d'inscription dimanche 22 juin 2003 Statut Membre Dernière intervention 31 octobre 2006 - 31 oct. 2006 à 16:47
Bonjour à tous, 

J'utilise actuellement BDS 2006 pour faire une application .Net. L'application est terminée, et je suis en train de "l'habiller". 

Seulement, j'ai un petit soucis pour faire quelquechose qui ne paraît pourtant pas bien compliqué. 

J'ai un Label dont le string peut changer régulièrement (il est donc en autosize). Ce Label, je veux l'entourer par 2 puces (2 TImage). Une à gauche, et une à droite de ce Label.

Évidemment, vous aurez compris que le but est que la Puce de droite s'écarte en fonction du Label. Je suis plutôt développeur .Net, et cela ne fait pas longtemps que fais un projet Delphi. J'ai cru pouvoir mettre un Anchor de mon élément sur un autre élément (à la VB.Net), mais apparemment Delphi ne le permet pas. D'après ce que j'ai compris, Delphi permet un Anchor d'un élément seulement sur un conteneur parent (Form, Panel, etc...).

Je me suis donc lancé sur un Panel pour tester. Ce Panel, je le met également en autosize pour qu'il s'adapte en fonction du Label qu'il contient. Ma Puce de droite, je l'anchor vers la droite sur le Panel. Lorsque ce dernier n'est pas en autosize, en l'agrandissant ou en le rapetissant, super, la Puce suit. Malheureusement, je suis obligé de le mettre en autosize, par rapport au Label. Et dès lors qu'il est ainsi, et que je lance mon appli qui va remplir le Label, la Puce ne suit plus...  

Quelqu'un pourrait-il m'aider ou me donner une astuce ? 

Merci bien ! 

(Puce1 - TImage) (Label Dynamique - TLabel) (Puce2 - TImage)

5 réponses

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
18 oct. 2006 à 16:57
Que voilà un intéressant challenge, je dis...


J'y suis parvenu en faisant comme ça :




- placer l'image "puce gauche" dans un Panel1, position Left := 0,
- mettre le Label dans ce même Panel1, position 0 + largeur de la puce,  propriété de Panel1 AutoSize := True,
- placer ce Panel1 dans un Panel2 plus grand que lui, et mettre la propriété  de Panel1 à AutoSize := True, puis Align := alLeft,
- placer l'image "puce droite" à la droite Panel1 (position Left + largeur  Image gauche + largeur Label), propriété Align := Left,
- mettre la propriété de Panel2 AutoSize := True.
Bien sûr, il est nécessaire d'ajuster les dimensions et de modifier éventuellement la propriété BevelOuter := bvNone.



L'effet obtenu est tout à fait satisfaisant.

Bonne prog'

japee
3
Rejoignez-nous