vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Grafik und Font · Font & Text   |   VB-Versionen: VB4, VB5, VB615.07.03
Text im Blocksatz ausgeben

Eine Funktion, um Texte im Blocksatz auszugeben

Autor:   E7Bewertung:  Views:  15.292 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Um Text im Blocksatz auszugeben, benötigen Sie lediglich eine Picturebox und diesen Tipp:

Option Explicit
 
Private Const LongText As String = "Dies ist ein sinn- und " & _
    "einfallsloser, aber ellenlanger Text mit einigen Satzzeichen, " & _
    "den wir zur Anzeige in der Picturebox benötigen. Ohne solche " & _
    "langen Sätze wäre es nicht möglich, den sogenannten BLOCKSATZ-" & _
    "EFFEKT zu sehen. Dieser Blocksatzeffekt soll den Text genau aus" & _
    "richten. Dazu wird der Zwischenraum der einzelnen Wörter einfach" & _
    " vergrößert. Allmählich sollte es mit Text reichen; allerdings " & _
    "ist das Ergebnis noch immer so kurz und eindruckslos."
Private Sub Form_Load()
  ' Wichtig!
  Picture1.AutoRedraw = True
End Sub
Private Sub Form_Resize()
  If Me.WindowState <> vbMinimized Then
    ' PictureBox positionieren
    With Picture1
      .Left = 0
      .Top = 0
      .Width = Me.ScaleWidth
      .Height = Me.ScaleHeight
      .Cls
    End With
 
    ' Text im Blocksatz ausgeben
    PrintBlocksatz Picture1, LongText
  End If
End Sub
' beliebigen Text im Blocksatz auf einer 
' PictureBox ausgeben (oder auch Drucker)
Private Sub PrintBlocksatz(PicBox As Object, _
  ByVal OutputText As String, _
  Optional ByVal LeftMargin As Long = 80, _
  Optional ByVal RightMargin As Long = 80, _
  Optional ByVal TopMargin As Long = 80)
 
  Dim S As String
  Dim AP As Long
  Dim T As String
  Dim L As Long
  Dim V As Variant
  Dim O As String
  Dim N As Long
  Dim C As Long
  Dim aSM As Long
 
  With PicBox
    aSM = .ScaleMode
    .ScaleMode = vbTwips
    S = OutputText
    AP = TopMargin
    Do While Len(S) > 0
      Do While Len(S) > 0
        If InStr(1, S, " ") > 0 Then
          T = Left(S, InStr(1, S, " ") - 1)
        Else
          T = S
        End If
        If .TextWidth(O & " " & T) > .ScaleWidth - _
          LeftMargin - RightMargin Then
          Exit Do
        Else
          If InStr(1, S, " ") > 0 Then
            O = O & " " & T
            S = Mid(S, Len(T) + 2)
          Else
            O = O & " " & S
            S = vbNullString
          End If
        End If
      Loop
 
      Do
        C = Len(O)
        O = Replace(O, "  ", " ")
      Loop While C > Len(O)
      O = Trim(O)
      V = Split(O, " ")
      O = Replace(O, " ", vbNullString)
 
      Do
        If UBound(V) = 0 And Len(S) > 0 Then
          O = vbNullString
          For C = 1 To Len(V(0))
            O = O & " " & Mid(V(0), C, 1)
          Next C
          O = Trim(O)
          V = Split(O, " ")
          O = Replace(O, " ", vbNullString)
       ElseIf Len(S) > 0 Then
          N = .ScaleWidth - LeftMargin - RightMargin
          N = N - .TextWidth(O)
          N = N / UBound(V)
          Exit Do
        Else
          N = .TextWidth(" ")
          Exit Do
        End If
      Loop
 
      L = LeftMargin
      For C = 0 To UBound(V)
        .CurrentX = L
        .CurrentY = AP
        PicBox.Print V(C)
        L = L + .TextWidth(V(C)) + N
      Next C
      AP = AP + .TextHeight(O)
      O = vbNullString
    Loop
    .ScaleMode = aSM
  End With
End Sub

Wenn Sie das Beispiel starten, wird die PictureBox ganz oben an der Form ausgerichtet und der Text erscheint dort im Blocksatz.

Fügen Sie der Form jetzt noch einen CommandButton hinzu. Beim Klick auf den Button wird der Text dann ausgedruckt - natürlich ebenfalls im Blocksatz.

Private Sub Command1_Click()
  ' Text im Blocksatz ausdrucken
  PrintBlocksatz Printer, LongText
  Printer.EndDoc
End Sub



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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle 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.