ListView: wechselseitig immer grün/weis

Rund um die LCL und andere Komponenten
Antworten
catweasel
Beiträge: 215
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 19.3 - (L 2.0.6 FPC 3.0.4)

ListView: wechselseitig immer grün/weis

Beitrag von catweasel »

Moin

Ich möchte hier ein ListView wechselseitig immer eine Zeile grün und eine weis
und das unabhängig ob in der Zeile des ListView etwas steht oder ob sie leer ist.
Mein nachstehender Code macht das nur für die Zeilen im ListView wo etwas drinsteht.
Wie kann ich das für das ganze Listview machen?

Gruß
Michael

Code: Alles auswählen

// Grün-Weis Teil-1
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
const
  cStripe = $CCFFCC;
begin
  ListView1.Canvas.Font.Color := clBlack;
  if Odd(Item.Index) then ListView1.Canvas.Brush.Color := cStripe
                     else ListView1.Canvas.Brush.Color := clWindow;
end;

Code: Alles auswählen

// Grün-Weis Teil-2
procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
const
  cStripe = $CCFFCC;
begin
  if Odd(Item.Index) then ListView1.Canvas.Brush.Color := cStripe
                     else ListView1.Canvas.Brush.Color := clWindow;
end;

MmVisual
Beiträge: 1120
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3)
CPU-Target: 32/64Bit

Re: ListView: wechselseitig immer grün/weis

Beitrag von MmVisual »

Das musst Du dann im Draw vom ganzen List machen, da auf das Canvas die einzelnen Items zeichnen.

Ansonsten würde ich das so machen:

ListView1.Canvas.Brush.Color := cWindow XOr 0x330033;

Damit wird die Farbe automatisch mit angepasst wenn das Theme ändert.

catweasel
Beiträge: 215
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 19.3 - (L 2.0.6 FPC 3.0.4)

Re: ListView: wechselseitig immer grün/weis

Beitrag von catweasel »

Danke für die Info, ich schau´s mir mal an.

Antworten