StatusBar et largeur Panel

cs_apz Messages postés 281 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 11 avril 2013 - 15 avril 2002 à 18:42
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 - 15 avril 2002 à 22:35
Salut,
Comment, dans un StatusBar, definir la largeur des Panels selon leurs continue ?
par exemple pour affichier le jour de la date, lundi n'a pas la meme largeur que vendredi !
moi j'ai essayé ce code qui n'a pas marché :
StatusBar1.Panels[1].Width:=Length(FormatDateTime('dddd', Now));
StatusBar1.Panels[1].Text :=FormatDateTime('dddd', Now);
en execution j'aurais un statusbar1.panels[1].Width:=1; et le jour de la date n'apparaitra pas totalement !
comment expliquer tout cela ?
Merci de votre aide.

1 réponse

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
15 avril 2002 à 22:35
C'est normal car Length() renvoi le nombre de caractètes de la chaine et non la longueur en pixels de la chaine. Or pour définir la largeur du panneau correctement il faut la longueur en pixel :
StatusBar1.Panels[1].Width:=StatusBar1.Canvas.TextWidth(FormatDateTime('dddd', Now))+8;
StatusBar1.Panels[1].Text :=FormatDateTime('dddd', Now);

Tous les controles possède une propiété Canvas ( canevas en Français ) qui permet d'accéder aux fonctions de dessin du GDI de windows. L'une de ces fonctions est TextWidth() que renvoi la taille en pixels d'une chaine suivant la fonte en cours. Le +8 est ajouté car StatusBar ajoute une petite marge à gauche et à droite tu texte.

J'espère que ceci résoud ton problème.

--- Nono du Moulin ---
0
Rejoignez-nous