Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Farbe einer Spalte in ListView ändern (https://www.delphipraxis.net/58624-farbe-einer-spalte-listview-aendern.html)

ManuMF 9. Dez 2005 18:24


Farbe einer Spalte in ListView ändern
 
Hallo,

(wie) ist es möglich, die farbe einer der Spalten eines ListViews zu ändern?

Gruß,
ManuMF

marabu 9. Dez 2005 18:49

Re: Farbe einer Spalte in ListView ändern
 
Hallo.

Dazu verwendest du das Ereignis OnCustomDrawSubItem().

Grüße vom marabu

ManuMF 9. Dez 2005 19:52

Re: Farbe einer Spalte in ListView ändern
 
Hallo,

danke erst mal für den Ansatz. Es funktioniert auch bei der 3. Spalte, bei der 1. aber nicht.

Mein Code:
Delphi-Quellcode:
  if (LatNSortMenue.Checked) then
  begin
    if (SubItem = 0) then
      Sender.Canvas.Brush.Color := RGB(221, 236, 255)
    else
      Sender.Canvas.Brush.Color := ClWhite;
  end
  else
  begin
    if (SubItem = 2) then
      Sender.Canvas.Brush.Color := RGB(221, 236, 255)
    else
      Sender.Canvas.Brush.Color := clWhite;
  end;
Was ist da falsch? :gruebel:

Gruß,
ManuMF

marabu 9. Dez 2005 20:08

Re: Farbe einer Spalte in ListView ändern
 
Du hast nicht wirklich was falsch gemacht - für die erste Spalte musst du deine Einstellung aber in OnCustomDrawItem machen.

marabu

ManuMF 10. Dez 2005 12:58

Re: Farbe einer Spalte in ListView ändern
 
Hallo,

danke, das hat funktioniert.
Aber (ja, ich bin anspruchsvoll ;-) ): Es werden dadurch nur die Items gefärbt. Ist das auch für die ganze Spalte möglich?

Gruß,
ManuMF

Helmi 8. Apr 2007 10:42

Re: Farbe einer Spalte in ListView ändern
 
Hallo,

ich muss diesen Thread nochmal aufgreifen.

In meiner ersten Spalte sind nur die CheckBoxen und kein Text.
Wenn nun eine Zeile ausgewählt wird, dann wird auch die CheckBox selectiert dargestellt.
Das möchte ich aber nicht.
Deswegen dacht ich mir, ich könnte die 1. Spalte neu zeichnen.
Nur leider funktioniert das nicht so wie ich mir das vorstell.

Delphi-Quellcode:
procedure TMainForm.ListView_DateienCustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  If SubItem = 0 then
    Listview_Dateien.Brush.Color := clRed;
end;
Das geht leider nicht (clRed ist nur testweise dort).

Wie könnt ich die 1. Zeile ändern?

SevenValues 8. Apr 2007 12:09

Re: Farbe einer Spalte in ListView ändern
 
Hi!
Nur selektiert dargestellt, oder haben die CB's auch den Wert TRUE?

Helmi 8. Apr 2007 12:37

Re: Farbe einer Spalte in ListView ändern
 
sie haben auch nen zustand
also true oder false

SevenValues 8. Apr 2007 13:02

Re: Farbe einer Spalte in ListView ändern
 
Dann negiere Deinen Klick, den die ListView als Auswahl interpretiert, einfach. So musst Du nix neuzeichnen, jedenfalls nicht zwangsläufig.
Delphi-Quellcode:
ListView1.Items.Item[XYZ].Checked:=NOT ListView1.Items.Item[XYZ].Checked;
An dieser Stelle stellt sich die Frage, weshalb die CheckBoxes den Zustand ändern, wenn nur ein RowSelect ausgeführt wird. Hast Du denn ein OnClick-Ereignis definiert o.ä., wo vielleicht eine Selektion durchgeführt wird??

Helmi 8. Apr 2007 13:16

Re: Farbe einer Spalte in ListView ändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich denke du hast mich missverstanden.

Mit der CheckBox will ich ja nichts anstellen.
Wie du im Bild siehst, ist die letzte Zeile markiert (blau hinterlegt).
Die CheckBox selbst aber auch.
eine nicht markierte CheckBox siehst du drüber.

Nun möchte ich aber, dass die CheckBox trotz markierter Zeile nicht markiert aussieht - also so wie die vorletzte Zeile.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:11 Uhr.
Seite 1 von 2  1 2      

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