vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls · TextBox & RichTextBox   |   VB-Versionen: VB4, VB5, VB623.11.01
MultiLine-TextBox zeilenweise in Liste übertragen

Ein Beispiel, das zeigt, wie sich die einzelnen Zeilen einer MultiLine-TextBox zeilenweise in eine ListBox übertragen lassen.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  19.687 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Das nachfolgende Beispiel zeigt, wie sich die einzelnen Zeilen einer MultiLine-TextBox zeilenweise in eine ListBox übertragen lassen. Hierbei soll es also keine Rolle spielen, ob die Zeilen automatisch beim Erreichen des rechtes Randes umgebrochen wurde oder die "Enter"-Taste für den Umbruch verwendet wurde.

Die Zeilen werden also exakt so, wie sie auch in der TextBox angezeigt werden, in eine ListBox übertragen.

' zunächst die benötigten API-Deklarationen
Private Declare Function SendMessage 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
' Inhalt einer MultiLine-TextBox zeilenweise
' in eine ListBox übertragen
Public Sub Text2List(TextBox As TextBox, _
  ListBox As ListBox)
 
  Dim I As Long
  Dim lngLineCount As Long
  Dim lngLineLength As Long
  Dim strLine As String
 
  ' Liste löschen
  ListBox.Clear
 
  ' zunächst die Anzahl der Zeilen ermitteln
  lngLineCount = SendMessage(TextBox.hwnd, _
    EM_GETLINECOUNT, 0, 0&)
 
  ' jetzt die einzelnen Zeilen ermitteln
  For I = 0 To lngLineCount - 1
    strLine = Space$(1024)
 
    lngLineLength = SendMessage(TextBox.hwnd, _
      EM_GETLINE, I, strLine)
 
    ' Zeile der ListBox hinzufügen
    ListBox.AddItem Left$(strLine, lngLineLength)
  Next I
End Sub

Um das Beispiel auszuprobieren, erstellen Sie ein neues Projekt und fügen der Form1 eine TextBox mit der Eigenschaft MultiLine = True und ScrollBars = 2 - Vertikal hinzu. Daneben plazieren Sie ein ListBox-Steuerelement und irgendwo darunter einen CommandButton. Fügen Sie nun den obigen Code in den Code-Teil der Form ein. Beim Klicken auf die Schaltfläche soll der Inhalt der TextBox dann zeilenweise in die ListBox übertragen werden, also:

Private Sub Command1_Click()
  Text2List Text1, List1
End Sub