ListView einfärben

Rund um die LCL und andere Komponenten
jornbyte
Beiträge: 36
Registriert: Di 14. Nov 2006, 10:15
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hohenstein - Er.

ListView einfärben

Beitrag von jornbyte »

Hallo Leute
Viele Versuche schlugen fehl. Wie kann ich unter Lazarus einzelne Zeilen in der ListView einfärben.
Ich hoffe, ihr könnt mir auch bei dieser Frage helfen.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Villeicht wäre es an der Zeit mal zu sagen was das für versuche waren. Ich würd mal OnCustomDrawItem benutzen ...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

jornbyte
Beiträge: 36
Registriert: Di 14. Nov 2006, 10:15
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hohenstein - Er.

Beitrag von jornbyte »

z.B. mit Listview1.canvas.font.color:= clMaroon; bleibt die Schriftfarbe schwarz, oder mit ListView1.Items.Item[ListView1.Items.Count-1].SubItems[3].color := clMaroon; bleibt der Híntergrund weis.
Ich suche erst in den verschiedenen Foren nach einer Lösung bevor ich frage, nur hier konnte ich nix finden was auch geht.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

mhm, wenn das in delphi funktioniert sollte mal jemand n busreport posten.

Listview1.canvas.font.color:= clMaroon;


wo machst du denn das ???
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

jornbyte
Beiträge: 36
Registriert: Di 14. Nov 2006, 10:15
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hohenstein - Er.

Beitrag von jornbyte »

na vor ListView1.Items.Item[ListView1.Items.Count-1].SubItems[3]:='bla';
Da es nicht geht, bitte ich ja um hilfe...
Es geht darum, festzustellen, ob ein Wert größer oder kleiner einer Vorgabe ist. Die soll im ListView duch eine andere Farbe kenntlich gemacht werden.Wenn möglich, soll sich die Hintergrundfarbe ändern.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Das musst du schon ein einem Paint event machen, so geht das in delphi mit sicherheit auch nicht
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

jornbyte
Beiträge: 36
Registriert: Di 14. Nov 2006, 10:15
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hohenstein - Er.

Beitrag von jornbyte »

Entschuldige Christian
Normalerweise popel ich ASM für µC. Das ist mein 3. Pascal Projekt. Das es schon soweit fortgeschritten ist, hätte ich nicht gedacht.
Deshalb meine bitte, gib mir mal ein Beispiel wie das mit Lazarus geht.
(jeder andere möge sich nicht zurückhalten)

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich verweise mal:
http://www.swissdelphicenter.ch/de/showcode.php?id=818
wenn keiner was dagegen hat *G*
MFG
Michael Springwald

jornbyte
Beiträge: 36
Registriert: Di 14. Nov 2006, 10:15
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hohenstein - Er.

Beitrag von jornbyte »

Ja, diese Seite hatte ich auch schon.
nur da bekomme ich da auch ne Fehlermeldung:
volumen.pas(903,10) Error: Identifier not found "Item"
die steht bei: case Item.Index of
gibt es sowas wie : ListView1.Items.Item[0].Canvas.Brush:= clRed;

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Also bei mir kommt das raus wenn ich das Ereignis für OnCustomDrawItem erzeuge:

Code: Alles auswählen

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);


Dort ist auch item definiert es kann also kein fehler identifier not found "item" kommen.

kopier doch mal dienen code incl dem ereignis hier rein. oder häng dein testprojekt an. Ich habs gestern abend mal kurz probiert und es sah so aus als ob das ganze nicht funktioniert also mögl. noch ein bug in lazarus bzw es ist nicht implementiert.

was auf jeden fall geht ist das was du willst in einer listbox. warum nimmst die eigentlich nicht ? brauchst mehrere spalten ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

jornbyte
Beiträge: 36
Registriert: Di 14. Nov 2006, 10:15
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hohenstein - Er.

Beitrag von jornbyte »

Nun bekomme ich es ohne Fehler aber die Farben ändern sich nicht.

procedure TForm1.liste();
var Item: TListItem;
begin
Item := Listview1.items.add(); //Nr.
Item.SubItems.add(''); //Breite
Item.SubItems.add(''); //Höhe
Item.SubItems.add(''); //Länge
Item.SubItems.add(''); //Volumen

with ListView1.Canvas.Brush do
begin
case Item.Index of
0: Color := clYellow;
1: Color := clGreen;
2: Color := clRed;
end;
end;
Listview1.Repaint;
ListView1.Update;
end;

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

So geht's sowieso nicht, auch nicht in Delphi.
Du müsstest das in einem CustomDraw Ereignis machen wie Christian sagt.

Aber ich glaube auch, dass das im Moment gar nicht implementiert ist.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

mit leere Spalten geht das nicht mache mal Subitems.add(' ') ein Leerzeichen reicht glaube ich
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

hast du das probiert? also bei mir hats mit beiden nicht funktioniert
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

nein habe ich nicht Probiert aber unter Delphi war das meine ich so: ich konnte keine Leere Items anzeigen lassen....
MFG
Michael Springwald

Antworten