Rubrik: Controls · TextBox & RichTextBox | VB-Versionen: VB4, VB5, VB6 | 12.10.01 |
MultiLine-TextBox zeilenmässig begrenzen Dieser Tipp zeigt, wie sich eine MultiLine-Textbox auf eine bestimmte Anzahl Zeilen (nicht Zeichen) begrenzen lässt. | ||
Autor: Dieter Otter | Bewertung: | Views: 17.247 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Ja, so eine MultiLine-TextBox ist schon etwas feines Da lässt sich doch richtig viel Text eingeben.
Was aber, wenn man nur eine ganz bestimmte maximale Anzahl Zeilen zulassen möchte?
Dann helfen wir, oder besser gesagt, in diesem Fall das Windows-API
Und zwar lässt sich mit Hilfe der SendMessage-Funktion u.a. auch die aktuelle Anzahl der Zeilen einer TextBox ermitteln. Und mit diesem "Wissen" ist es doch ein leichtes, die TextBox entsprechend zeilenmässig zu begrenzen.
Und hier die Lösung:
' Folgende API-Deklaration wird benötigt Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" ( _ ByVal hWnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long Private Const EM_GETLINECOUNT = &HBA ' Beispiel: Max. 3 Zeilen Private Const MAXLINE = 3 Private Sub Text1_KeyPress(KeyAscii As Integer) Dim rVal As Long ' Anzahl Zeilen ermitteln und prüfen rVal = SendMessage(Text1.hWnd, EM_GETLINECOUNT, -1, 0&) If KeyAscii = 13 Then If rVal >= MAXLINE Then KeyAscii = 0 Else If rVal > MAXLINE Then KeyAscii = 0 End If End Sub