Items einer ComboBox farbig füllen
-
Hallio,
ich würde gerne die einzelnen Zeilen meiner Combobox farbig füllen.
Dazu habe ich mir folgenden Code erdacht:void __fastcall Tform_maps::ComboBox1DrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State) { switch (Index) { case 0 : Canvas->Brush->Color = clLime; break; case 1 : Canvas->Brush->Color = clRed; break; case 2 : Canvas->Brush->Color = clAqua; break; case 3 : Canvas->Brush->Color = clYellow; break; } Canvas->FillRect(Rect); }Leider wird die Farbe nicht in den Zeilen der Combobox, sondern an Position (0|0) das Formulars gezeichnet. Laut Hilfe gibt mir der Parameter Rect das Rechteck zurück, in dem gezeichnet werden soll.
hab ich etwas übersehen?MfG
Stefan
-
Du musst schon das Canvas des Control verwenden und nicht der form
(TWinControl *Control) auswerten
-
TWinControl hat aber anscheinend kein Canvas. Ein Typecast auf TComboBox tut auch nicht. Ich kann natürlich manuell den Namen der aufrufenden ComboBox angeben, aber ich möchte die Funktion ja allgemein halten. Gibt es hier kein "TObject *Sender" ?
-
klar geht ein cast auf die ComboBox
TComboBox* pCBO = dynamic_cast<TComboBox*>(Control); if (pCBO) { pCBO->Canvas->FillRect(Rect); }
-
Hallo
Zu beachten ist dabei noch das der Style der ComboBox muß auf csOwnerDraw... gesetzt sein muß
bis bald
akari