Delphi-PRAXiS
Seite 1 von 2  1 2      

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 ListView - Column-Header einfärben? (https://www.delphipraxis.net/59685-listview-column-header-einfaerben.html)

FriFra 27. Dez 2005 11:24


ListView - Column-Header einfärben?
 
Wie kann ich die Farbe der Spaltentitel in einer ListView ändern? Standard ist ja immer clBtnFace... ich würde das ganze jedoch lieber komplett selber zeichnen (inkl Border)...

Helmi 27. Dez 2005 12:47

Re: ListView - Column-Header einfärben?
 
* Umleitung bau* http://www.dbr-software.de/delphi/colorcol.php

FriFra 1. Jan 2006 15:58

Re: ListView - Column-Header einfärben?
 
Hm... daer Code gefällt mir nicht so gut, da ma dafür zuvier "basteln" muss...

Vielleicht geht das ja auch irgendwie direkter mit Messages?
Delphi-Quellcode:
const
  LVM_GETHEADER = LVM_FIRST + 31;
var
  hHeader: THandle;
begin
  {handle vom header}
  hHeader := SendMessage(ListView1.Handle, LVM_GETHEADER, 0, 0);

  SendMessage(hHeader, ??? , ColorToRGB(clRed), 1); //<- Vielleicht hat noch jemand eine Idee...

100nF 1. Jan 2006 16:52

Re: ListView - Column-Header einfärben?
 
hi,

ich wollte das auch schon machen, und ich habs so geschafft: klick

FriFra 1. Jan 2006 17:35

Re: ListView - Column-Header einfärben?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Naja, das Ergebnis ist auch nicht 100% brauchbar...
Der Bereich des Headers, wo sich keine definierte Column befindet wird nicht eigefärbt (s. Anhang)

100nF 1. Jan 2006 18:15

Re: ListView - Column-Header einfärben?
 
also bei mir wird auch dieser teil eingefärbt.
wahrscheinlich liegt es daran, dass ich den code noch ein bisschen abgeändert habe.
ich habe ihn mal aus dem source meines programmes rauskopiert:
Delphi-Quellcode:
procedure TForm1.HeaderWndProc1(var Message: TMessage);
Var XCanvas: TCanvas;
    XDC: HDC;
    ARect: TRect;
    i:integer;
    Spaltenanfang:integer;
begin
  if Assigned(FOldWndProc1) then
    Message.Result := CallWindowProc(FOldWndProc1, FHeader1, Message.Msg,
                                        Message.WParam, Message.LParam);
  case Message.Msg of
    WM_PAINT:
    begin
      XCanvas := TCanvas.Create;
      XDC := GetWindowDC(FHeader1);
      try
        XCanvas.Handle := XDC;
        Spaltenanfang:=0;
        Windows.GetClientRect(FHeader1, ARect);
        Arect.left:=Spaltenanfang;
        Arect.right:=Spaltenanfang+listview1.width;
        InflateRect(arect,-1,-1);
        //Hintergrund
        XCanvas.Brush.Color:=listviewheaderscolor;
        xcanvas.FillRect(arect);
        Frame3d(XCanvas, ARect, clBtnHighlight,clBtnShadow,1);
        for i:=0 to listview1.Columns.Count-1 do
          begin
            //rect der aktuellen Spalte ermitteln
            Windows.GetClientRect(FHeader1, ARect);
            Arect.left:=Spaltenanfang;
            Arect.right:=Spaltenanfang+listview1.Column[i].Width;
            inc(Spaltenanfang,listview1.Column[i].Width);
            InflateRect(arect,-1,-1);
            //Hintergrund
            XCanvas.Brush.Color:=listviewheaderscolor;
            xcanvas.FillRect(arect);
            Frame3d(XCanvas, ARect, clBtnHighlight,clBtnShadow,1);
            //Text ausgeben
            drawtext(Xcanvas.Handle,pchar(listview1.Column[i].caption), length(listview1.Column[i].caption),arect,dt_left);
          end;
      finally
        ReleaseDC(FHeader1, XDC);
        XCanvas.Free;
      end;
    end;
  end;
end;

FriFra 1. Jan 2006 18:25

Re: ListView - Column-Header einfärben?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ist schon besser ;) ... ABER jetzt wirde der Bevel falsch gezeichnet (s. Anhang)

100nF 1. Jan 2006 18:32

Re: ListView - Column-Header einfärben?
 
ja klar, aber das ist ja nur der letzte bevel...

mir macht das nichts aus.
wenns dir nicht passt, kannst du es ja versuchen zu ändern.

Luckie 1. Jan 2006 18:35

Re: ListView - Column-Header einfärben?
 
@FriFra: würdest du bitte die Screenshots anhängen? In zwei Wochen sind die von deinem Server verschwunden und niemand kan mehr mit deinem Posting was anfangen.

FriFra 1. Jan 2006 18:38

Re: ListView - Column-Header einfärben?
 
Ok, mach ich... ABER bisher hab ich noch nie irgendwelche Bilder aus dem bettr. Ordener auf meinem Server gelöscht. Warum auch?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:06 Uhr.
Seite 1 von 2  1 2      

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