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

Composants VCL Delphi Discussion :

3 couleurs dans dblookupcombobox


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 183
    Points : 62
    Points
    62
    Par défaut 3 couleurs dans dblookupcombobox
    Bonjour à tous,

    Dans mon appli. Delphi Seattle, j'utilise dblookupcombobox !!!

    Est-il possible de changer la couleur des lignes de la liste dblookupcombobox en fonction du produit (interdit, avec risque ...) ?

    Ou éventuellement m'indiquer un composant équivalent ?

    Merci à tous.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    avec DBLookupCombobox pas de OnDrawItem du moins de base (il est peut-être possible de surclasser le truc, ce sera une de mes options)

    donc, première possibilité en utilisant un Combobox, il y a l'évènement onDrawItem
    ne pas oublier de mettre le style à csOwnerDrawFixed (je n'ai pas testé csOwnerdrawVariable)
    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
     
    // Test alternance noir/rouge
    procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    begin
      inherited;
      with combobox1 do
       begin
        if Odd(Index) then Canvas.Font.Color:=clRed   
                      else Canvas.Font.Color:=clBlack;
        Canvas.Brush.Color := clWhite ;
        Canvas.FillRect(Rect);
        Canvas.TextOut(Rect.Left, Rect.Top,Items[Index]);
       end;
    end;
    Reste à le remplir, ce combobox, cela peut se faire "à la main" dans une boucle ou avec un peu de Livebindings
    Nom : Capture.PNG
Affichages : 268
Taille : 4,9 Ko
    J'avoue ne pas savoir utiliser l'évènement onfilledlistItem (dans le cas de la VCL, mais aussi FMX pour un combobox )

    Reste la dernière option, le surclassement c'est plus que ce je peux sortir pour l'instant mais demain matin, les idées claires qui sait
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    des premiers résultats en utilisant quelques astuces
    Nom : Capture.PNG
Affichages : 271
Taille : 6,3 Ko
    si pour l'instant je galère avec le ProtypeBindSource qui me fourni pourtant un super jeu d'essai (combobox du haut)
    la méthode "manuelle" de remplissage à partir d'un FDMemTable
    porte ses fruits au prix d'une petite astuce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     // remplissage
     ComboBox2.Items.Clear;
      Index:=0;
      while not FDMemTable1.Eof do
        begin
          ComboBox2.Items.AddPair(FDMemTable1.FieldByName('NomCouleur').asString,
                                   FDMemTable1.FieldByName('Color').asString);
         FDMemTable1.Next;
        end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm109.ComboBox2DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    begin
     inherited;
       with TComboBox(Control) do
       begin
        Canvas.Font.Color:=StrToInt(Items.ValueFromIndex[Index]);
        Canvas.Brush.Color := clWhite;
        Canvas.FillRect(Rect);
        Canvas.TextOut(Rect.Left, Rect.Top,Items.Names[Index]);
       end;
    end;
    Nom : Video_2020-04-15_082213_Moment.png
Affichages : 312
Taille : 16,8 Ko

    ma "galère" avec le protypebindsource étant dans le moyen d'accéder au second champ (la couleur sensu stricto)

    Maintenant que la piste utilisation de ondrawitem et d'une paire pour accéder facilement à la couleur est posée, je vais pouvoir voir ce qu'il en est d'un DBLookupCombobox
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Avant d'aller plus avant, voir aussi le composant de TMS ADVDBLookupCombobox
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 183
    Points : 62
    Points
    62
    Par défaut
    Bonjour Sergio,

    Merci pour vos réponses bien détaillées, je pense plutôt m'orienter vers la solution TMS ADVDBLookupCombobox !!!

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    J'avoue l'avoir essayé mais j'ai eu beaucoup de mal à obtenir quelque chose !
    Après beaucoup d'essais (je n'avais pas défini de colonnes) j'ai enfin eu un truc mais, s'il y a un évènement pour changer l'affichage (onDrawDrop) et, entre autre la couleur, je n'ai pas trouvé comment procéder pour obtenir le même résultat qu'avec ma "bidouille".
    J'ai eu beau cherché, je n'ai pas trouvé dans les manuels (mais il y en a beaucoup)

    [Edit]
    j'en suis à ceci qui fonctionne mais que je trouve un peu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure TForm109.AdvDBLookupComboBox2DrawProp(Sender: TObject; RowIndex,
      ColIndex: Integer; DBField: TField; Value: string; AFont: TFont;
      var AColor: TColor);
    begin
     FDMemTable1.Locate('nomcouleur',value);
     Afont.Color:=FDMemTable1.FieldByname('Color').AsInteger;
    end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. Sauvegarder une couleur dans un champ Alphanum
    Par Harry dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/07/2004, 11h21
  3. [C#] Comment mettre une ligne en couleur dans mon DataGrid ?
    Par vandeyy dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/07/2004, 10h03
  4. Modifier la taille, la couleur ... dans un label
    Par Guigui_ dans le forum GTK+ avec Python
    Réponses: 3
    Dernier message: 15/07/2004, 17h09
  5. Ecrire du texte en couleurs dans un composant
    Par wutang dans le forum Composants
    Réponses: 11
    Dernier message: 12/07/2004, 10h55

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