Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Trennlinienfarbe/Style bei gruppierter Listview.. (https://www.delphipraxis.net/13854-trennlinienfarbe-style-bei-gruppierter-listview.html)

FriFra 28. Dez 2003 04:19


Trennlinienfarbe/Style bei gruppierter Listview..
 
Ist es irgendwie möglich die Farbe der Trennlinie in einer gruppierten Listview zu ändern?
http://www.frifra.de/Temp/lvg.gif
Standard ist ja wohl dieses Blau... ich will aber nur in meinem Programm eine andere Farbe verwenden.

MathiasSimmack 28. Dez 2003 07:47

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, ... :?

MathiasSimmack 28. Dez 2003 08:40

Re: Trennlinienfarbe/Style bei gruppierter Listview..
 
Zitat:

Zitat von MathiasSimmack
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.

Da habe ich doch richtig vermutet. ;) Je nach Theme ändert sich die Farbe der Trennlinie. Ich würd´s daher so lassen wie es ist, FriFra. ´s gibt sonst nur Probleme, falls wirklich mal einer die Farbe als Hintergrund benutzt, die du für die Linie nimmst.

FriFra 28. Dez 2003 10:59

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.

FriFra 28. Dez 2003 17:36

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:
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz