Voila, j'ai fait un ComboBox qui permet de choisir une couleur :
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 procedure TfrmAddItem.cbbAddCategoryColorDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin if Index <= Length(Colors) - 1 then Begin cbbAddCategoryColor.Canvas.Pen.Color := clBlack; cbbAddCategoryColor.Canvas.FillRect(Rect); cbbAddCategoryColor.Canvas.TextOut(30, Rect.Top,VAR_COLOR_TABLE[Index]); cbbAddCategoryColor.Canvas.Brush.Color := Colors[Index]; cbbAddCategoryColor.Canvas.Rectangle(Rect.Left + 2, Rect.Top + 2, 24,Rect.Top + 15); End else Begin // 'Other...' color case cbbAddCategoryColor.Canvas.Pen.Color := clBlack; cbbAddCategoryColor.Canvas.FillRect(Rect); cbbAddCategoryColor.Canvas.TextOut(30, Rect.Top,'Autres...'); End; end;
... Ok pas de prob...
Maintenant dans le OnChange, si on selectionne 'Autres...' il ouvre un TColorDialog et tout se passe bien , il me renvoie la couleur.
Mais je ne sais pas dessiner cette couleur dans le comboxBox, je veut dire : dans l'Item qui apparait maintenant et est sélectionné.
Voici ma methode onChange :
Celle-ci ne fonctionne pas.... :S
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TfrmAddItem.cbbAddCategoryColorChange(Sender: TObject); var cdgResult : TColor; begin if cbbAddCategoryColor.ItemIndex = Length(Colors) then Begin cdgAddCategoryColor.Execute; cdgResult := cdgAddCategoryColor.Color; cbbAddCategoryColor.Canvas.Brush.Color := cdgResult; cbbAddCategoryColor.Canvas.Rectangle(Left + 2, Top + 2, 24, Top + 15); cbbAddCategoryColor.Canvas.Font.Color := clHighlightText; cbbAddCategoryColor.Canvas.TextOut(30, Top,'xxx'); End; end;
Merci d'avance
Partager