Hi,
wo das Problem liegt:
Es ist kein Problem, die Headerhöhe einer Listview zu ändern:
Delphi-Quellcode:
var hdr: THandle;
begin
hdr:=ListView_GetHeader(ListView1.Handle);
SetWindowPos(hdr, 0 , 0, 0, Listview1.width, 50, 0 );
InvalidateRect(hdr,nil,True);
Leider wird dann aber die linke obere Ecke der "Restlistview" (also der eigentlichen Liste) nicht automatisch angepasst. Ergebnis: Je nach dem, was gerade vorne ist, wird etwas "übermalt".
Das Rechteck der Restlistview zu bekommen, ist auch kein Problem. (Linke obere Ecke = Linke obere Ecke des Topitems).
Ich habe jedoch noch keine Möglichkeit gefunden, die auch (entsprechend der neuen Headerhöhe) zu setzen. (Dazu müsste man direkt rankommen, aber wie...?)
Man könnte natürlich im OwnerDraw alle Items verschieben. Nur, dann delegiert man das Problem nach unten. Und im Sinne des Laufzeitverhaltens wäre das wohl nicht.
Also, eine echte Lösung wäre das wahrscheinlich nicht.
Ich habe nun etwas gefunden, wie man die Itemheight insgesamt ändern kann. Vielleicht kann man damit etwas zurechtdrehen.
Mal sehen...
Gruß
Mattze