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 |
|