VB-Homepage Tipp 261

Controls an Usereingaben anpassen

Wann immer Sie in Ihrem Programm dem User freie Hand geben,
müssen Sie genau darauf achten, welche Eventualitäten sich daraus ergeben könnten.
So kann es passieren, das die vordefinierte Größe eines Controls der Länge des vom User eingegebenen Textes nicht mehr stand hält und der Text so unschön abgeschnitten wird.
Als Beispiel sei hier ein Command-Button gewählt, dessen Caption Eigenschaft vom User festgelegt werden soll. Damit auch bei längerer Eingabe, der Text noch komplett sichtbar ist, wird nach jeder Zeicheneingabe die Länge geprüft und ggf. das Control angepaßt.

Sie benötigen für einen Test auf Ihrer Form eine Textbox (Text1) für die Eingabe, einen Command-Button (Command1), der an die Eingabe angepaßt werden soll.

Setzen Sie beides untereinander und mit dem gleichen Wert für die Weite(Width).
Außerdem benötigen Sie ein Label-Objekt (Cacht unseren Text)
und einen Timer (übernimmt die Prüfung).

Um das Ganze zu realisieren, benötigen Sie das versteckte Label-Objekt
(Visible = False) dessen AutoSize Eigenschaft Sie auf True setzen.

Dazu definieren sie noch folgende Anweisungen.

Allgemein / TextExtent
Private Function TextExtent(txt As String) As Integer
Label1.Caption = txt
TextExtent = Label1.Width
End Function

Form / Load
Command1.Caption = Text1.Text 'Übergebt den vorhanden Text an den Button
Form1.Show 'damit SetFocus genutzt werden kann
Text1.SetFocus 'Text1 wird aktives Control
Text1 / KeyDown und MouseDown
timer1.Interval = 10

Timer1 / Timer
timer1.Interval = 0
X = TextExtent(Text1.Text)
Command1.Height = (CInt(X / Text1.Width) + 1) * 255
Command1.Caption = Text1.Text

Sie können nun mit F5 Ihr Projekt testen.

Tipp-Download

Quelle :

Zurück zur Übersichtsseite