Tipp 0335 Cursor-Position in TextBox ermitteln
Autor/Einsender:
Datum:
  Angie
26.05.2003
Entwicklungsumgebung:   VB 5
Die SelStart-Eigenschaft der TextBox zeigt u.a. die Position der Einfügemarke (Cursor) an, auch wenn kein Text ausgewählt ist. Möchte man jedoch die Zeilennummer ermitteln, in der sich der Cursor befindet, muss man die API-Funktion SendMessage zu Hilfe nehmen. In diesem Beispiel wird ermittelt, in welcher Zeile sich die Einfügemarke befindet, wie viele Zeichen in der Zeile vorhanden sind sowie die Position des Cursors in der TextBox und in der Zeile selbst (ist ggf. unterschiedlich). Auch wird der Text der Zeile, in der sich die Einfügemarke befindet, ausgelesen.
 
Option Explicit

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_GETLINE = &HC4
Private Const EM_GETSEL = &HB0
Private Const EM_LINEFROMCHAR = &HC9
Private Const EM_LINEINDEX = &HBB
Private Const EM_LINELENGTH = &HC1

Private Sub Timer1_Timer()
  Dim lngHWnd As Long
  Dim lngCursorPos As Long
  Dim lngLineIndex As Long
  Dim lngFirstCharPos As Long
  Dim lngLineLength As Long
  Dim abytBuffer() As Byte
  Dim strRetVal As String

  lngHWnd = Text1.hwnd

  'Cursor-Position ermitteln:
  lngCursorPos = SendMessage(lngHWnd, EM_GETSEL, _
        0, ByVal 0&) \ &H10000

  'Zeilen-Index ermitteln:
  lngLineIndex = SendMessage(lngHWnd, EM_LINEFROMCHAR, _
        lngCursorPos, ByVal 0&)

  'Position des erstens Zeichens in Zeile ermitteln:
  lngFirstCharPos = SendMessage(lngHWnd, EM_LINEINDEX, _
        lngLineIndex, ByVal 0&)

  'Anzahl Zeichen in Zeile ermitteln:
  lngLineLength = SendMessage(lngHWnd, EM_LINELENGTH, _
        lngFirstCharPos, ByVal 0&)

  'Text in Zeile auslesen:
  ReDim abytBuffer(lngLineLength)
  abytBuffer(0) = lngLineLength

  SendMessage lngHWnd, EM_GETLINE, lngLineIndex, abytBuffer(0)
  strRetVal = Left$(StrConv(abytBuffer, vbUnicode), lngLineLength)
End Sub
 
Weitere Links zum Thema
Cursor in TextBox (Zeile) positionieren
Zeilen zählen in einer TextBox

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (3,4 kB) Downloads bisher: [ 1174 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Samstag, 28. Mai 2011