TListView und Zeilenumbruch



  • 😕



  • 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


Anmelden zum Antworten