TListView und Zeilenumbruch
-
hallo
kann mir jemand sagen wie und ob man bei einem TListView Item bzw. SubItem einen zeilenumbruch machen kann? Ich meine jetzt nicht WordWrap sondern einen echten zeilenumbruch. Hoffe das sowas geht
-
cbuilder452 schrieb:
Ich meine jetzt nicht WordWrap sondern einen echten zeilenumbruch.
Was ist da für dich der Unterschied?
Prinzipiell wird es wohl darauf hinauslaufen, mit OnDrawItem alles selbst zeichnen.
-
der unterschied ist für mich bei einem echten zeilenumbruch kann ich diesen bestimmen wann er stattfinden soll.
wie genau geht dies dann? ich kriege standardmässig nur einen dicken strich dort wo ein zeilenumbruch stattfinden soll.
-
-
Hallo
Jansen schrieb:
Prinzipiell wird es wohl darauf hinauslaufen, mit OnDrawItem alles selbst zeichnen.
bis bald
akari
-
cbuilder452 schrieb:
-
aber wie genau macht man sowas?
-
Hallo
Zum allgemeinen Verständniss siehe die Builderhilfe zu TListView::OnDrawItem, und sowie auch alle andern OnDraw... Events. Zu TStringGrid ist dazu einiges in der FAQ hier im Forum zu finden.
Der wichtige Unterschied zu TStringGrid ist bei TListView, das auch im Report-Modus ein Item nur genau einen Event bekommt, nicht für jedes SubItem eins. Das bedeutet das im Report-Modus also der im Event übergebene Raum (TRect) auf die einzelnen Items aufgeteilt werden muß, meistens anhand der den einzelnen Spalten zugewiesenen Breiten.In deinem Fall ist nur die Textausgabe manuell zu machen. Du kannst also entweder den Text des (Sub-)Items selber anhand der Zeilenumbrüche auseinander nehmen und per TCanvas::TextOut ausgeben, oder du verwendest die WinAPI-Funktion DrawText, das kann die Zeilenumbrüche bei entsprechend übergebenen Flag selber umsetzen.
bis bald
akari
-
danke
-
Ich habe das gleiche Problem und nutze den C++Builder 2009.
Beim Suchen bin ich auf diesen Beitrag gestoßen.
Nun meine Frage:
gibt es hier eine leichtere Möglichkeit der mehrzeiligen Darstellung ( ich habe bisher das entsprechende Häkchen noch nicht gefunden), oder muss auch hier selbst programmiert werden ?
-
Hallo
TListView kann von sich aus im Report-Modus kein mehrzeiligen Text anzeigen. Zeilenumbrüche werden bei der Anzeige einfach ignoriert.
Aber im Icon-Modus werden die Zeilenumbrüche richtig dargestellt, wenn man sie direkt zuweist :ListView1->Items->Item[0]->Caption = "a\r\nb";
bis bald
akari
-
Hallo akari,
Dank erstmal.
das heißt es ist nicht möglich, dass der Zeilenumbruch automatisch eingefügt wird, wenn ich zur Laufzeit die Spaltenbreite variiere.
Ich vergaß zu erwähnen, wie du richtig erkannt hast, dass ich die ReportView nutzen möchte.
-
Hallo
Nein das macht TListView nicht. Texte über die Spaltenbreite werden abgeschnitten, dafür sollte dann ein Tooltip mit dem ganzen Text bei Mauskontakt automatisch erscheinen.
Der Report-Modus ist generell auf gleiche Zeilenhöhe ausgerichtet. Es ist meines Wissens nach nicht möglich einer einzelnen Zeile eine andere Höhe zu geben als anderen.bis bald
akari