Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Listview - Smallimages markieren


rushifell - Mi 04.04.18 17:46
Titel: Listview - Smallimages markieren
Hallo,

ich programmiere in Lazarus 1.4.2. Ich habe eine Listview im Viewstyle vsReport mit Smallimages. Beim Auswählen bzw. Anklicken einer Zeile wird die komplette Zeile blau markiert, bei den Smallimages bleibt ein weißer Hintergrund. Gibt es eine Möglichkeit, die ganze Zeile blau zu markieren, außer im OnCustomDraw selbst zu Zeichnen?

Viele Grüße
Richard


Delete - Mi 04.04.18 18:44

- Nachträglich durch die Entwickler-Ecke gelöscht -


Sinspin - Do 05.04.18 10:06

Das wäre ja dann entweder der Hintergrund der Images, was man eventuell mit einen transparenten Hintergrund hinbekommen würde.
Sieht aber sicher nicht so toll aus.
Oder das gesamte Image müsste "eingeblaut" werden. Das habe ich schonmal irgendwo gesehen. Aber jedenfalls nicht bei standard Komponenten. Das wirst Du dann wohl selber versuchen müssen.


rushifell - Do 05.04.18 21:19

Danke für Eure Antworten. Ich muss die transparente Farbe manuell in der Imagelist einstellen. Wenn die Hintergrundfarbe weiß ist, muss ich also weiß wählen. Wenn ich die Voreinstellung nehme, funktioniert es nicht. Jetzt wird das Smallimage wenigstens mit hellblauem Hintergrund gezeichnet, sobald die entsprechende Zeile gewählt ist.

Alternativ habe ich nun eine Kopie der Bilder mit blauem Hintergrund. Beim Anwählen wird zum Smallimage mit dem blauen Hintergrund gewechselt. Ist nicht ganz optimal, beim ersten Klick dauert der Wechsel der Bilder recht lange.

Problem bei beiden Varianten ist, dass sich am rechten Rand des Smallimages ein weißer Balken befindet, den ich nicht wegbekommen. Dadurch ist die blau markierte Zeile unterbrochen. Entweder mache ich etwas falsch oder das ist normal.

Viele Grüße


Delete - Fr 06.04.18 07:08

- Nachträglich durch die Entwickler-Ecke gelöscht -


rushifell - Fr 06.04.18 08:22

Danke, dass Du Dir die Mühe gemacht hast es auszuprobieren. Das Problem tritt bei den Subitems, also ab der zweiten Spalte auf. Ich benutze Bilder im PNG-Format mit einer Größe von 18x18 Pixel. Hab's auch schon mit einer Größe von 16x16 Pixel probiert, das Gleiche Problem. Ich werde es Mal mit Icons, die eine Größe von 16x 16 Pixel hahen, testen.


rushifell - Sa 07.04.18 06:02

Ich hab das Problem gelöst.


Delphi-Quelltext
1:
2:
3:
Uses UxTheme:
...
SetWindowTheme(Listview1.Handle, 'Explorer'nil);


Jetzt wird die ganze Zeile markiert inklusive Smallimages, so wie ich es haben wollte.