Für größere Texteingaben verwendet man gerne das RTF-Control (RichTextBox-Control) - oder auch dann, wenn man einzelne Wörter oder Textpassagen farbig bzw. anders formatiert darstellen muss. Beim Navigieren innerhalb der RTF-TextBox mit den Cursortasten (nach oben bzw. nach unten) ertönt autom. ein Beepton, wenn sich der Cursor hierbei in der ersten bzw. letzten Zeile des Textes befindet. Wie man dieses "Beepsen" ausschalten kann, das verraten wir Ihnen heute. Option Explicit ' zunächst die benötigten API-Deklarationen Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" ( _ ByVal hWnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Private Const EM_LINEFROMCHAR = &HC9 Private Const EM_LINEINDEX = &HBB Private Const EM_GETLINECOUNT = &HBA ' Zeilennummer der aktuellen Eingabeposition ermitteln Public Function GetCurrentLine(hWnd As Long) As Long GetCurrentLine = SendMessage(hWnd, EM_LINEFROMCHAR, _ -1, ByVal 0&) + 1 End Function ' Anzahl der Zeilen der TextBox ermitteln Private Function GetLineCount(ByVal hWnd As Long) As Long GetLineCount = SendMessage(hWnd, EM_GETLINECOUNT, -1, 0&) End Function ' Tastatur-Ereignisse abfragen Private Sub RichTextBox1_KeyDown(KeyCode As Integer, Shift As Integer) With RichTextBox1 Select Case KeyCode Case vbKeyUp ' nach oben If GetCurrentLine(.hWnd) < 2 Then KeyCode = 0 End If Case vbKeyDown ' nach unten If GetCurrentLine(.hWnd) = GetLineCount(.hWnd) Then KeyCode = 0 End If End Select End With End Sub |