Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem beim Einfärben von ListView (Sub)Items (https://www.delphipraxis.net/168672-problem-beim-einfaerben-von-listview-sub-items.html)

luke2 3. Jun 2012 15:31

Delphi-Version: XE2

Problem beim Einfärben von ListView (Sub)Items
 
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] = 'OK' then
      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.

himitsu 3. Jun 2012 17:30

AW: Problem beim Einfärben von ListView (Sub)Items
 
Es gibt wohl ein Problem mit dieser einen Systemfarbe. (einige andere Systemfarben funktionieren aber)
Delphi-Quellcode:
  else
    Sender.Canvas.Font.Color := ColorToRGB(clWindowText);

luke2 3. Jun 2012 17:43

AW: Problem beim Einfärben von ListView (Sub)Items
 
Danke himitsu (mal wieder, wie oft du mir schon geholfen hast... :thumb:)

Metschu 3. Jun 2012 18:46

AW: Problem beim Einfärben von ListView (Sub)Items
 
Supi, dann ist mein Problem mit dem Färben des Hintergrundes auch gelöst :-D

"ClWindow" mochte er auch nicht direkt, hatte es dann als Workaround immer mit "ClWhite" "Erzwungen", blöd nur wenn jemand ne andere Desktop Farbeneinstellung hatte :twisted:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz