Memo Breite an Inhalt anpassen



  • Hallo, zur Laufzeit werden Memo Felder erzeugt. Das Feld soll nur so breit sein, dass man den Inhalt lesen kann, aber nicht breiter. Ich finde dazu leider keine Informationen. Kann mir jemand helfen ?



  • Geht sowas:

    Alle Zeilen eines Memos durchlaufen und für jede Zeile die Breite der Zeile bestimmen. Dazu kannst du TCanvas::TextWidth oder GetTextExtentPoint32 aus der WinAPI benutzen. Dazu noch einen Offset für Ränder etc draufrechnen.

    ?



  • Edit: Hier stand was, aber: Sorry, das war nicht die Antwort auf die Kernfrage. 😃 😃

    @docShoe: Wenn er WordWrap von TMemo nicht auf True gesetzt hat, dürfte das damit problemlos funktionieren. 😉



  • Was war denn die Kernfrage? Ob ihm jemand helfen kann?



  • DocShoe schrieb:

    Was war denn die Kernfrage? Ob ihm jemand helfen kann?

    Nach meinen Verständnis, wie er die Breite des Memo Feldes berechnen kann, damit diese nicht breiter als der "breiteste" Text des Inhalts ist.
    Hab meinen ersten Beitrag nochmal editiert zum besseren Verständnis. 😉



  • Hab es so gelöst. Den Text erst in ein unsichtbaren Label übertragen und dann so:

    memo[iCountMemo]->ClientWidth = Label2->Canvas->TextWidth(frmDefineEvent->Memo1->Text);
    	memo[iCountMemo]->ClientHeight = Label2->Canvas->TextHeight(frmDefineEvent->Memo1->Text);;
    

Log in to reply