Hallo cooper111,
habe dies mit einer Picturebox und einem API-Befehl gelöst.
' frmMain ist der Name Deines Formulares, wo Du die Textbox hast
' txtbox ist der Name Deiner Textbox
' frmPrint ist der Name des Formulares, wo ich die Picturebox für den Ausdruck habe
Codeauszug:
Den kompletten Code in das Formular kopieren, wo Du die Picturebox hast.
___________________________________________________________________
Option Explicit
'Nicht wundern. Zwei mal Sendmessage ist schon ok.
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wp As Long, Ip As Any) As Long
Private Declare Function SendMessage1 Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long
Private Const EM_GETLINE = &HC4
Private Const EM_GETLINECOUNT = &HBA
Private Const MAX_CHAR_PER_LINE = &H100
Function PageCtnProc(inControl As Control) As Integer
Dim Max&, X&, pxStart&
pxStart = 150
Max = SendMessage(frmMain.txtbox.hwnd, EM_GETLINECOUNT, 0, 0&) - 1
inControl.Cls
inControl.Font.Size = 11
inControl.Font.Bold = False
For X = 0 To Max
inControl.CurrentX = ((5 - pxStart) * 480)
inControl.CurrentY = ((5 - pxStart) * 480) + inControl.TextHeight("H") * (X + 5)
inControl.Print GetLine(frmMain.txtbox, X)
DoEvents
Next X
End Function
Function GetLine(Text As TextBox, ByVal Line&) As String
Dim Lo%, Hi%, Result&, Buff$
Lo = MAX_CHAR_PER_LINE And &HFF
Hi = Int(MAX_CHAR_PER_LINE / &H100)
Buff = Chr$(Lo) & Chr$(Hi) & Space$(MAX_CHAR_PER_LINE - 2)
Result = SendMessage1(Text.hwnd, EM_GETLINE, Line, Buff)
GetLine = Left$(Buff, Result)
End Function
Private Sub Form_Load()
' picPreview Name der Picturepox
PageCtnProc Me.picPreview
End Sub
___________________________________________________________________
Aufrufen des Formulares tätige ich mit folgenden Code:
frmPrint.Show 1, Me
Probier dies mal aus. Sicherlich musst Du dies noch für Dich umstricken.
Vielleicht konnte ich Dir helfen.
Gruß ANI