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
 
Weitere Links zum Thema
Anzahl Zeilen, Wörter und Zeichen in Text-Datei ermitteln
Textbox-Inhalt speichern und einlesen

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: [ 1178 ]

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