![]() |
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
|
|
|
|
|
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: [ 1233 ]
|
|
|