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:
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;
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.
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.