AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi TListView Zelle färben, BUG oder ein Fehler von mir?
Thema durchsuchen
Ansicht
Themen-Optionen

TListView Zelle färben, BUG oder ein Fehler von mir?

Ein Thema von tofse · begonnen am 30. Apr 2013 · letzter Beitrag vom 30. Apr 2013
Antwort Antwort
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#1

TListView Zelle färben, BUG oder ein Fehler von mir?

  Alt 30. Apr 2013, 14:06
Hallo,

ich möchte in einer TListView eine Zelle färben und verwende diesen Code
Code:
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 TListView hat als Color ebenfalls $00F7F7F7

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
Miniaturansicht angehängter Grafiken
listview.png  
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TListView Zelle färben, BUG oder ein Fehler von mir?

  Alt 30. Apr 2013, 14:13
Sender.Canvas.Brush.Color:=TListView(Sender).Color ; ?

Ansonsten versteh ich die Frage nicht.
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#3

AW: TListView Zelle färben, BUG oder ein Fehler von mir?

  Alt 30. Apr 2013, 14:17
Sender.Canvas.Brush.Color:=TListView(Sender).Color ; ?
Äh ja, das entspricht dem, was ich geschrieben habe. Wenn ich es so verwende, werden alle Zellen ab SubItem>=7 in rot gefärbt, wie im Bildchen zu sehen ist.

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 ?????
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TListView Zelle färben, BUG oder ein Fehler von mir?

  Alt 30. Apr 2013, 14:22
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;
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#5

AW: TListView Zelle färben, BUG oder ein Fehler von mir?

  Alt 30. Apr 2013, 14:25
Hallo,
wenn ich Deinen Code verwende
Code:
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;
dann sehen die Zellen ab SubItem >= 7 rot aus, wie im Bild zu sehen ist.

Verwende ich aber
Code:
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;
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
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: TListView Zelle färben, BUG oder ein Fehler von mir?

  Alt 30. Apr 2013, 14:26
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;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#7

AW: TListView Zelle färben, BUG oder ein Fehler von mir?

  Alt 30. Apr 2013, 14:29
Sender.Canvas.Brush.Color:=$00F7F7F6; // entweder Wechsel erzwingen
Ah, das funktioniert. Der Benutzer bemerkt keinen Unterschied, und wenn ich das in 3 Jahren wieder anpacken muss, verstehe ich nicht, warum ich es so eingesetzt habe

Trotzdem Danke, dann muss es so gehen
Christof
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

AW: TListView Zelle färben, BUG oder ein Fehler von mir?

  Alt 30. Apr 2013, 14:38
und wenn ich das in 3 Jahren wieder anpacken muss, verstehe ich nicht, warum ich es so eingesetzt habe
Dann füge doch einfach die URL dieses Threads als Kommentar in den Sourcecode ein.
In 3 Jahren kannst du hier alles noch schön nachlesen.
Die DP vergisst nichts (also meistens fast immer).
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#9

AW: TListView Zelle färben, BUG oder ein Fehler von mir?

  Alt 30. Apr 2013, 14:54
Zitat:
Der Benutzer bemerkt keinen Unterschied ...
Du kannst durchaus die gleiche Farbe verwenden, nur zwischendurch einmal den "Setter durchputzen" ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 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