Aligner des éléments avec les Anchors [Résolu]

Messages postés
20
Date d'inscription
dimanche 22 juin 2003
Statut
Membre
Dernière intervention
31 octobre 2006
- - Dernière réponse : 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)
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
1801
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
15 mai 2019
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 144 internautes nous ont dit merci ce mois-ci

Commenter la réponse de japee
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
3 août 2018
32
3
Merci
une version composant de la solution de Japee se trouve ici :
http://www.delphifr.com/codes/PUCE-AJUSTANT-FONCTION-LARGEUR-LABEL-VERSION-COMPOSANT_40039.aspx

 
@+
Cirec

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 144 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Cirec
Messages postés
1801
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
15 mai 2019
0
Merci
Il peut être utile d'intercaler un Panel de faible épaisseur entre le label et l'image de la puce droite pour aérer un peu le caption.
La mise en oeuvre est délicate, mais le résultat est vraiment surprenant...
Commenter la réponse de japee
Messages postés
1801
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
15 mai 2019
0
Merci
Va donc jeter un oeil sur cette source, c'est tout chaud :
PUCE S'AJUSTANT EN FONCTION DE LA LARGEUR D'UN LABEL

Bonne prog'

japee
Commenter la réponse de japee
Messages postés
20
Date d'inscription
dimanche 22 juin 2003
Statut
Membre
Dernière intervention
31 octobre 2006
0
Merci
Salut Japee !! 

Au moment où tu postais la source, j'étais justement en train de regarder ton profil, et je l'ai vue directe. 

Merci beaucoup pour ta réponse. C'est une super astuce !  Et bravo pour avoir pris en plus la peine d'en faire une source, ça, c'est génial !

Ca marche nickel. Au détail près que j'utilise une police différente (plus grosse), ce qui fait que pour le coup, la puce de droite partait vers le haut avec son Align = left.
J'ai remédié au problème en créant un Panel3 dans le Panel2, avec une propriété Align left. Et la puce de droite, pour le coup, est dans le Panel3, avec un Align Custom, en la mettant où je le désire. 

Encore un grand merci !! 
Commenter la réponse de DragonicFlash
Messages postés
1801
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
15 mai 2019
0
Merci
Salut DragonicFlash,

Il m'a semblé que poster la source était le moyen le plus simple d'expliquer l'astuce.
Et ainsi ça pourra servir à quelqu'un rencontrant le même problème.
Moi, peut-être, alors je viendrai consulter ma source, lol...
Content que ça t'aie rendu service.

@ +,

japee
Commenter la réponse de japee
Messages postés
20
Date d'inscription
dimanche 22 juin 2003
Statut
Membre
Dernière intervention
31 octobre 2006
0
Merci
Bonjour à tous ! 

Excuses-moi de ne pas avoir répondu plus tôt Cirec, mais
j'étais sur d'autres projets ces derniers temps.

Je tenais à te féliciter pour ton composant, qui fait suite au
problème soulevé et à la solution proposée. Impeccable !

Je vais de ce pas noter ce développement ! 

@+ tard
Commenter la réponse de DragonicFlash