vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
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:     [ Jetzt bewerten ]Views:  12.597 
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

Dieser Tipp wurde bereits 12.597 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


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.
 
   

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

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel