Einzelnen Beitrag anzeigen

SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#1

ListView SubItem Background Color

  Alt 23. Feb 2015, 21:49
Guten Abend zusammen,
ich benutze zur Zeit ein TListView mit 3 SubItems.

Nun möchte ich, wenn der Text vom mittleren SubItem = "Test" ist, dass dieses eine andere Farbe bekommt.
Allerdings bekomme ich es nicht hin.

Hier mal mein aktueller Stand:
Delphi-Quellcode:
procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  if SubItem = 1 then
  begin
    if Item.SubItems.Strings[1] = 'Testthen
    begin
      Sender.Canvas.Brush.Color := TColor($CCFFCC);
    end
    else
    begin
      Sender.Canvas.Brush.Color := TColor($CCCCFF);
    end;
  end
  else
  begin
    Sender.Canvas.Brush.Color := clWindow;
  end;
end;
So wie es jetzt ist, werden jedoch alle 3 SubItems mit der Farbe $CCFFCC versehen.
Wenn ich auf SubItem = 2 prüfe, sind die letzten beiden in der Farbe.
Und bei SubItem = 3 nur das Letzte.

Ich verstehe den Zusammenhang von SubItem nicht.
Ich bin davon ausgegangen, das SubItem das aktuelle SubItem ist und das bei 3 SubItems das Event 3 mal aufgerufen wird.
Deshalb war meine Überlegung, dass wenn SubItem = 1 ist (erstes SubItem = Index 0) nur das Mittlere eine andere Farbe bekommt.

Aber dem ist nicht so.
Könntet ihr mich aufklären?
  Mit Zitat antworten Zitat