Farbe bei markierte Zeilen in Listview ändern

Rund um die LCL und andere Komponenten
Antworten
catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Farbe bei markierte Zeilen in Listview ändern

Beitrag von catweasel »

Moin

Ich habe ein ListView mit diversen Einträgen. Alle Einträge sind in schwarzer Schrift.

Nun habe ich ein PopupMenü in die ListView eingebaut und möchte das die zuvor markierten Zeilen
die Schreibfarbe ändern. Nachstehender Quelltext bewirkt bei mir aber nichts. Wo liegt mein Denkfehler?

Code: Alles auswählen

//Schreibfarbe der markierte Zeile(n) soll(en) gefärbt werden
procedure TForm1.MenuItem1Click(Sender: TObject);
var i:integer;
begin
   for i:=ListView1.Items.Count-1 downto 0 do
       if ListView1.Items.Item[i].Selected then ListView1.Canvas.Font.Color := clRed;
 
end;
Gruß
Michael

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Farbe bei markierte Zeilen in Listview ändern

Beitrag von Socke »

Alle Farben werden vom aktuellen Theme übernommen. Daher musst du die Zeilen selber zeichnen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Farbe bei markierte Zeilen in Listview ändern

Beitrag von MAC »

Wie macht man sowas eigentlich ???
Also in der Theorie stell ich mir das vor das ich ne Classe von TListview ableite, dort dann die Paint Prozedure kopiere und anpasse. und gegebenfalls nen paar propertys hinzufüge.
Ich find da gar nichts paint-mäßiges , kann das sein das die OS-Funktion für sowas genutz wird (oder so ähnlich)

Code: Alles auswählen

Signatur := nil;

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Farbe bei markierte Zeilen in Listview ändern

Beitrag von Socke »

Suche mal nach "draw"...

Code: Alles auswählen

TListView = class(TCustomListView)
//...
    property OnAdvancedCustomDraw;
    property OnAdvancedCustomDrawItem;
    property OnAdvancedCustomDrawSubItem
/...
    property OnCustomDraw;
    property OnCustomDrawItem;
    property OnCustomDrawSubItem;
//...
Zum Zeichnen kann man eventuell auch auf Themes.ThemeService zurückgreifen. Der kann aber für einige Nicht-Windows-Plattformen nur teilweise implementiert sein.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Farbe bei markierte Zeilen in Listview ändern

Beitrag von catweasel »

Socke hat geschrieben:Alle Farben werden vom aktuellen Theme übernommen. Daher musst du die Zeilen selber zeichnen.
Ich hatte es befürchtet :wink:
Danke für den Hinweis

Gruß
Michael

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Farbe bei markierte Zeilen in Listview ändern

Beitrag von Bauer321 »

ich würd ma hier gucken: http://student.physik.uni-mainz.de/~rot ... edcombobox

ist mir eben zufällig begegnet müsste genau das richtige für dich sein
www.mcpatcher.net | www.hoeper.me

Antworten