vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Controls · TextBox & RichTextBox   |   VB-Versionen: VB4, VB5, VB606.04.07
Zeileninhalt einer RTF-TextBox ermitteln

Hier werden zwei Möglichkeiten aufgezeigt, wie man den Inhalt einer bestimmten Zeile aus einer RTF-TextBox auslesen kann.

Autor:   UnbekanntBewertung:     [ Jetzt bewerten ]Views:  8.736 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Nachfolgend werden zwei Möglichkeiten aufgezeigt, wie man den Inhalt einer bestimmten Zeile aus einer RTF-TextBox auslesen kann.

Variante 1:
Nachfolgende Funktion ermittelt den Inhalt einer bestimmten Zeile mit Hilfe des Windows API. Die Funktion berücksichtigt hierbei auch weiche Zeilenumbrüche, d.h. automatische Wortumbrüche am rechten Rand des Controls. Es wird somit der Inhalt der angegebenen Zeile ermittelt, so wie diese auch aktuell im RTF-Control angezeigt werden.

Option Explicit
 
' Benötigte API-Deklarationen
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_LINELENGTH As Long = &HC1
Private Const EM_LINEINDEX As Long = &HBB
Private Const EM_GETLINE = &HC4
Private Function GetLineText(ByVal hWnd As Long, _
  ByVal nLine As Long) As String
 
  ' Diese Funktion erkennt die autom. eingefügten Zeilenumbrüche 
  ' und gibt den Text entsprechend zurück!
  Dim nFirstCharPos As Long
  Dim nLineLength As Long
 
  On Error GoTo ErrHandler
 
  ' Position des erstens Zeichens der angegebenen Zeile ermitteln:
  nFirstCharPos = SendMessage(hWnd, EM_LINEINDEX, nLine - 1, ByVal 0&)
 
  ' Anzahl Zeichen der angegebenen Zeile ermitteln:
  nLineLength = SendMessage(hWnd, EM_LINELENGTH, nFirstCharPos, ByVal 0&)
 
  Dim Buffer() As Byte
  Dim LineText As String
 
  ReDim Buffer(nLineLength + 1)
  Buffer(0) = nLineLength + 1
 
  ' Inhalt der angegebenen Zeile in ByteArray speichern
  SendMessage hWnd, EM_GETLINE, nLine - 1, Buffer(0)
 
  ' Byte-Array nach String umwandeln
  GetLineText = Left$(StrConv(Buffer, vbUnicode), nLineLength)
  On Error Goto 0
 
ErrHandler:
End Function

Aufrufbeispiel:

' Inhalt der 3. Zeile ermitteln
Dim sLine As String
sLine = GetLineText(RichTextBox1.hWnd, 3)

Variante 2:
Im Gegensatz zur Variante 1 berücksichtigt die Variante 2 keine autom. eingefügten "weichen" Zeilenumbrüch, sondern sucht gezielt nach festen Zeilenumbrüchen, um den Inhalt der angegebenen Zeile zu ermitteln.

Public Function GetLineFromRTFB(oRTFBox As Object, _
  ByVal nLine As Long) As String
 
  ' Inhalt der angegebenen Zeile ermitteln, wobei nur 
  ' feste Zeilenumbrüche berücksichtigt werden
 
  Dim nLineCurrent As Long
  Dim nLineLength As Long
  Dim sLine As String
  Dim sTemp As String
 
  ' Zähler für die Zeilen
  nLineCurrent = 0 
  sTemp = oRTFBox.Text
 
  Do While Len(sTemp) > 0 And nLineCurrent <> nLine    
    nLineCurrent = nLineCurrent + 1
    nLineLength = InStr(sTemp, vbCrLf)
    If nLineLength > 0 Then
      ' Inhalt der aktuellen Zeile ermitteln
      sLine = Left$(sTemp, nLineLength - 1)
      sTemp = Mid$(sTemp, nLineLength + 2)
    Else
      ' letzte Zeile
      sLine = sTemp: sTemp = ""
    End If
  Loop
 
  If nLineCurrent <> nLine Then
    ' Zeile nicht gefunden
    sLine = ""
  End If
 
  GetLineFromRTFB = sLine
End Function

Aufrufbeispiel:

' Inhalt der 3. Zeile ermitteln
Dim sLine As String
sLine = GetLineText(RichTextBox1, 3)

Dieser Tipp wurde bereits 8.736 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (3 Beiträge)

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel