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

DragonicFlash 20 Messages postés dimanche 22 juin 2003Date d'inscription 31 octobre 2006 Dernière intervention - 18 oct. 2006 à 12:51 - Dernière réponse : DragonicFlash 20 Messages postés dimanche 22 juin 2003Date d'inscription 31 octobre 2006 Dernière intervention
- 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
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 18 oct. 2006 à 16:57
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

Merci japee 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 70 internautes ce mois-ci

Commenter la réponse de japee
Meilleure réponse
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 23 oct. 2006 à 15:23
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

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 70 internautes ce mois-ci

Commenter la réponse de Cirec
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 18 oct. 2006 à 17:35
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
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 18 oct. 2006 à 23:46
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
DragonicFlash 20 Messages postés dimanche 22 juin 2003Date d'inscription 31 octobre 2006 Dernière intervention - 19 oct. 2006 à 10:39
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
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 19 oct. 2006 à 10:56
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
DragonicFlash 20 Messages postés dimanche 22 juin 2003Date d'inscription 31 octobre 2006 Dernière intervention - 31 oct. 2006 à 16:47
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.