![]() |
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)...
|
Re: ListView - Column-Header einfärben?
* Umleitung bau*
![]() |
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... |
Re: ListView - Column-Header einfärben?
|
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) |
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; |
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)
|
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. |
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.
|
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 18:51 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-2025 by Thomas Breitkreuz