Vb6 - Resultaat van listbox items in twee textboxen weergeven

Status
Niet open voor verdere reacties.

satriano17

Gebruiker
Lid geworden
30 sep 2012
Berichten
331
dag. Sorry voor de rare titel maar ik kon niet beter.
Ik heb een listbox
1 text1 box
en deze code

Code:
Dim ipos As Integer
Dim aantalteksten As Integer
Dim teksten() As String
Private Sub List1_Click()
If List1.ListIndex >= 0 Then
Text1.Text = List1.ItemData(List1.ListIndex)
Text1.Text = teksten(List1.ItemData(List1.ListIndex))
 End If
End Sub
Private Sub Form_Load()
ipos = -1
On Error Resume Next
Dim Bestand As Long
    Dim lijn As String
    Dim textAndValue() As String
    List1.Clear
    Bestand = FreeFile
    Open App.Path & "\BLOPaper.txt" For Input As #Bestand
    Do While Not EOF(Bestand)
        Line Input #Bestand, lijn
        If Len(lijn) Then
            textAndValue = Split(lijn, "*")
            
            If UBound(textAndValue) = 1 Then
            
            List1.AddItem textAndValue(0)
aantalteksten = aantalteksten + 1
ReDim Preserve teksten(aantalteksten)
teksten(aantalteksten - 1) = textAndValue(1)
  List1.ItemData(List1.NewIndex) = aantalteksten - 1
 End If
        End If
    Loop
    Close #Bestand

In de listbox heb ik een aantal items gescheiden van een sterretje
bv.
Test*huis
test2*huis2
test3*1
Dus de tekst VOOR de sterretje wordt in de listbox weergegeven en is te selecteren
de tekst NA de sterretje wordt dan in de text1 box weergegeven (een getal of string)
En tot hier is alles ok.

wat ik nu wou is een tweede textbox toevoegen om een tweede 'resultaat' te weergeven.
Zoals
text*huis*1 (hier mag een getal een getal of een string zijn )
test2*huis2*hond (hier ook dus een getal of een string. )
test3*1*kat

hoe moet mijn code aapassen om dat te krijgen?
Ik weet het , het zal zeker een klein aanpassing nodig zijn, maar ik kom niet uit.
dank u
 
Laatst bewerkt:
Code:
textAndValue = Split(lijn, "*")
Maakt een array van textAndValue(0), textAndValue(1) en textAndValue(2).
Je moet dus textAndValue(2) gebruiken voor het derde gedeelte.
 
ik heb geen variabel
textAndValue

kan je een werkend voorbeeld tonen?
Ik weet dat bijna niemand meer met vb6 nog werkt.
dank u
 
Laatst bewerkt:
textAndValue is na Split(lijn, "*") al een array en in het geval van een lijn met 2 sterretjes zijn dat drie elementen.

Namelijk:
textAndValue(0)
textAndValue(1)
textAndValue(2)
 
Ik heb zo aangepast
Ik heb een tweede text7.box geplaatst
als tweede output.

Mijn tekst in BLOPaper.txt is

Test*kat*1

Code:
Dim Bestand As Long
    Dim lijn As String
    Dim textAndValue() As String
    List1.Clear
    Bestand = FreeFile
    Open App.Path & "\BLOPaper.txt" For Input As #Bestand
    Do While Not EOF(Bestand)
        Line Input #Bestand, lijn
        If Len(lijn) Then
            textAndValue = Split(lijn, "*")
            
            If UBound(textAndValue) = 1 Then
            
            List1.AddItem textAndValue(0)
            List1.AddItem textAndValue(1)

aantalteksten = aantalteksten + 1
ReDim Preserve teksten(aantalteksten)
teksten(aantalteksten - 1) = textAndValue(1)
  List1.ItemData(List1.NewIndex) = aantalteksten - 1
 End If
        End If
    Loop
    Close #Bestand
EndSub
Private Sub List1_Click()
If List1.ListIndex >= 0 Then
text1.Text = List1.ItemData(List1.ListIndex)
text1.Text = teksten(List1.ItemData(List1.ListIndex))

