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 4.478 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv (einschl. Beispielprojekt!) Ein absolutes Muss - Mehr als 650 MByte geballtes Wissen! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - Online-Update-Funktion u.v.m. |
Neu! sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Buchempfehlung Tipp des Monats Arne Elster Stop Button der IDE abfangen End-Anweisung und Stop-Button beim Ausführen dre Anwendung innerhalb der IDE abfangen, um Subclassing u.ä. rechtzeitig abzubrechen sevZIP30 Pro DLL ![]() Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
||||||||||||||||
|
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. |
|||||||||||||||||


Text im Blocksatz ausgeben



