Rubrik: Grafik und Font · Sonstiges | VB-Versionen: VB6 | 26.02.09 |
Mehrzeiligen Text in einer Picturebox automatisch erstellen Automatische Erstellung von mehrzeiligem Text zur Anzeige mittels der Methode Print in einer Picturebox. | ||
Autor: Marcus Jacob | Bewertung: | Views: 12.642 |
www.jacob-software-development.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Vielleicht hatten Sie auch schon mal folgendes Problem: Sie wollen einen Text in einer Picturebox mittels der Print-Methode ausgeben, aber der Text ist länger als die Breite der Picturebox.
Schön wäre es hier, wenn der Text automatisch in der Picturebox umgebrochen würde.
Und so funktionierts:
- Erstellen Sie auf Ihrer Form eine Picturebox mit dem Namen Picture1.
- Fügen Sie der Form noch einen Button (Command1) hinzu.
- Kopieren Sie nachfolgenden Code in den Codeteil der Form
Option Explicit Private Sub Command1_Click() ' Text, der in der PictureBox angezeigt werden soll Dim s As String s = "Dies ist ein ganz langer Text, der in der Picturebox " & _ "angezeigt werden soll. Es kann allerdings sein, dass er " & _ "nicht ganz in die Box passt. Daher wird er automatisch " & _ "umgebrochen." ' Text-Ausgabe in der PictureBox Call PrintTextToPb(Picture1, s) End Sub
Private Sub PrintTextToPb(pb As PictureBox, ByVal sText As String) ' Drucken von Text in eine Picturebox Dim x As Long Dim sMLString As String Dim sTmp As String Dim sRest As String pb.Cls If pb.TextWidth(sText) > pb.ScaleWidth Then x = InStr(1, StrReverse(sText), " ") sTmp = sText While Not x = 0 If pb.TextWidth(Left(sTmp, Len(sTmp) - x)) < pb.ScaleWidth Then sMLString = sMLString & Left(sTmp, Len(sTmp) - x) & vbCrLf sRest = Right(sTmp, x - 1) If pb.TextWidth(sRest) < pb.ScaleWidth Then sMLString = sMLString & sRest x = 0 Else sTmp = sRest x = InStr(1, StrReverse(sTmp), " ") End If Else x = InStr(x + 1, StrReverse(sTmp), " ") End If Wend pb.Print sMLString Else pb.Print sText End If End Sub