Вам необходимо использовать функцию Printer.TextWidth и сравнить ее со свойством Printer.ScaleWidth для решения этой проблемы в Visual Basic 6. Он не выполняет автоматическое перенос строки для вас, как функция DOS.
Вы убедитесь, что шрифт, установленный на принтере, слишком правильно совпадает со шрифтом принтера. Для этого может потребоваться использовать один из шрифтов «принтера», с которым поставляется драйвер. В противном случае попробуйте использовать Courier New, который является шрифтом с фиксированным пробелом. В противном случае значение ширины текста не будет правильно сообщать ширину.
Альтернативой является использование строковой функции Len для подсчета количества символов и обработки усечения самостоятельно, если оно превышает 89 символов.,
Что-то вроде
Do Until LineToPrint = ""
TempD = Len(LineToPrint)
If TempD > 89 Then
Print Mid$(LineToPrint,1, 89)
LineToPrint = Right$(LineToPrint,TempD-89)
Else
Print LineToPrint
LineToPrint = ""
End If
Loop
Если вам нравятся рекурсивные функции, вы можете написать это так:
Private Sub PrintLine(ByVal LineToPrint As String, ByVal Width As Integer)
TempD = Len(LineToPrint)
If TempD > Width Then
Printer.Print Mid$(LineToPrint, 1, Width)
LineToPrint = Right$(LineToPrint, TempD - Width)
PrintLine LineToPrint, Width
Else
Printer.Print LineToPrint
End If
End Sub