Das ist kein großes Problem, da das ganze selbstverständlich gekapselt ist. Die aktuellen Quelltexte möchte ich nicht posten, da es sich nicht um ein Open Source Projekt handelt. Ich poste aber einmal die alte, noch nicht so schön geschriebene Variante von vor 5 Jahren. Die entsprechende
Unit liegt im Anhang.
Benutzung:
Die
Unit GraphicUtilities in die uses, in Header.Options des VirtualStringTrees hoOwnerDraw aktivieren und diese beiden Events füllen:
Delphi-Quellcode:
procedure TYourForm.YourVirtualStringTreeAdvancedHeaderDraw(Sender: TVTHeader; var PaintInfo: THeaderPaintInfo;
const Elements: THeaderPaintElements);
begin
DrawListViewHeader(Sender, PaintInfo, Elements, HOVER_TYPE_DOUBLE);
end;
procedure TYourForm.YourVirtualStringTreeHeaderDrawQueryElements(Sender: TVTHeader;
var PaintInfo: THeaderPaintInfo; var Elements: THeaderPaintElements);
begin
Elements := [hpeBackground, hpeText];
end;
Ich denke das zeigt wie es funktioniert, mehrzeilig usw. müsste noch eingebaut werden.
Also wenn ich beim Überfliegen Deiner
Unit nichts übersehen habe, dann frag ich mich, wo der Teil mit dem mehrzeiligen Header sein soll.
Mehr als einen Gradient als Hintergrundbild zu zeichnen macht die
Unit doch nicht.
Grüße.
PS: Hier was rauskommt, wenn man obigen Quelltext verwendet (Header und eine Datenzelle).
http://img847.imageshack.us/img847/4314/vstheader.jpg