Memofeld bei Eingabe vergrößern



  • ich erzeuge ein Memofeld. Nun will ich erreichen, dass bei Texteingabe sich automatisch die Breite anpasst und bei Returndruck auch entsprechend die Höhe. Wie kann ich so eine "Stretch"-Funktion erreichen ?



  • man könnte zum Beispiel mit OnKeyPress arbeiten

    void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
      // FormCreate: Edit1->Width = 50;
    
      if (Edit1->Text.Length() > 4)
      {
        Edit1->Width = Edit1->Text.Length() * x;
      }
    }
    

    mit dem Wert x muss man kompensieren, das ein zeichen ja größer als ein pixel ist... Die Werte stimmen also noch nicht ganz, aber auf die schnelle kann man das ja mal probieren.

    MfG
    Tippo

    PS: Vielleicht gibt es aber auch noch eine elegantere Methode ^^



  • Statt Text.Length() wäre hier eher die Verwendung von TCanvas::TextWidth (auch für TMemo) sowie TCanvas::TextHeight() angebracht. Beide Funktionen geben die Breite bzw. Höhe des angegebenen Textes in Pixel zurück.



  • ich sach doch, einer von den SpecialProggern findet noch ne bessere Lösung ^^ Aber die Idee war ja schon mal ganz gut.


Anmelden zum Antworten