TListView Column Header multiline / mehrzeilig
-
Gibt es eine Möglichkeit die Column Header eines TListView-Controls bei vsReport mehrzeilig darzustellen?
Bin für jede Hilfe dankbar
Gruß
-
Direkt unterstützt wird das vom VCL-Control wohl nicht.
Da müßtest du schon mittels OwnerDraw ran, s. z.B.
http://bcbjournal.org/bcbcaq/?loc=views&caq=21
https://groups.google.com/group/borland.public.delphi.vcl.components.writing.win32/msg/6991af6446563e82?hl=es
-
Nach einigen Versuchen muss ich sagen, dass ich gescheitert bin. Das CustomDraw ist ja ganz toll. Man kann alles selber Zeichen, Frame und Text, jedoch ist dass dann nicht mehr kompatibel zu den Style-Manifesten / Themes.
Zudem bringt das Setzen des Rect des Header-Columns, egal wie, keinen Erfolg. Per API kann man halt die Breite setzen, wie auch per VCL, jedoch nicht die Höhe. Das wurde von Microsoft scheinbar ausgespart.
Allerdings: Wenn man den Font größer setzt, wird auch die Höhe des Columns höher, also irgendwie geht das doch.
Und mehrzeiligen Text ...Daran ist sowieso nicht zu denken. Selbst per API, Holen des Columns und Setzten des Text mit "\n" bringt keinen Erfolg. Das Selbst-Zeichnen des "Canvas" inkl. "\n" macht dort keinen Sinn, weil die Höhe nicht manipulierbar ist...
Subclassing des ListView + "Berechnen" des notwendigen Fonts bzgl der Höhe des Columns + Zeichnen des Textes in der eigentlichen gewünschten Höhe sind nur Frickelei, mal abgesehen davon, dass es nicht Theme-kompatibel wäre....Und es beeinflusst ja dann auch jede Höhe, auch die der Items.Bin für jede Hilfe dankbar, also wenn jemand was weiß.... Das geht auch an die WinAPI-Fraktion, falls jemand hier einmal reinschaut
Grüße
Edit:
* Mit "Berechnen" meine ich das Errechnen einer benötigten Fontgröße um eine Columnhöhe in angegebenen Pixeln zu erreichen. Das wird nie auf Pixel genau sein....
-
Versuch's doch mal mit einer anderen Komponente. Ich habe mehrzeilige Header schon mit NextGrid (-> BergSoft) benutzt, das ich auch sonst empfehlen kann. Weiter eines Blickes wert wären KGrid und Virtual TreeView.