Comment personnaliser chaque item de listbox [Résolu]

Messages postés
199
Date d'inscription
samedi 3 janvier 2004
Dernière intervention
17 décembre 2014
- - Dernière réponse : vieuxpere
Messages postés
199
Date d'inscription
samedi 3 janvier 2004
Dernière intervention
17 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.

Merci par avance.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Dernière intervention
15 décembre 2014
3
Merci
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

Bon après, il faut que tu étudies un peu ...

A+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de cs_MAURICIO
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Dernière intervention
15 décembre 2014
3
Merci
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é!

PS: n' oublie pas de valider les réponses ...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de cs_MAURICIO
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
3
Merci
tu peu regarde ma source Depoc, il y a un exemple complets sur la personalisation d'une listbox.

http://www.delphifr.com/codes/DELPHI-PROJECT-CLEANNER-DEPOC-OUTILS-NETTOYER-VOS-PROJETS_38066.aspx

en fait c'est une checklistbox, mais c'est pareil a ce niveaux.

<hr size="2" width="100%" />
http://deefaze.gnomz.com

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de f0xi
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
3
Merci
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;

<center>Highlighted with Pas2HTML </center>

 
@+
Cirec

<hr siz ="" />

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de Cirec
Messages postés
199
Date d'inscription
samedi 3 janvier 2004
Dernière intervention
17 décembre 2014
0
Merci
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.
Commenter la réponse de vieuxpere
Messages postés
199
Date d'inscription
samedi 3 janvier 2004
Dernière intervention
17 décembre 2014
0
Merci
Merci beaucoup à vous pour votre réponse.
Commenter la réponse de vieuxpere

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.