Delphi-PRAXiS
Seite 2 von 2     12   

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/)
-   -   Listview ganze Spalte färben (https://www.delphipraxis.net/198624-listview-ganze-spalte-faerben.html)

Amenovis 21. Nov 2018 21:45

AW: Listview ganze Spalte färben
 
ok dann bin ich ja doch gar nicht so weit weg von deinem

Du machst es mit der prozedur und dem array
die eigene Prozedur wollte er schon nicht ich dachte ich hätte sie nicht initalisiert
Beispiel.. Geh ich auf listview events und mach einen doppelklick fügt er oben die Prozedur automatisch ein und unten zwischen begin und end sag ich ihm was ich will (EDIT: Ahh Vegiss das ich bin doch zu doof ich hab zwar die Prozedur zwischen public eingefügt aber die Zeile drüber hatte ich voll vergessen... das viel mir jetzt auf wo ich das beispiel schrieb urgssss)

Delphi-Quellcode:
{Event1 das meinte ich mit Block1}
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if Item.SubItems[0] then Color:=clred;{<<..Die Zeile so Korrekt?}
end;

{Event2 das meinte ich mit Block2}
procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
if Item.SubItems[1] then Color:=clgreen else
if Item.SubItems[2] then Color:=clyellow else
if Item.SubItems[3] then Color:=clgray else
end;

KodeZwerg 21. Nov 2018 22:05

AW: Listview ganze Spalte färben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Okay, einfach nur meinen Event Code kopieren ohne Events zuzuweisen das klappt dann wohl nicht.

Nimm einfach mein Beispiel aus dem Anhang als Vorlage.

Ps: Das einzige was Du zu machen hast ist in der Zeile wo ich Spalte 1 Spalte 2 usw geschrieben habe
-> passe dort deine Wunschfarbe an und wenn Du mehr möchtest musst Du das Array [0..2] erweitern.

Amenovis 21. Nov 2018 22:10

AW: Listview ganze Spalte färben
 
Ok das mach ich später zu hause bin noch auf der Arbeit
hab hier nichts zum öffnen das ist auf dem anderen pc

aber bitte eine letzte Frage was muss den bei der ersten Spalte anstatt item.subitems[] drin stehen ?


Delphi-Quellcode:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if Item.SubItems[0] then Color:=clred;{<<..so ist das sicher Falsch weil die erste spalte ja caption nicht supitem ist} 
end;

KodeZwerg 21. Nov 2018 22:18

AW: Listview ganze Spalte färben
 
Zitat:

Zitat von Amenovis (Beitrag 1418712)
aber bitte eine letzte Frage was muss den bei der ersten Spalte anstatt item.subitems[] drin stehen

Das hier:
Delphi-Quellcode:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if Item <> Nil then
    Sender.Canvas.Brush.Color := clRed;
end;

Amenovis 21. Nov 2018 22:29

AW: Listview ganze Spalte färben
 
OK dann nochmal vielen vielen Dank für deine Zeit UND deine Geduld!

Mhh ich finde beide Wege schön, je nachdem was man braucht

Nur Spalte 1 mein Weg nur subitems deinen oder meinen Weg bei Spalte 1 und 2+x ... 100% deinen Weg ist übersichtlicher :)

lg

Timo

Edit: Deinen werd ich sicher auch verwenden die Zeit war nicht umsonst :)

KodeZwerg 21. Nov 2018 22:41

AW: Listview ganze Spalte färben
 
Gern geschehen, ob Du jetzt meine Variante verwendest oder irgendwie anders ans Ziel kommst, das ist ja das schöne an Pascal das es einem mehr oder minder frei steht wie es denn tatsächlich abzulaufen hat.
Aber der Vcl was machen zu lassen wofür sie nicht gedacht ist kann auch nach hinten losgehen.

Ob Du nun ein Event oder zwei aufrufst, ob mit oder ohne eigener Methode, die .exe Dateigröße sowie die Geschwindigkeit werden nicht darunter leiden.
Wenn Du später mal mehr Spalten haben willst brauchst Du bei Verwendung meines Source nur an einer Sache fummeln, der eigenen Methode.

Wie ich es machen würde kann man ja dem Archiv entnehmen, ggf den Namespace aktualisieren, das ist mit Delphi 5 rasch dahin hingekritzelt worden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:14 Uhr.
Seite 2 von 2     12   

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