If List1.ListIndex >= 0 Then
Text7.Text = List1.ItemData(List1.ListIndex)
Text7.Text = teksten(List1.ItemData(List1.ListIndex))
End If
EndSub


Spijtig genoeg werkt niet.
 
Laatst bewerkt:
Je had het ook over het vullen van 2 textboxen, niet 1 listbox.
Doe eens dit:
List1.List = TextAndValue

Plaats anders je project in een zip bestand.
 
Klik op "Ga geavanceerd" en dan op de paperclip.
 
Gevonden
Ik heb dus 1 list box
Twee textbox
Zie BLoPaper.txt
 

Bijlagen

  • TestProgramma.zip
    1,7 KB · Weergaven: 30
Laatst bewerkt:
In BLOPaper.txt staan nu drie regels
de eerste wordt weergegeven in Text1. De programma is nu zo.

Maar ik zou willen dat
als ik op 'test' selecteer in de listbox moet ik krijgen
in text1 'Huis'
in text2 '1'
 
Laatst bewerkt:
Je bedoeling is me niet duidelijk. Die hele Split heeft zo geen nut.
Wijzig je Form load in dit:
Code:
Private Sub Form_Load()
    ipos = -1
    On Error Resume Next

    Dim Bestand As Long
    Dim lijn As String
    Dim textAndValue() As String
    List1.Clear
    Bestand = FreeFile
    
    Open App.Path & "\BLOPaper.txt" For Input As #Bestand
    Do While Not EOF(Bestand)
        Line Input #Bestand, lijn
        If Len(lijn) Then
            [COLOR="#008000"]'textAndValue = Split(lijn, "*")[/COLOR]
            [COLOR="#008000"]'If UBound(textAndValue) = 1 Then[/COLOR]
                List1.AddItem lijn
                aantalteksten = aantalteksten + 1
                ReDim Preserve teksten(aantalteksten)
                teksten(aantalteksten - 1) = textAndValue(1)
                List1.ItemData(List1.NewIndex) = aantalteksten - 1
             [COLOR="#008000"]'End If[/COLOR]
        End If
    Loop
    Close #Bestand
End Sub

Met dit in je tekst bestand:
Code:
Zoals nu is
werkt
Test
Huis
1
Test2
kat
1
 
Sorry maar zo krijg ik niks in text1 en text2

Ik moest in de text1 de zin na de eerste '*'
en in text2 de zin na de tweede '*'


Test*Huis*1

Test staat in listbox
Huis in text1
1 in text2
 
Dus je wilt alle regel uit het tekstbestand in de listbox en wanneer er daar eentje wordt geselecteerd deze waarden splitten op het * teken en dan plaatsen in text1 en text2?
 
Maar je gebruikt ook regels met 2 * tekens en dat zijn dan 3 items.
 
Doe dit maar eens:
Code:
Private Sub Form_Load()
    ipos = -1
    On Error Resume Next

    Dim Bestand As Long
    Dim lijn As String
    Dim textAndValue() As String
    List1.Clear
    Bestand = FreeFile
    
    Open App.Path & "\BLOPaper.txt" For Input As #Bestand
    Do While Not EOF(Bestand)
        Line Input #Bestand, lijn
        If Len(lijn) Then
            List1.AddItem lijn
            aantalteksten = aantalteksten + 1
            ReDim Preserve teksten(aantalteksten)
            teksten(aantalteksten - 1) = textAndValue(1)
            List1.ItemData(List1.NewIndex) = aantalteksten - 1
        End If
    Loop
    Close #Bestand
End Sub

Private Sub List1_Click()
    If List1.ListIndex >= 0 Then
        Text1.Text = Split(List1.Text, "*")(0)
        Text2.Text = Split(List1.Text, "*")(1)
    End If
End Sub
 
ja maar de eerste is voor de list box.
Dus de titel in de listbox en de twee 'resultaat' in de textboxen
 
Ehm, nee. Gaat niet goed
Test moet in listbox
en de de twee items na '*' in de textboxen
in de textbestand heb ik
Test*Huis*1
 

Bijlagen

  • Test2.jpg
    Test2.jpg
    20,1 KB · Weergaven: 54
Laatst bewerkt:
Nee, uiteraard niet, volgens je correcte uitleg in #18 ;)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan