Combobox avec couleur...

cs_orelien Messages postés 137 Date d'inscription dimanche 7 juillet 2002 Statut Membre Dernière intervention 11 janvier 2009 - 14 avril 2004 à 22:37
slachz Messages postés 109 Date d'inscription lundi 21 avril 2003 Statut Membre Dernière intervention 1 janvier 2006 - 16 avril 2004 à 14:00
Bonjour,

J'aimerais mettre de la couleur dans un combobox, et afficher un carré de couleur différent sur chaque ligne avec à côté le texte.

Merci
Orélien.

9 réponses

slachz Messages postés 109 Date d'inscription lundi 21 avril 2003 Statut Membre Dernière intervention 1 janvier 2006
14 avril 2004 à 23:37
comme la colorbox ?
sinon je vois juste comme possibilité la création d'un nouveau composant..
0
cs_orelien Messages postés 137 Date d'inscription dimanche 7 juillet 2002 Statut Membre Dernière intervention 11 janvier 2009
14 avril 2004 à 23:43
J'aimerais en fait garder le même aspect d'un combobox classque avec comme différence un carré de couleur en face de chaque ligne de texte.

Orélien.
0
slachz Messages postés 109 Date d'inscription lundi 21 avril 2003 Statut Membre Dernière intervention 1 janvier 2006
15 avril 2004 à 00:13
bon je dois ptetre pas te comprendre mais ça c'est un colorbox !
(meme aspect a la seule difference qu'il ne sert que pour la couleur)

sinon je crois bien que je suis déjà tomber sur un composant de ce genre mais alors je l'ai plus :sad)

t'as recherché dans les composants de delphifr ?
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
15 avril 2004 à 16:30
Salut,

Il faut utiliser l'évènement OnDrawItem du TCombobox :

Const
TabColor : array [0..17] of TColor = (clBlack, clMaroon, clGreen, clOlive,
clNavy, clPurple, clTeal, clGray,
clSilver, clRed, clLime, clYellow,
clBlue, clFuchsia, clAqua, clLtGray,
clDkGray, clWhite);

procedure TForm1.FormCreate(Sender: TObject);
begin
Combobox1.Style := csOwnerDrawFixed;
Combobox1.ItemIndex := 0;
Combobox1.ItemHeight := 16;
end;

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
With Combobox1.Canvas do
begin
// Couleur de fond
if (odSelected in State) then
Brush.Color := clHighlight
else
Brush.Color := Combobox1.Color;
Pen.Color := Brush.Color;
// Fond
Rectangle(Rect.Left,Rect.Top,Rect.Right,Rect.Bottom);
// Texte
TextOut(Rect.Left+18,Rect.top+2,Combobox1.Items[Index]);
// Choix du pavé de couleur en fonction de l'index
Brush.Color := TabColor[Index];
Pen.Color := Brush.Color;
// Dessin du pavé
Rectangle Rect.Left+2,Rect.Top+2,Rect.Left+14,Rect.Top+14);
end;
end;

Kénavo

Code, Code, Codec !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
slachz Messages postés 109 Date d'inscription lundi 21 avril 2003 Statut Membre Dernière intervention 1 janvier 2006
15 avril 2004 à 18:32
aa cool !
bravo Kénavo !

juste la dernière ligne c'est :
Rectangle(Rect.Left+2,Rect.Top+2,Rect.Left+14,Rect.Top+14);

(oue ta juste oublié une parenthése mais je l'avais po vu lol)

et sinon le prob c'est que le combobox est entierement selectionner (je sais pas si je me fait comprendre) ce qui fait qu'on voit pas trop la couleur ..

en tout cas chapeau :big) lol
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
15 avril 2004 à 18:59
Salut shachz,
Tout sélectionné, tu veux dire toute la ligne (y compris le pavé) ou toutes les lignes ?
1 - Si c'est toute la ligne, tu peux dessiner un rectangle blanc un peu plus grand sous le pavé :

Brush.Color := Combobox1.Color;
Pen.Color := Brush.Color;
Rectangle(Rect.Left,Rect.Top,Rect.Left+16,Rect.Top+16);

2 - Si c'est l'ensemble des lignes, if y a un problème de paramètre (odSelected in State) toujours vrai, à vérifier !

Kénavo

Code, Code, Codec !
0
slachz Messages postés 109 Date d'inscription lundi 21 avril 2003 Statut Membre Dernière intervention 1 janvier 2006
16 avril 2004 à 10:54
oui c'est la première solution !
le code est bon , malheureusement la forme blanche cache la couleur.
m'enfin le premier code suffit largement , et puis la selection s'en va quand on change le focus alors on va pas jouer les difficiles :big) lol..
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
16 avril 2004 à 11:32
Eh oh!

Le pavé blanc, il faut le dessiner avant le pavé coloré ! Avant le texte par exemple.

Kévavo

Code, Code, Codec !
0
slachz Messages postés 109 Date d'inscription lundi 21 avril 2003 Statut Membre Dernière intervention 1 janvier 2006
16 avril 2004 à 14:00
a vi
noob un jour noob....
pov slachz lol.
0
Rejoignez-nous