VB 5/6-Tipp 0533: Textbox druckfähig in Array stellen
von Peter K. Sauer
Beschreibung
Dieser Tipp teilt jede Zeile einer Textbox auf und stellt jede Zeile in ein Array. Dies ist praktisch wenn man eine große Textbox drucken will, so kann jede Zeile einzeln zum Drucker gegeben werden.
| Schwierigkeitsgrad:
| Verwendete API-Aufrufe: | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '--- Anfang Projektdatei Textbox druckfaehig in Array stellen.vbp --- '--- Anfang Formular "Form1" alias Textbox druckfaehig in Array stellen.frm --- ' Steuerelement: Listen-Steuerelement "List1" ' Steuerelement: Schaltfläche "Command1" ' Steuerelement: Textfeld "Text1" ' Steuerelement: Beschriftungsfeld "Label2" ' Steuerelement: Beschriftungsfeld "Label1" ' ' Autor: Peter K. Sauer - peter.k.sauer@web.de 26.09.2001 Option Explicit Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Any) As Long Const EM_GETLINECOUNT = &HBA Const EM_LINEFROMCHAR = &HC9 Public Function GetTextBoxZeilen(Tbox As TextBox, Zeilen() As String) _ As Long 'liefert Anzahl der dargestellten Zeilen einer Textbox und übergibt die 'Zeileninhalte in einem StringArray Dim LineNo As Long Dim LineLast As Long Dim LineStart As Long Dim i As Long 'Anzahl der dargestellten Zeilen ermitteln LineNo = SendMessage(Tbox.hwnd, EM_GETLINECOUNT, 0, 0&) ' Array soweit erweitern, das alle Zeilen hineinpassen ReDim Zeilen(LineNo) For i = 0 To Len(Tbox.Text) - 1 'Zeilennummer für aktuelles Zeichen LineNo = SendMessage(Tbox.hwnd, EM_LINEFROMCHAR, i, 0&) If LineNo <> LineLast Then 'Zeilenwechsel, Zeichen an Zeile zuweisen Zeilen(LineLast) = Mid(Tbox.Text, LineStart + 1, i - LineStart) LineLast = LineNo LineStart = i End If Next 'letzte Zeile Zeilen(LineLast) = Mid(Tbox.Text, LineStart + 1, i - LineStart) 'CrLf´s (Zeilenumbrueche) entfernen For i = LBound(Zeilen) To UBound(Zeilen) Zeilen(i) = Replace(Zeilen(i), vbCrLf, "") Next ' Rückgabe der Zeilenanzahl GetTextBoxZeilen = UBound(Zeilen) End Function Private Sub Command1_Click() ' Das Array, das jede Zeile einzeln enthält Dim einzelnezeilen() As String Dim i ' Aufrufen der Funktion und übergabe der Zeilenanzahl an Label1 Label1 = GetTextBoxZeilen(Text1, einzelnezeilen()) ' Alle einzelnen Zeilen durchgehen und For i = 0 To UBound(einzelnezeilen) ' in List1 hinzufügen List1.AddItem einzelnezeilen(i) Next i End Sub '--- Ende Formular "Form1" alias Textbox druckfaehig in Array stellen.frm --- '--- Ende Projektdatei Textbox druckfaehig in Array stellen.vbp ---
Tipp-Kompatibilität:
| Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
| VB4 | |||||||
| VB5 | |||||||
| VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 2 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von VbLerner am 09.01.2005 um 00:56
Gibt es eine Ähnliche Funktion bzw Prozedur, alle
vorkommenden Wörter einzeln in eine Listbox zu addieren ?
Kommentar von worel am 16.12.2004 um 01:07
Und wie wird ausgedruckt ????
For r = 1 To List1.ListCount
Printer.Print List1.List(r)
Next
..oder wie? Das Drucken hätte man ruhig in das Projekt implementieren können.

