|
Tipp 0227
|
Zeilen zählen in einer TextBox
|
|
|
Autor/Einsender: Datum: |
|
Detlev Schubert 21.04.2002 |
|
Entwicklungsumgebung: |
|
VB 5 |
|
|
Bieten Sie Ihren Usern auch, wie es bei vielen professionellen Text-Editoren Standard ist, die Möglichkeit nicht nur die Anzahl der Zeilen in einer
TextBox zu zählen, sondern auch noch die Zeile in der sich gerade der Cursor befindet, anzuzeigen. Mit der Api-Funktion
SendMessage ist dies mit wenigen Handgriffen möglich.
|
Sicherlich ist dies auch mit VB-Mitteln möglich, hat aber den entscheidenden Nachteil, dass es sehr umständlich zu programmieren ist, da eine Zeile in der Textbox neben dem harten Umbruch durch die Entertaste (vbCrLf) auch durch einen weichen Umbruch (vbCr) umgebrochen werden kann.
|
|
|
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
Const EM_GETLINECOUNT = &HBA
Const EM_LINEFROMCHAR = &HC9
Private Sub Command1_Click()
Dim DateiText As String
Dim fmp As Integer
fmp = FreeFile
With CommonDialog1
.Filter = "Text-Datei|*.txt"
.ShowOpen
If Trim$(.FileName <> vbNullString) Then
If Trim$(.FileName) = "*.txt" Then Exit Sub
Open .FileName For Input As #fmp
DateiText = Input(LOF(fmp), 1)
Close #fmp
If Len(DateiText) > 32000 Then
MsgBox "Der geladene Text war grösser als 32 KB." & _
vbCrLf & "Er und wurde daher gekürzt.", _
vbInformation + vbOKOnly, Form1.Caption
DateiText = Left$(DateiText, 32000)
End If
Text1.Text = DateiText
Text1.SetFocus
Else
Exit Sub
End If
End With
End Sub
Private Sub Text1_Change()
Dim LineCount As String
LineCount = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0&)
Label3.Caption = " " & LineCount
End Sub
Private Sub Timer1_Timer()
Dim LineCount As String
LineCount = SendMessage(Text1.hwnd, EM_LINEFROMCHAR, -1, 0&)
Label2.Caption = " " & LineCount + 1
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 (3
kB)
|
Downloads bisher: [ 1190 ]
|
|
|