Tipp 0336 Cursor in TextBox (Zeile) positionieren
Autor/Einsender:
Datum:
  Angie
26.05.2003
Entwicklungsumgebung:   VB 5
Die SelStart-Eigenschaft der TextBox gibt den Anfangspunkt des ausgewählten Textes zurück oder legt ihn fest und zeigt die Position der Einfügemarke an, wenn kein Text ausgewählt ist. Prinzipiell ist es also kein Problem, den Cursor an einer bestimmten Stelle in der TextBox zu positionieren. Möchte man jedoch die Einfügemarke in einer bestimmten Zeile positionieren, oder aber auch die gesamte Zeile zu markieren, muss man die API-Funktion SendMessage zu Hilfe nehmen, um den Anfang bzw. das Ende der entsprechende Zeile zu ermitteln.
 
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_GETLINECOUNT = &HBA
Private Const EM_LINEINDEX = &HBB
Private Const EM_LINELENGTH = &HC1
Private Const EM_SETSEL = &HB1

Private Sub optSelection_Click(Index As Integer)
  Dim lngLineIndex As Long
  Dim lngLineCount As Long

  lngLineIndex = CLng(txtLineIndex.Text)
  SelectTextBoxLine Text1, lngLineIndex, Index
End Sub

Private Sub SelectTextBoxLine(ByVal TxtBox As TextBox, _
    ByVal LineIndex As Long, ByVal Index As Integer)

  Dim lngFirstCharPos As Long
  Dim lngLineLength As Long

  If LineIndex <= 0 Then Exit Sub

    With TxtBox
      'Position des ersten Zeichens in der Zeile ermitteln:
      lngFirstCharPos = SendMessage(.hwnd, EM_LINEINDEX, _
            LineIndex - 1, ByVal 0&)

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

      Select Case Index
        Case 0
          'Die gesamte Zeile markieren:
          .SelStart = lngFirstCharPos
          .SelLength = lngLineLength

        Case 1
          'Cursor ans Ende der Zeile setzen:
          .SelStart = lngFirstCharPos + lngLineLength

        Case 2
          'Cursor an den Anfang der Zeile setzen:
          .SelStart = lngFirstCharPos
      End Select

      .SetFocus
    End With
End Sub
 
Weitere Links zum Thema
Cursor-Position in TextBox ermitteln
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  (4,1 kB) Downloads bisher: [ 1236 ]

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