cs_apz
Messages postés281Date d'inscriptiondimanche 7 avril 2002StatutMembreDernière intervention11 avril 2013
-
15 avril 2002 à 18:42
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 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.
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 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.