Einzelnen Beitrag anzeigen

luke2

Registriert seit: 17. Jun 2009
117 Beiträge
 
#1

Problem beim Einfärben von ListView (Sub)Items

  Alt 3. Jun 2012, 15:31
Delphi-Version: XE2
Hi,

ich benutze folgenden Code, um jedes 2. Item einer ListView einzufärben:
Delphi-Quellcode:
procedure TForm1.lvTestCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if Odd(Item.Index) then
    Sender.Canvas.Brush.Color := clSilver
  else
    Sender.Canvas.Brush.Color := clWindow;
end;
Zudem noch folgenden Code, um bestimmte SubItems einzufärben:
Delphi-Quellcode:
procedure TForm1.lvTestCustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  if SubItem = 3 then
  begin
    if Item.SubItems[SubItem - 1] = 'OKthen
      Sender.Canvas.Font.Color := clGreen
    else
      Sender.Canvas.Font.Color := clRed;
  end
  else
    Sender.Canvas.Font.Color := clWindowText;
end;
Das Problem ist jetzt, dass nach dem Einfärben des 2. SubItems die Einfärbung (clSilver, s.o) für diese Zeile aufhört und auch noch alle weiteren SubItems (grün) eingefärbt werden.

Warum ist das so? Ich habe im Code doch festgelegt, dass die Farbe wieder clWindowText (schwarz) sein soll, wenn es nicht das 2. SubItem ist.
  Mit Zitat antworten Zitat