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 :

Listbox et index


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �m�rite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par d�faut Listbox et index
    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
     
    //---------------------------------------------------------------------------
     
      #include <windows.h>
    #include <vcl.h>
    #pragma hdrstop
     
    #define __WIN__
    #include "include/mysql.h"
     
    #include <registry.hpp>
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::test_serveurClick(TObject *Sender)
    {
     
     
    ListBox->Clear();
    ListBox1->Clear();
    ListBox2->Clear();
    ListBox3->Clear();
     
     
     
    MYSQL *mySQL;
    mySQL = mysql_init(NULL);
     
    if (!mysql_real_connect(mySQL, "127.0.0.1", "cedced", "12345678" ,"articles", 3306, NULL, 0))
    {
      Panel1->Color=clRed;
      Panel1->Caption="Echec";
         // la connection a échoué
     
    }
     else
     {
     
      Panel1->Caption="Ok";
          // la connection a réussi
     
     
     
     
     
     
     
       // liste données d une table
     
    MYSQL_RES *myRES2;
    MYSQL_ROW myROW2;
    AnsiString aStr2;
     
    TListItem *ListItem;
    TListColumn *pColumn;
     
    if (!mysql_query(mySQL, "select * from articles order by ref"))
     
      { myRES2 = mysql_store_result(mySQL);
            if (myRES2)
            {
                for(unsigned int i = 0; i < 10; i++)
                {
                    myROW2 = mysql_fetch_row(myRES2);
     
     
     
                    for(unsigned int j = 0; j < mysql_num_fields(myRES2); j++)
                    {
    ///////////////////  debut boucle ajout dans listbox souhaitée
    if ( j==0 ) { aStr.sprintf("%s", myROW2[j]);  ListBox1->Items->Add(aStr);  }
    if ( j==1 ) { aStr.sprintf("%s", myROW2[j]);  ListBox2->Items->Add(aStr);  }
    if ( j==2 ) { aStr.sprintf("%s", myROW2[j]);  ListBox3->Items->Add(aStr);  }
    ///////////////////  fin boucle ajout dans listbox souhaitée
                     }
                }
     
           }
         mysql_free_result(myRES2);
      }
     
     
     
     
     
    //////////////////
     
     
              mysql_close(mySQL);
    }
    }
     
    /////////////////////////////////////////////
    ///////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////
     
    void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index,
          TRect &Rect, TOwnerDrawState State)
    {
       // on récupère le TListBox qui a lancé l'évènement, et son TCanvas
    TListBox * pListBox = ((TListBox *)Control);
    TCanvas * pCanvas = pListBox->Canvas;
     
    // on met les lignes paires en fond jaune
    if ((Index % 2)==0)
    {
       pCanvas->Brush->Color = clYellow;
    }
     
    // on met les lignes sélectionnées en jaune sur fond rouge
    if(State.Contains(odSelected))
    {
         ListBox1->Canvas->Brush->Color = clRed;
       ListBox1->Canvas->Font->Color = clYellow;
    } 
     
     
    // on dessine le fond de la cellule
    pCanvas->FillRect(Rect);
     
    // on dessine le texte de la cellule
    AnsiString Data = pListBox->Items->Strings[Index];
    Rect.left += 2;
    pCanvas->TextOut(Rect.Left,Rect.Top,Data);
     
     
     
    }
    //---------------------------------------------------------------------------


    Salut

    J ai un petit souci , comme vous pouvez le voir lorsque je clique sur un item , celui s affiche autrement alors voil� ma question en fait je voudrais recuperer l index de l item selectionn� dans la listbox1 et ainsi pouvoir colorier les items correspondants sur les listbox 2 et 3

    Comment faire ?
    Je pense d abord ne plus appliquer la fonction listbox1drawitem sur les listbox 2 et 3 , �� c est facile mais apres ?

    En fait pour resumer je voudrais ( sachant que les listbox sont align�es horizontalement ) marquer une "ligne" , si qq1 a le temps , je le remercie .

    Bone journ�e

  2. #2
    say
    say est d�connect�
    Membre Expert
    Avatar de say
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    1 176
    D�tails du profil
    Informations personnelles :
    �ge : 47
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 1 176
    Par d�faut
    quelques pistes :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    lb->Items->Strings[Index]
    g�rer toi-m�me le onDrawItem ne mettant le style de ta listBox en lbOwnerDrawFixed

    un exemple de code pour coloration :
    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
     TListBox * lb = dynamic_cast<TListBox *>(Control);
        if ( lb != NULL )
        {
            TFont * LBFont = new TFont;
            LBFont->Name  = lb->Font->Name;
            LBFont->Size  = lb->Font->Size;
     
            AnsiString specific = lb->Items->Strings[Index].SubString( lb->Items->Strings[Index].Length() - 1, 2);
            if ( specific == "DD" )
                LBFont->Color = clFuchsia;
            else if ( specific == "TV" )
                LBFont->Color = clBlue;
            else if ( specific == "OT" )
                LBFont->Color = clRed;
            else
            {
                if ( State.Contains(odSelected) )
                    LBFont->Color = clWhite;
                else
                    LBFont->Color = clBlack;
            }
     
            lb->Canvas->FillRect(Rect);
            lb->Canvas->Font->Assign(LBFont);
            lb->Canvas->TextOut(Rect.Left+2,Rect.Top,lb->Items->Strings[Index]);
     
            delete LBFont;

  3. #3
    Membre �m�rite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par d�faut
    J ai opt� pour la solution de facilit� moins joli certes mais efficace

    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
     
     
    void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index,
          TRect &Rect, TOwnerDrawState State)
    {
     
    TListBox * pListBox = ((TListBox *)Control);
    TCanvas * pCanvas = pListBox->Canvas;
     
    if(State.Contains(odSelected))
    {
    int lb1select ;
    lb1select = ListBox1-> ItemIndex    ;
    ListBox2->ItemIndex=lb1select;
    ListBox3->ItemIndex=lb1select;
    }
    /////////////////////////////////////////////////////
    // on dessine le fond de la cellule
    pCanvas->FillRect(Rect);
    /////////////////////////////////////////////////////
    // on dessine le texte de la cellule
    AnsiString Data = pListBox->Items->Strings[Index];
    Rect.left += 2;
    pCanvas->TextOut(Rect.Left,Rect.Top,Data);
     }

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

Discussions similaires

  1. [XL-2007] listbox et index
    Par grisan29 dans le forum Macros et VBA Excel
    R�ponses: 7
    Dernier message: 15/11/2011, 19h34
  2. R�ponses: 3
    Dernier message: 17/05/2006, 16h50
  3. Probl�me avec les Z-index et les listbox
    Par volivi dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 03/05/2006, 12h30
  4. listbox et index
    Par gIch dans le forum Access
    R�ponses: 5
    Dernier message: 27/02/2006, 11h23
  5. R�ponses: 5
    Dernier message: 18/01/2004, 16h25

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