vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Variablen/Strings · String-Operationen   |   VB-Versionen: VB4, VB5, VB613.05.02
Nachträglicher Wortumbruch nach x-Zeichen

Mit dieser Funktion lässt sich ein mehrzeiliger Text nachträglich auf eine frei festlegbare maximale Zeilenlänge formatieren.

Autor:   King KongBewertung:     [ Jetzt bewerten ]Views:  12.388 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Der nachfolgende Tipp zeigt, wie sich ein langer (mehrzeiliger) Text nachträglich auf eine frei festlegbare maximaleZeilenlänge formatieren lässt.

Die Funktion funcWordWrap erwartet hierbei zwei Parameter: den Text selbst und die neue maximale Zeilenlänge.

' Führt einen autom. Wort-Umbruch nach x-Zeichen durch
Public Function funcWordWrap(ByVal strText As String, _
  ByVal nLineLenght As Long) As String
 
  Dim strText1 As String
  Dim strText2 As String
  Dim strText3 As String
  Dim nTemp1 As Integer
  Dim nTemp2 As Integer
 
  ' Replace anLineLenght CR
  strText = Replace(strText, vbCr, " ")
  strText = Replace(strText, vbLf, " ")
  strText = Replace(strText, vbCrLf, " ")
  strText = Replace(strText, "  ", " ")
  strText = Replace(strText, "   ", " ")
 
  If LWord(strText) > nLineLenght Then
    ' Es wurde ein Wort gefunden, daß länger ist als
    ' die vorgegebene maximale Zeilenlänge!
    MsgBox "Should be: max.: " & _
      CStr(nLineLenght) & " characters."
    funcWordWrap = strText
  Else
    strText = Trim(strText)
    nTemp2 = 1
    For nTemp1 = 1 To Len(strText)
      If Mid$(strText, nTemp1, 1) = " " Then
        strText1 = strText1 & Mid$(strText, _
          nTemp2, (nTemp1 + 1) - nTemp2)
 
        If Len(strText1) + Len(strText2) > nLineLenght Then
          strText3 = strText3 & strText2 & vbCrLf
          strText2 = ""
          strText2 = strText2 & strText1
          strText1 = ""
          nTemp2 = nTemp1 + 1
          nTemp1 = nTemp2 + 1
 
        Else
          strText2 = strText2 & strText1
          strText1 = ""
          nTemp2 = nTemp1 + 1
          nTemp1 = nTemp1 + 1
        End If
 
      ElseIf nTemp1 = Len(strText) Then
        If Len(strText2) + Len(Mid$(strText, nTemp2, _
          (nTemp1 - nTemp2) + 1)) > nLineLenght Then
 
          strText3 = strText3 & strText2 & vbCrLf & _
            Mid$(strText, nTemp2, (nTemp1 - nTemp2) + 1)
 
        Else
          strText3 = strText3 & strText2 & _
            Mid$(strText, nTemp2, (nTemp1 - nTemp2) + 1)
        End If
       End If
 
     Next nTemp1
  End If
 
  funcWordWrap = strText3
End Function
' Ermittelt das längste Wort eines Strings und gibt
' die Länge zurück
Private Function LWord(strText As String) As Long
  Dim nCount As Integer
  Dim nTemp2 As Integer
  Dim nTemp3 As Integer
 
  nTemp2 = 1: nTemp3 = 1
  For nCount = 1 To Len(strText)
    If Mid$(strText, nTemp3, 1) = " " Then
      If nCount - nTemp2 > nTemp3 Then _
        nTemp3 = (nTemp3 - nTemp2) - 1
 
      nTemp2 = nCount
    End If
  Next nCount
 
  LWord = nTemp3
End Function

Die Funktion selbst prüft zunächst, ob sich innerhalb des Textes ein Wort befindet, daß länger ist, als die angegebene maximale Zeilenlänge. Ist dies der Fall, wird eine MsgBox ausgegeben. Der Funktionsrückgabewert ist dann der Originaltext ohne Veränderungen.

Beispiel für den Aufruf

' Text auf max. 70 Zeichen pro Zeile formatieren
txtMultiLine.Text = funcWordWrap(txtMultiLine.Text, 70)

Dieser Tipp wurde bereits 12.388 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.

Neue Diskussion eröffnen

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-2024 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