Einlesen und aufteilen:
Code:
Private Sub SplitInput(ByVal Delim as String, ByVal sFile as String)
Dim FF
Dim Buffer As String
Dim SplitInfo() As String
FF = FreeFile
Open sFile For Input As #FF
Do While Not EOF(FF)
Line Input #FF, Buffer
'Jetzt kommt die Split-Funktion zum Einsatz:
SplitInfo = Split(Buffer, Delim)
'In den einzelnen Elementen von SplitInfo steht jetzt immer ein Wert
'und den packen wir in die Listboxen:
List1.AddItem SplitInfo(0)
List2.AddItem SplitInfo(1)
Loop
Close #FF
End Sub
So, damit sollten alle Elemente eingelesen sein.
Da die entsprechenden Werte vom Index her die gleichen sind, kannst du es wie folgt machen, dass immer die richtigen Elemente markiert werden:
Code:
Private Sub List1_Click()
List2.ListIndex = List1.ListIndex
End Sub
allerdings ist das keine schöne Lösung, da du hier keine Umstrukturierung der Listen vornehmen kannst. Eine andere habe ich leider momentan nicht parat.
Such bei ActiveVB.de in den Tipps oder Tutorials, da wirst du 100%ig fündig.
Ich würde dabei aber das ListView-Steuerelement nehmen!
Das musst du manuell hinzufügen -> Strg + T --> Microsoft Windows Common Controls 6 (glaub ich).
Das fügst du deinem Formular hinzu und gibst ihm folgende Eigenschaften:
Dann musst du noch die Spaltenköpfe hinzufügen (die dann List1 und List2 entsprechen):
Code:
Private Sub Form_Load()
ListView1.ColumnHeaders.Add 1, , "List1"
ListView1.ColumnHeaders.Add 2, , "List2"
End Sub
So, dann musst du leider noch die Prozedur oben anpassen:
(hier wurde gleich noch Code zum Fehlerabfangen eingefügt)
Code:
Private Sub SplitInput(ByVal Delim as String, ByVal sFile as String)
Dim FF
Dim Buffer As String
Dim SplitInfo() As String
FF = FreeFile
On Error Goto E404
Open sFile For Input As #FF
Do While Not EOF(FF)
Line Input #FF, Buffer
'Jetzt kommt die Split-Funktion zum Einsatz:
On Error Goto ESplit
SplitInfo = Split(Buffer, Delim)
'In den einzelnen Elementen von SplitInfo steht jetzt immer ein Wert
'und den packen wir in die Listboxen:
ListView1.ListItems.Add , , SplitInfo(0)
ListView1.ListItems(ListView1.ListItems.Count).SubItems(1) = SplitInfo(1)
Loop
Close #FF
Exit Sub
E404:
MsgBox "Datei '" & sFile & "' nicht gefunden!",vbCritical + vbOKOnly, "Fehler!"
ESplit:
MsgBox "Trennzeichen ungültig!",vbCritical + vbOKOnly, "Fehler!"
End Sub
So, danach solltest du die einzelnen Einträge nebeneinander haben.
Um jetzt dein Problem mit der Textbox zu lösen:
Entweder (wenn das, was vorher in "List1" stand, in die Textbox zu schreiben):
Code:
Private Sub Command1_Click()
Text1.Text = ListView1.SelectedItem.Text
End Sub
Oder, wenn du das, was in "List2" stand, in die Textbox schreiben willst:
Code:
Private Sub Command1_Click()
Text1.Text = ListView1.SelectedItem.SubItems(1)
End Sub
Mal angenommen, du willst die Prozedur jetzt aufrufen, wenn ein Button (Command2) geklickt wurde:
Code:
Private Sub Command2_Click()
'Der erste Parameter (hier "|") gibt an, wo die Einträge getrennt werden sollen.
'Der zweite Parameter (hier App.Path & "\data.txt") gibt den Pfad zur Datei an.
SplitInput("|", App.Path & "\data.txt")
End Sub
Denke mal, das sollte weiterhelfen, oder?
Greets - Schattenkanzler