DragonicFlash
Messages postés20Date d'inscriptiondimanche 22 juin 2003StatutMembreDernière intervention31 octobre 2006
-
18 oct. 2006 à 12:51
DragonicFlash
Messages postés20Date d'inscriptiondimanche 22 juin 2003StatutMembreDernière intervention31 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 ?
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 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.
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 18 oct. 2006 à 17:35
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...
DragonicFlash
Messages postés20Date d'inscriptiondimanche 22 juin 2003StatutMembreDernière intervention31 octobre 2006 19 oct. 2006 à 10:39
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.
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 19 oct. 2006 à 10:56
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
Vous n’avez pas trouvé la réponse que vous recherchez ?