vieuxpere
Messages postés195Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention17 décembre 2014
-
4 mars 2008 à 16:43
vieuxpere
Messages postés195Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention17 décembre 2014
-
5 mars 2008 à 12:42
Bonjour, je voudrais savoir comment je peux mettre en gras que certain item de listbox, il existe certes des exemples sur le forum (via les canvas) mais que je ne les comprend pas trés bien.
Si vous pouviez m'éclairer un peu sur la méthode canvas ou que vous avez une méthode plus simple ca serait volontiers.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 4 mars 2008 à 17:22
Salut,
bem malheureusement, tu dois passer par les canvas et les démos sur ce site sont ce qu' il y a de plus simple.
Pour t' aider, et parce que je sens que tu n' es pas à l' aise, vois le canvas comme la feuille de papier oú est dessiné ton compo.
exemple simplissime:
Canvas.moveto(0, 0);
Canvas.Lineto(10, 10);
Ça dessine une ligne diagonale.
Pour gérer les couleurs du trait, du fond de la police:
Canvas.font.color
Canvas.Brush.Color
Canvas.Pen.Color
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 4 mars 2008 à 18:32
Tu es donc dans le OnDrawItem avec la propriété Style à csOwnerDrawFixed:
il existe une variable State: TOwnerDrawState
Celle-ci te permet de savoir si l' item est seleccionné. Pourquoi?
Bem pour changer la couleur de fond et la couleur de la police!
If (State [odSelected]) Or (State [odSelected, odFocused])
Then // l' item est seleccionné
Else // l' item n' est pas seleccionné!
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 5 mars 2008 à 12:06
Salut,
voici un exemple des plus simple (sans superflu)
{Dans l'inspecteur d'objets :
Mettre la propriété
Style à lbOwnerDrawFixed
Et double cliquer à droite de l'évènement
OnDrawItem
et complèter comme suit:}
Procedure TForm1.ListBox1DrawItem(Control:
TWinControl; Index: Integer;
Rect:
TRect; State: TOwnerDrawState);
Begin
With
TListBox(Control) Do Begin
{On efface le fond} Canvas.FillRect(Rect);
{Un Item sur Deux
et mis en rouge + Gras + Italique}
If
Index Mod 2 = 0Then
With Canvas.Font Do Begin
Color := clRed;
Style := [fsBold, fsItalic];
End ;
{Et on dessine
le texte}
DrawText(Canvas.Handle, PChar(Items[Index]), -1 , Rect,
DT_VCENTER Or DT_SINGLELINE Or DT_LEFT);
End;
End;
vieuxpere
Messages postés195Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention17 décembre 2014 4 mars 2008 à 18:19
Merci pour ta reponse j'ai tésté et en effet ça marche.
Je rencontre par contre un autre probleme !
Le probleme c'est que certes j'ecris en canvas dans le listbox, avec des fonts personnalisés pour chaque item, mais ce que je j'écris n'est pas considéré comme un item car ce qui s'affiche n'est pas cliquable comme les items d'un listbox, je sais pas si je suis clair.
Vous n’avez pas trouvé la réponse que vous recherchez ?