TextBox: zeilenweises Auslesen und linksbündig ausdrucken

SendMessageAsString, SendMessageAsLong
Private Declare Function SendMessageAsString Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _
  ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Declare Function SendMessageAsLong Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _
  ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Buffer$, LCount%, ByteLo%, ByteHi%, N&, X&
Const EM_GETLINE = 196               Parameter nicht verändern (das ist keine Breite / Höhe).
Const EM_GETLINECOUNT = 186    Parameter nicht verändern (das ist keine Breite / Höhe).
Const MAX_CHAR_PER_LINE = 90  Zeilenbreite (darf aber nicht schmaler als die TextBox sein).
Wenn man den Wert erhöht, kann man die TextBox
Private Sub cmdAPIPrint_Click() beliebig verbreitern.
Printer.FontSize = 14
Printer.Print ""
Printer.Print Tab(12); "Überschrift"
Printer.Print ""
Printer.FontSize = 10
X = funcLineCount&()      Funktions-Aufruf zum Zählen der Zeilen in TextBox.
  For N = 1 To X            
   Buffer = funcLine$(N - 1) Zeilenweises Lesen.
   Printer.Print Tab(16); Buffer Zeilenweises Drucken -->
  Next N
Printer.Print Tab(15); "________________________________________________________________________"
Printer.EndDoc
End
End Sub
Private Function funcLineCount&()  
 LCount = SendMessageAsLong(Text1.hWnd, EM_GETLINECOUNT, 0, 0)
 funcLineCount& = LCount
End Function Parameter-Veränderung ohne Wirkung.
Private Function funcLine$(LineNumber As Long)
 ByteLo = MAX_CHAR_PER_LINE And (255)   Parameter nicht verändern (Ausgabebreite).
 ByteHi = Int(MAX_CHAR_PER_LINE / 256)
 Buffer$ = Chr$(ByteLo%) + Chr$(ByteHi%) + Space$(MAX_CHAR_PER_LINE - 2)
 X = SendMessageAsString(Text1.hWnd, EM_GETLINE, LineNumber, Buffer$)
 funcLine$ = Left$(Buffer$, X)
End Function
Bei der "normalen" Programmierung hingegen wird der ganze Inhalt der TextBox als ein String gelesen.
Private Sub cmdNormalPrint_Click()
Dim Anzahl$, FormString$, EinzelZeichen$, TextStringNEU$, i%
Anzahl = Len(frmPrint.Text1) Anzahl = Gesamte Textlänge in der TextBox.
FormString = frmPrint.Text1
 For i = 1 To Anzahl
  EinzelZeichen = Mid(FormString, i, 1)
   If EinzelZeichen <> vbCr And EinzelZeichen <> vbLf Then Den Umbruch prüft man mit einer UND-Verknüpfung, in der
    TextStringNEU = TextStringNEU & EinzelZeichen VBCR und VBLF einzeln abgefragt werden müssen. Ohne
   End If diese Abfrage würde der Umbruch nicht gefunden.
 Next
MsgBox TextStringNEU
End Sub TextBox-Inhalt wird als ein String in MsgBox
ausgegeben:
.

 Ranking-Hits zurück Sitemap
Designed by www.wbrnet.info