Comment personnaliser chaque item de listbox [Résolu]

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

cs_MAURICIO 2233 Messages postés mardi 10 décembre 2002Date d'inscription 15 décembre 2014 Dernière intervention - 4 mars 2008 à 17:22
+3
Utile
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+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MAURICIO
cs_MAURICIO 2233 Messages postés mardi 10 décembre 2002Date d'inscription 15 décembre 2014 Dernière intervention - 4 mars 2008 à 18:32
+3
Utile
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 ...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MAURICIO
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 4 mars 2008 à 19:10
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de f0xi
Cirec 4221 Messages postés vendredi 23 juillet 2004Date d'inscription 11 mai 2018 Dernière intervention - 5 mars 2008 à 12:06
+3
Utile
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 ="" />
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Cirec
vieuxpere 199 Messages postés samedi 3 janvier 2004Date d'inscription 17 décembre 2014 Dernière intervention - 4 mars 2008 à 18:19
0
Utile
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
vieuxpere 199 Messages postés samedi 3 janvier 2004Date d'inscription 17 décembre 2014 Dernière intervention - 5 mars 2008 à 12:42
0
Utile
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.