IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

DrawItem d'un listbox... [FAQ]


Sujet :

C++Builder

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 80
    Points : 84
    Points
    84
    Par défaut DrawItem d'un listbox...
    vla j'aimerai mettre une couleur dans une ligne specifique de la list box

    j'ia pas tres bien compris l'evenement drawitem, il s'execute lorsque je fais un add??

    comment changer la couleur d'une ligne ?

    merci?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Avant de poster sur le forum, t'as été regardé dans l'aide (TCustomListBox::OnDrawItem) ? c'est super bien expliqué et y'a un exemple en +

  3. #3
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 042
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 042
    Points : 8 252
    Points
    8 252
    Par défaut
    exemple: sur ta fiche tu met un ListBox avec quelques Items.
    tu dessine tout dans l'evenement OnDrawItem:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index,
          TRect &Rect, TOwnerDrawState State)
    {
     
       if (Index == 2) //ligne dont tu veut changer la couleur
       {
        ((TListBox *)Control)->Canvas->Brush->Color = clRed;
        ((TListBox *)Control)->Canvas->FillRect(Rect);
       }
        // Il faut reécrire tout tes Items
        ((TListBox *)Control)->Canvas->
              TextOut(Rect.Left+2,Rect.Top+2,
                   ((TListBox *)Control)->Items->Strings[Index]);
     
    }
    Mettre la propriété Style de ta ListBox à : lbOwnerDrawFixed.

  4. #4
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 042
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 042
    Points : 8 252
    Points
    8 252
    Par défaut
    Autre exemple (affichage correct du rectangle de focalisation)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State)
    {
          TCanvas *pCanvas = ((TListBox *)Control)->Canvas;
     
          if ((Index%2)==0) pCanvas->Brush->Color = clYellow;
          // met 1 ligne sur 2 jaune
     
          if(State.Contains(odSelected))  //ligne selectionnée
                           {
                            pCanvas->Brush->Color = clRed;
                            pCanvas->FillRect(Rect);
                            pCanvas->Font->Color = clYellow;
                           }
          else pCanvas->FillRect(Rect);  //Les autres lignes
     
          //Il faut réécrire les Items.
          pCanvas->TextOut(Rect.Left+5,Rect.Top+2,
                    ((TListBox *)Control)->Items->Strings[Index]);
    }
    Ne pas oublier la propriété Style de ta ListBox à : lbOwnerDrawFixed.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 80
    Points : 84
    Points
    84
    Par défaut
    je te remercie grandement CGI, Merci

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 185
    Points : 192
    Points
    192
    Par défaut
    Merci CGI,

    Avec ton call j'ai pu supprimer des lignes qui apparaissaient quand je survolait mon combo.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] DrawItem ListBox
    Par diaboloche dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/04/2006, 16h19
  2. [Listbox] ScrollBar Horizontal
    Par haleem dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/04/2005, 07h53
  3. Recuper les items de ListBox d'une autre application [API?]
    Par Shamanisator dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 27/09/2002, 12h32
  4. [Canvas] Listbox, couleur et multiselect
    Par rbag dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/09/2002, 13h02
  5. Copier le texte d'un ListBox dans le clipboard.
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/08/2002, 08h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo