20. Apr 2024, 03:40
VB-fun.de - Beitragsübersicht zum VB-/VBA-Forum-Archiv 0422
  VB6: Textbreite ermitteln
 Von DjTommy
 eMail
 Am 22. Oktober 2009 um 16:10:25
 Frage Hallo VBFun - Team!
Ich habe folgendes Problem, ich schreibe gerade ein Programm mit Druckerfunktion.
Man tragt in Listview was ein, und druck es anschließend aus, indem ich es in die Picturebox quasi zeichne und dann und den Drucker sende.
Nun das alles ist kein Problem.
Da Problem steht darin wenn z.B. in der 1 spalte ein langer Text ist, und man Druck es aus, wird es in die Spalte2 hinein geschrieben.
Ich habe Fixe Position wo Spalte1, Spalte2 etc. anfängt.
jetzt brauche ich einen Code wo ich ermitteln kann ob die Textbreite überschreitet oder nicht.
wenn doch wird es halt in die nächste Zeile geschrieben.
ich habe einen Test Code geschrieben:
Option Explicit
Dim test As String, test1 As String
Private Sub Form_Load()
Dim I As Integer
test = SplitLines("mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", Form1, 5250)
test1 = SplitLines("#####################################################################################", Form1, 5250)
MsgBox test & vbNewLine & test1
End Sub
Public Function SplitLines(Txt As String, P As Object, W As Single) As String
Dim txtLen As Long, I As Long, buffer As String
txtLen = Len(Txt)
buffer = ""
For I = 1 To txtLen
buffer = buffer & Mid(Txt, I, 1)
If P.TextWidth(buffer) > W Then
'MsgBox P.TextWidth(buffer)
buffer = Mid(buffer, 1, Len(buffer) - 1)
'MsgBox P.TextWidth(buffer)
Exit For
End If
Next I
SplitLines = buffer
End Function
Wo ich herausfinden kann, ob die breite überschritten wird.
wenn ihr den Code mal anschaut merkt ihr das es nicht richtig funktioniert.
Denn "mmmm" ist viel kürzer als "###" ob wohl die textbreite fast identisch ist.
wie kann das sein wenn "mmm" wenn es abgeschnitten wurde und es hat die breite von 5280 und beim "###" eine abgeschnittene breite von 5355 hat, aber denn noch m viel schmäler ist als #
ich habe jetzt m und # auf gleiche Länge bzw. breite geschrieben:
 Option Explicit
Dim test As String, test1 As String
Private Sub Form_Load()
test = "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm"
test1 = "####################################################################################"
MsgBox test & vbNewLine & Me.TextWidth(test) & vbNewLine & test1 & vbNewLine & Me.TextWidth(test1)
End Sub
dann hat m eine breite von 10080 und # eine breite 8820
wie kann das sein wenn das jetzt gleichlang ist?
Mfg DjTommy
[ VB-/VBA-Forum | Archiv 0422 | Archiv-Übersicht ]
 Antworten
VB6: Textbreite ermitteln - DjTommy 22. Oktober 2009 um 16:10:25
Re: Textbreite ermitteln - r.mueller 22. Oktober 2009 um 16:40:26
Re: Textbreite ermitteln - DjTommy 22. Oktober 2009 um 17:08:49
Re: Textbreite ermitteln - DjTommy 22. Oktober 2009 um 17:37:29
Re: Textbreite ermitteln - Detlev Schubert 22. Oktober 2009 um 19:10:35
Re: Textbreite ermitteln - DjTommy 22. Oktober 2009 um 20:06:03

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB-/VBA-Forum | DirectX | DirectX-Forum | VB.Net | VB.Net-Forum | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum