![]() |
Trennlinienfarbe/Style bei gruppierter Listview..
Ist es irgendwie möglich die Farbe der Trennlinie in einer gruppierten Listview zu ändern?
![]() Standard ist ja wohl dieses Blau... ich will aber nur in meinem Programm eine andere Farbe verwenden. |
Re: Trennlinienfarbe/Style bei gruppierter Listview..
Bist du sicher, dass es nur Blau ist? Ich müsste es mal ausprobieren, aber ich würde vermuten, dass die Farbe auch von den Systemeinstellungen abhängt. Sonst gäbe es ja wieder das Problem, dass man die Trennlinie nicht sehen würde, wenn irgendwer ein Theme oder Farbeinstellungen hat, bei denen der Fensterhintergrund dieses Blau benutzt.
Ansonsten -ohne Gewähr!- schau mal im PSDK unter ListView_SetGroupMetrics nach. Damit lassen sich einige Farbeinstellungen vornehmen, aber ob das auch auf diese Trennlinie zutrifft, ... :? |
Re: Trennlinienfarbe/Style bei gruppierter Listview..
Zitat:
|
Re: Trennlinienfarbe/Style bei gruppierter Listview..
Ich will aber nur die Farbe für meinen Listview in meinem Programm ändern... Die Hintergrund- und Textfarbe kann ich ja auch unabhängig von den Systemeinstellungen verändern, nur dann passt dann eben manchmal die Farbe der Linie nicht mehr dazu.
|
Re: Trennlinienfarbe/Style bei gruppierter Listview..
Ich kann über LVM_SETGROUPMETRICS sogar die Farbe der Gruppencaptions bestimmen! Umso mehr verwundert es mich, dass es anscheinend keine Schnittstelle für diese Trennline gibt...
Ich habe mir jetzt mal eine Funktion gebastelt um diese Linie umzufärben:
Delphi-Quellcode:
Diese Funktion läuft eigentlich ganz gut, wenn sie onPaint und onResize eingebaut wird, allerdings aktualisiere ich den Listview ab und zu mal und dabei wird die blaue Linie trotz explizitem Aufruf der Funktion nach den Änderungen manchmal nicht übermalt, bzw. zu schnell mit der Originalgrafik überzeichnet.
procedure TMain.GrayLine;
var n, m: integer; Grayshade, Red, Green, Blue: Byte; PixelColor: Longint; begin for n := 0 to ListView1.Canvas.ClipRect.Bottom - ListView1.Canvas.ClipRect.Top - 1 do begin if ListView1.Canvas.Pixels[0, n] <> ListView1.Color then begin for m := 0 to ListView1.Canvas.ClipRect.Right - ListView1.Canvas.ClipRect.Left - 1 do begin PixelColor := ColorToRGB(ListView1.Canvas.Pixels[m, n]); Red := PixelColor; Green := PixelColor shr 8; Blue := PixelColor shr 16; Grayshade := Round(0.3 * Red + 0.6 * Green + 0.1 * Blue); // Umwandeln in Graustufen ListView1.Canvas.Pixels[m, n] := RGB(Grayshade, Grayshade, Grayshade); end; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz