![]() |
TListView Zelle färben, BUG oder ein Fehler von mir?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich möchte in einer TListView eine Zelle färben und verwende diesen Code
Code:
Die TListView hat als Color ebenfalls $00F7F7F7
procedure TKabOpTerminManager.ListViewTermineCustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean);
begin if SubItem = 7 then begin Sender.Canvas.Brush.Color:=clRed; end else begin Sender.Canvas.Brush.Color:=$00F7F7F7; end; end; Die Folge ist nun, dass alle Zellen mit SubItem >= 7 in rot gefärbt werden. Zum Testen habe ich mal eine andere Hintergrundfarbe genommen. Somit unterscheidet sich nun also TListView.Color und Sender.Canvas.Brush.Color:=$00F7F7F7; Damit funktioniert es wie gewünscht. Allerdings sollten ja die SubItems genauso eingefärbt werden, wie TListView.Color (außer halt bei SubItem=7) :?: :?: :?: Was mache ich falsch? Grüße Christof |
AW: TListView Zelle färben, BUG oder ein Fehler von mir?
Sender.Canvas.Brush.Color:=TListView(Sender).Color ; ?
Ansonsten versteh ich die Frage nicht. |
AW: TListView Zelle färben, BUG oder ein Fehler von mir?
Zitat:
Nur wenn ich z.B. Sender.Canvas.Brush.Color:=clGray verwende, dann sind alle Zellen außer der 7. in Grau. Aber es soll nicht in Grau sein, sondern eben TListView(Sender).Color Klar ????? |
AW: TListView Zelle färben, BUG oder ein Fehler von mir?
Na dann hab ich es schon richtig verstanden, versuchs mal (wie ich bereits erwähnte) mit:
Delphi-Quellcode:
procedure TKabOpTerminManager.ListViewTermineCustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean);
begin if SubItem = 7 then begin Sender.Canvas.Brush.Color:=clRed; end else begin Sender.Canvas.Brush.Color:=TListView(Sender).Color; end; end; |
AW: TListView Zelle färben, BUG oder ein Fehler von mir?
Hallo,
wenn ich Deinen Code verwende
Code:
dann sehen die Zellen ab SubItem >= 7 rot aus, wie im Bild zu sehen ist.
procedure TKabOpTerminManager.ListViewTermineCustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean);
begin if SubItem = 7 then begin Sender.Canvas.Brush.Color:=clRed; end else begin Sender.Canvas.Brush.Color:=TListView(Sender).Color; end; end; Verwende ich aber
Code:
Dann sehen alle Spalten grau aus (bis auf die 7.) Es soll aber nicht grau sein, sondern eigentlich TListView(Sender).Color, aber das funktioniert nicht :cry:
procedure TKabOpTerminManager.ListViewTermineCustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean);
begin if SubItem = 7 then begin Sender.Canvas.Brush.Color:=clRed; end else begin Sender.Canvas.Brush.Color:=clGray; // als Beispiel end; end; |
AW: TListView Zelle färben, BUG oder ein Fehler von mir?
da läuft IMHO irgendetwas mit dem Setter von Brush.Color schief wenn
ListView.Color = gesetzter Farbe im CustomDrawSubItem ist. Ich kann im Moment nur einen Workaround anbieten ...
Delphi-Quellcode:
begin
if SubItem = 7 then begin Sender.Canvas.Brush.Color:=clRed; end else begin Sender.Canvas.Brush.Color:=$00F7F7F6; // entweder Wechsel erzwingen Sender.Canvas.Brush.Color:=$00F7F7F7; //oder auch das Handle "anfassen" Sender.Canvas.Brush.Handle:= Sender.Canvas.Brush.Handle; end; end; |
AW: TListView Zelle färben, BUG oder ein Fehler von mir?
Zitat:
Trotzdem Danke, dann muss es so gehen Christof |
AW: TListView Zelle färben, BUG oder ein Fehler von mir?
Zitat:
In 3 Jahren kannst du hier alles noch schön nachlesen. Die DP vergisst nichts (also meistens fast immer). |
AW: TListView Zelle färben, BUG oder ein Fehler von mir?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:05 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