Hallo, ich versuche in einer ListView die Zeilen untschiedlich farblich zu hinterlegen, komme aber nicht klar. Ich verwende Lazarus 3.8 unter Fedora- Linux, allerdings auf einem MacBook Pro mit M1 Silikon Chip.
Code: Alles auswählen
procedure TForm1.SrcDstFileLViewCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var Status : ^byte;
begin
Status := Item.Data;
case Status^ of
1: Sender.Canvas.Brush.Color := clGreen;
2 : Sender.Canvas.Brush.Color := clYellow;
3 : Sender.Canvas.Brush.Color := $0000FF;
else Sender.Canvas.Brush.Color := clBlue;
end;
end;
Über TListItem.Data wird beim Erstellen der ListView pro Listitem ein Byte- Wert gesetzt, der letztlich dazu verwendet werden soll, die Hintergrundfarbe der einzelnen Zeile zu beeinflussen. In der TForm1.Create- Methode habe ich die Property "OwnerDraw" der ListView auf "false" gesetzt. Aber keine der Farben wird angewendet. Was mache ich da falsch?