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 Dieser Tipp wurde bereits 15.281 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
sevWizard für VB5/6 Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |