Visual Basic - Technik, FAQ, Tricks, Beispiele

Home / Allgemein / Bugs / Alignment

Einzeilige TextBox ausrichten

Historie
15.05.2002Hinweis auf Clipboard-Problem (Dank an Daniel Jaeger)
26.01.2001Erste Version

Einleitung

Schlimm genug, dass die Alignment-Eigenschaft der TextBox nicht zur Laufzeit veränderbar ist.

Doch auch wenn man diese Eigenschaft schon zur Design-Zeit z.B. auf rechtsbündig (vbRightJustify) setzt, wird der in einer einzeiligen TextBox befindliche Text u.U. nicht ausgerichtet. Dieses Problem tritt insbesondere unter Windows 95/98 auf.

Workaround

Umgehen kann man dieses Problem, in dem man die MultiLine-Eigenschaft auf True setzt.

Folge-Problem

Dadurch kann der Benutzer aber u.U. mehrzeiligen Text dort eingeben, wo eigentlich keiner gewünscht ist. Daher sollte zusätzlich folgender Code in dem KeyPress-Ereignis der entsprechenden TextBox geschrieben werden, um die Eingabe einer neuen Zeile zu verhindern.

Private Sub Text1_KeyPress(KeyAscii As Integer)
  If KeyAscii = vbKeyReturn Then KeyAscii = 0
End Sub

Achtung: Das Einfügen eines mehrzeiligen Textes via Zwischenablage wird dadurch nicht verhindert. Daher müssen bei jedem Change-Ereignis etwaige Zeilenumbrüche eliminiert/ersetzt werden, etwa so:

Private Sub Text1_Change()
  TextboxRemoveNewlines Text1
End Sub
Sub TextboxRemoveNewlines(ByRef txt As TextBox)
  Dim SelStart As Long
  Dim SelLength As Long
  
  With txt
    If InStr(.Text, vbNewLine) Then
      SelStart = .SelStart
      SelLength = .SelLength
      .Text = Replace(.Text, vbNewLine, "| ")
      .SelStart = SelStart
      .SelLength = SelLength
      Beep
    End If
  End With
End Sub

© Jost Schwider, 26.01.2001-15.05.2002 - http://vb-tec.de/txtalign.htm