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 :

S�lection dans une ListBox [FAQ]


Sujet :

C++Builder

  1. #1
    Membre confirm�
    Inscrit en
    Octobre 2004
    Messages
    115
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Par d�faut S�lection dans une ListBox
    Bonjour,

    Alors j'ai une ListBox � laquelle j'ai mis la propri�t� Style � lbOwnerDrawFixed pour pouvoir mettre une ligne sur 2 d'une autre couleur.

    Sauf que maintenant j'aimerais bien, si on s�lectionne un �l�ment de cette ListBox, le mettre en surbrillance bleu comme ceci est le cas si on laisse la propri�t� Style � lbOwnerDrawVariable

    Il faur g�rer ceci dans l'�v�nement : OnClick ou onDrawItem ?? ou autre


    MERCI DE VOTRE AIDE

  2. #2
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut
    Bonjour,
    Moi je dirais toujours dans le OnDrawItem...Je te livres ici un peu de code -ca vaut ce que ca vaut, vous avez le droit de me corriger d'ailleurs - ou seule une partie t'interessera vraimment par rapport a ta question; il s'agit de la partie test�e avec :
    if(State.Contains(odSelected))
    qui teste si l'item est selectionn�...
    Ci joint petit bout de code :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    void __fastcall TFVierge::NListBoxDrawItem(TWinControl *Control, int Index,
          const TRect &Rect, TOwnerDrawState State)
    {
          TCanvas *pCanvas = ((TListBox *)Control)->Canvas;
          if ((Index%2)==0) pCanvas->Brush->Color = clSilver;
                           TField *pField;
                           switch (FVierge->ModeFiche[0])
                           {
                           case 'R':
                           pField = FVierge->NTable->Fields->Fields[3];
                           break;
                           case 'C':
                           pField = FVierge->NTable->Fields->Fields[4];
                           break;
                           case 'L':
                                    switch (FVierge->ModeFiche[1])
                                    {
                                    case 'M':
                                    pField = FVierge->NTable->Fields->Fields[7];
                                    break;
                                    case 'S':
                                    pField = FVierge->NTable->Fields->Fields[8];
                                    break;
                                    }
                           break;
                           case 'T':
                                    switch (FVierge->ModeFiche[1])
                                    {
                                    case 'M':
                                    pField = FVierge->NTable->Fields->Fields[26];
                                    break;
                                    case 'S':
                                    pField = FVierge->NTable->Fields->Fields[27];
                                    break;
                                    }
                           break;
                           case 'A':
                           pField = FVierge->NTable->Fields->Fields[54];
                           break;
                           }
          if (pField->AsString.operator ==(((TListBox *)Control)->Items->Strings[Index]))
                           {
                            pCanvas->Brush->Color = clCream;
                            pCanvas->FrameRect(Rect);
                            pCanvas->Font->Color = clRed;
                           }
                           else
                           {
          if(State.Contains(odSelected))
                           {
                            pCanvas->Brush->Color = clCream;
                            pCanvas->FillRect(Rect);
                            pCanvas->Font->Color = clMaroon;
                           }
          else
                           {
                            pCanvas->FillRect(Rect);
                           }
                           }
          if (pField->AsString.operator ==(((TListBox *)Control)->Items->Strings[Index]))
                           {
                           int LTexte = pCanvas->TextWidth(((TListBox *)Control)->Items->Strings[Index]);
                           int DTexte = (Rect.Width() - LTexte)/2;
          pCanvas->TextOut(DTexte,Rect.Top+1, ((TListBox *)Control)->Items->Strings[Index]);
                           }
          else
                           {
          pCanvas->TextOut(Rect.Left+5,Rect.Top+1, ((TListBox *)Control)->Items->Strings[Index]);
                           }
    }
    Voila, a plus tard...
    Vinc.

  3. #3
    Membre confirm�
    Inscrit en
    Octobre 2004
    Messages
    115
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Par d�faut
    NIKEL CROME

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
      if(State.Contains(odSelected))
      {
        ListBoxToDraw->Canvas->Brush->Color = clBlue;
        ListBoxToDraw->Canvas->Font->Color = clWhite;
      }
    Cela fonctionne tres bien et exactement comme je veux.

    JE TE REMERCIE BCP, c'est tres sympa

    A UNE PROCHAINE

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [Toutes versions] Perte de s�lection dans une listbox
    Par alex311278 dans le forum Macros et VBA Excel
    R�ponses: 9
    Dernier message: 24/04/2015, 13h55
  2. S�lection dans une listbox
    Par philippef dans le forum VB 6 et ant�rieur
    R�ponses: 1
    Dernier message: 17/03/2010, 18h52
  3. S�lection dans une Listbox
    Par lesultan2007 dans le forum ASP.NET
    R�ponses: 4
    Dernier message: 09/07/2008, 12h43
  4. lister r�pertoire selon s�lection dans une listbox
    Par gorgoroth dans le forum Langage
    R�ponses: 12
    Dernier message: 03/06/2008, 17h06
  5. Probl�me de s�lection dans une listbox
    Par cacahu���te dans le forum Access
    R�ponses: 3
    Dernier message: 29/06/2006, 15h03

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