Hallo Delphi-Coder,
auch wenn Christian inzwischen eine Lösung geliefert hat, will ich noch eine kleine Ergänzung bringen.
Delphi-Quellcode:
type
TArrCol =
record
Font : TColor;
Bkgr : TColor;
end;
const
maxColAnz = 3;
// max. Anzahl verschiedener Farbvarianten
var
carr :
array[1..maxColAnz]
of TArrCol;
i : integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
// kann auch im ObjektInspektor (OI) eingestellt werden
ComboBox1.Style := csOwnerDrawFixed;
// Festlegung der der Farben für jeden 1., 2. usw. Eintrag
// noch besser wäre wahrscheinlich die Festlegung in einem Array
i := 1;
carr[i].Font := clBlack;
carr[i].Bkgr := clWhite;
inc(i);
carr[i].Font := clWhite;
carr[i].Bkgr := clGreen;
inc(i);
carr[i].Font := clWhite;
carr[i].Bkgr := clRed;
SpeedButton1.Caption := '
ComboBox mit Einträgen füllen';
end;
procedure TForm1.ComboBox1DrawItem(Control: TWinControl;
Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with Control
as TComboBox
do begin
i :=
Index mod maxColAnz;
inc(i);
// weil cArr mit 1 beginnt
Canvas.Font.Color := carr[i].Font;
Canvas.Brush.Color := carr[i].Bkgr;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[
Index]);
end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
i : integer;
begin
for i := 1
to 10
do begin
ComboBox1.Items.Add('
Eintrag Nr. ' + IntToStr(i));
end;
end;
mfg
eddy