Hallo,
wenn ich deine Frage richtig verstanden habe, dann müsste die Lösung ungefähr so aussehen:
Delphi-Quellcode:
procedure TForm1.ComoBoxDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
icon: TIcon;
imageIndex: Integer;
begin
icon := TIcon.Create;
ClientDataSet.RecNo := Index; //1
imageIndex := 1 - Ord(ClientDataSet.FieldByName('bZeige').AsBoolean);
ImageList.GetIcon(imageIndex, icon);
with Control as TComboBox do
begin
Canvas.CopyMode := cmDstInvert;
Canvas.FillRect(Rect);
Canvas.Draw(Rect.Left, Rect.Top, icon);
Canvas.TextOut(Rect.Left + 25, Rect.Top, Items[Index]);
end;
icon.Free;
end;
Damit das korrekte Feld ausgewertet wird, habe ich bei //1 den Datensatzzeiger positioniert. Stellenweise hattest du Methoden von Klassen aufgerufen, was ich korrigiert habe. Den Text könntest du übrigens genauso aus dem ClientDataSet nehmen, wie du es mit dem Bild vorhast.
Grüße vom marabu