![]() |
TListView Zeilenfarbe mit "CustomDrawItem" ändern
Hab nochmal eine Frage zum TListView...
Und zwar gehts jetzt dadrum bestimmt Zeilen im ListView zu färben. Ich habe gelesen das das mit dem Event "CustomDrawItem" des ListView gemacht werden soll. Allerdings funktioniert das bei mir nicht. Das Prinzip ist folgendes: Ich habe in meiner "Hauptfunktion" eine Schleife mit der der ListView gefüllt wird. Meine Hoffnung war das das Event "CustomDrawItem" jedesmal aufgerufen wird wenn li.Caption := '...' ausgeführt wird. Bei mir ist es aber so das die Schleife erstmal komplett durchläuft, und erst danach das Event ausgeführt wird (natürlich genausoft wie auch li.Caption aufgerufen wurde, aber das nützt mir nichts, da ich bei Laufzeit in der Schleife eine Variable setze und diese im Event abgefragt wird. Nur das ist natürlich nutzlos wenn li.Caption und das Event nicht abwechselnd aufgerufen werden. Mein Code im Event sieht so aus:
Code:
if fehlercode = '1 ' then
begin Sender.Canvas.Font.Color := clRed; DefaultDraw := True; end else if fehlercode = '2 ' then begin Sender.Canvas.Font.Color := clGreen; DefaultDraw := True; end else if fehlercode = '1 2 ' then begin Sender.Canvas.Font.Color := clBlue; DefaultDraw := True; end else begin Sender.Canvas.Font.Color := clDefault; DefaultDraw := True; end; |
AW: TListView Zeilenfarbe mit "CustomDrawItem" ändern
Mal anders gefragt:
So eine Komponente (z.B. TListView) wird ja immer wieder neu gezeichnet, auch wenn du keine Daten zuweist. Und dann wird auch logischerweise CustomDrawItem aufgerufen. Wie soll die Methode denn dann wissen, wie sie zeichnen soll? |
AW: TListView Zeilenfarbe mit "CustomDrawItem" ändern
Eben, man müsste also den Fehlercode in den Daten ablegen (TListItem.Data) und beim Zeichnen wieder auswerten.
|
AW: TListView Zeilenfarbe mit "CustomDrawItem" ändern
Hm, kann ich so jetzt noch nicht viel mit anfangen. Sitz da aber auch grade nicht vor...
Werd mir das morgen mal anschauen ;) Danke |
AW: TListView Zeilenfarbe mit "CustomDrawItem" ändern
Soo... da bin ich wieder...
Also ich bin schon ein gutes Stück weiter. Allerdings macht er mit alle Zeilen rot, auch wenn "fehler := false" ist... (fehler ist vom Typ Boolean) Schauts euch mal an, hier der Teil wo ich zeichne:
Code:
und hier die "Auswertung"
li := ListView1.Items.Add;
li.Data := Pointer(fehler); li.Caption := kunde; li.SubItems.Add(hz[0]); li.SubItems.Add(hz[1]); li.SubItems.Add(hz[2]); li.SubItems.Add(erg);
Code:
Edit: Asche auf mein Haupt... Ich hab im Vorfeld einfach "fehler" falsch gesetzt :/
procedure TfrmZentralen.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin if Boolean(Item.Data) = true then begin Sender.Canvas.Font.Color := clRed; DefaultDraw := True; end else begin Sender.Canvas.Font.Color := clDefault; DefaultDraw := True; end; end; Dann kann dieser Thread auch geschlossen werden, Danke euch beiden ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz