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

https://www.vbarchiv.net
Rubrik: Grafik und Font · Sonstiges   |   VB-Versionen: VB626.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 JacobBewertung:  Views:  12.622 
www.jacob-software-development.deSystem:  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



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.