Einzelnen Beitrag anzeigen

Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#8

Re: ListView einzelnes Item färben

  Alt 29. Jul 2005, 06:12
Zitat von citybreaker:
... Oder ich versteh den Code nicht. Kann ja auch sein.
Ich versuche es mal zu erklären.
marabu verwendet das Ereigniss Delphi-Referenz durchsuchenOnCustomDrawSubItem. Dies wird beim zeichen von jedem einzelen SubItem aufgerufen.
Jetzt prüft er welches SubItem gezeichnet wird 1/2/8 oder 7.
Wenn die SubItem 1/2/8 gezeichnet werden setzt er deren Fontfarbe auf grün.
Wenn SubItem 7 (was übrigens die achte Spalte ist) gezeichnet wird prüft er ob im Item (Spalte 1, kein SubItem) das Wort "JA" steht und setzt dann die Farbe auf grün und ansonsten auf rot.

Da Du jedoch den Inhal eines SubItems (Spalte 7) prüfe möchtest musst Du auch den Inhalt des SubItems und nicht des Items prüfen

Hier mal der Code wie er für deinen Fall gehen sollte.
Delphi-Quellcode:
procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: integer; State: TCustomDrawState; var DefaultDraw: boolean);
begin
  with Sender.Canvas do
    case SubItem of
      1, 2, 8:
        Font.Color := clGreen;
      6: // Wenn Spalte 7 gezeichnet wird dann...
        if Uppercase(Item.SubItems[SubItem - 1]) = 'JAthen // In Spalte 7 steht "JA"..
          Font.Color := clGreen
        else
          Font.Color := clRed;
      else Font.Color := clBlack; // Für alle andere SubItems diese Farbe
    end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat