Printer Objekt

Dusty00

Mitglied
Hy,

Ich habe folgendes Problem, ich möchte eine Rechnungsvorlage mittels Printer Funktion ausdrucken. Wenn allerdings der Text einer Spalte zu lang ist wird der Text in der daneben liegenden Spalte überschrieben, bzw. habe ich eine Funktion gefunden die den Text abschneidet. Ich hätte aber gerne, dass der Text, der zu lang ist einfach in die nächste Zeile darunter gedruckt wird. Wisst ihr, wie das funktionieren könnte?
Hier der Code zum Abschneiden des Textes, vielleicht kann man ja daraus was basteln!?

Code:
Private Function PrintCheckLength(ByVal sText As String, _
  ByVal sWidth As String) As String

  Dim iLen As Integer
  
  If Left$(sWidth, 1) = "^" Or Left$(sWidth, 1) = ">" Then
    iLen = Val(Mid$(sWidth, 2))
  Else
    iLen = Val(sWidth)
  End If
  
  sText = RTrim$(sText)
  With Printer
    ' wenn rechtsbündig, Platz für ein
    ' abschliessendes Leerzeichen lassen
    ' (als Trenner zum nachfolgenden Text)
    If Left$(sWidth, 1) = ">" Then _
      iLen = iLen - .TextWidth(" ")
    
    ' wenn Text zu lang, Text am Ende kürzen
    While .TextWidth(sText) > iLen
      sText = Left$(sText, Len(sText) - 1)
    Wend
    
    If Left$(sWidth, 1) = "^" Then
      ' Text zentrieren
      While .TextWidth(sText) < iLen
        sText = " " + sText + " "
      Wend
    ElseIf Left$(sWidth, 1) = ">" Then
      ' Text rechtsbündig
      While .TextWidth(sText) < iLen
        sText = " " + sText
      Wend
      sText = sText + " "
    End If
  End With
  
  PrintCheckLength = sText
End Function

Vielen Dank!

mfg
 
Zurück