PDA

Visualizza la versione completa : aiuto x listbox


sintax_error
18-05-2002, 22:34
Premetto che sono alle prime armi con Vb6.
allora io ho una listbox da cui prendo l'indice selezionato.
ora io voglio fare che ad ogni indice selezionato
mi scriva in un'altra listbox dei valori presi da file di testo
ho provato cosi' ma ad ogni click mi aggiunge del testo nella listbox2
invece mi deve mettere solo quello relativo al file selezionato.
mi ci date un occhiata x favore .
so che e' semplice ma non ci riesco.
Grazie anticipate
====================================

Private Sub List1_Click()
Dim indice As Integer
Dim nomefile As String
indice = List1.ListIndex
Label1.Caption = indice
Select Case indice
Case 0
nomefile = "c:\1.txt"
Open nomefile For Input As #1
While Not EOF(1)
Input #1, nomefile
List2.AddItem (nomefile)
Close #2
Wend
Case 1
nomefile = "c:\2.txt"
Open nomefile For Input As #2
While Not EOF(2)
Input #2, nomefile
List2.AddItem (nomefile)
Close #1
Wend

End Select
End Sub

Mabi
19-05-2002, 12:56
L'algoritmo è corretto. Se ho capito bene il tuo problema è che si aggiunge del testo nella ListBox2 a quello già presente...

Se è così, aggiungi un clear all'inizio della procedura:
"List2.Clear"

Ciao.

sintax_error
19-05-2002, 14:59
Tui ringrazio per la risposta ma avevo gia' provato con list.clear
modificando la sub,ora mi seleziona correttamente il file pero' c'e' un'altro problema se faccio click una volta su una riga funziona,ma se riclikko un'altra volta me la svouta lasciando la riga vuota.

la modifica fatta e' la seguente

Private Sub List1_Click()
Dim click As Integer
Dim indice As Integer
Dim nomefile As String
indice = List1.ListIndex
Label1.Caption = indice
Select Case indice

Case 0

List2.Clear
nomefile = "c:\1.txt"
Open nomefile For Input As #1
While Not EOF(1)
Input #1, nomefile
List2.AddItem (nomefile)
Close #2, #3, #4

Label2.Caption = click
Wend

Case 1
List2.Clear
nomefile = "c:\2.txt"
Open nomefile For Input As #2
While Not EOF(2)
Input #2, nomefile
List2.AddItem (nomefile)
Close #1, #3, #4
Wend
Case 2
List2.Clear
nomefile = "c:\3.txt"
Open nomefile For Input As #3
While Not EOF(3)
Input #3, nomefile
List2.AddItem (nomefile)
Close #1, #2, #4
Wend
Case 3
List2.Clear
nomefile = "c:\4.txt"
Open nomefile For Input As #4
While Not EOF(4)
Input #4, nomefile
List2.AddItem (nomefile)
Close #1, #2, #3
Wend
End Select
end sub

in pratica per essere piu' chiaro il mio intento e' questo:
ho due list box denominate list1 e list2.
la list1 al form_load mi carica il testo da un file che deve essere i titoli
ad esempio di 10 album musicali.
ora cliccando un item di list1 mi deve caricare in list2
tutti i pezzi dell'album associato.
Spero di esser stato chiaro
Grazie

Mabi
19-05-2002, 16:06
Non funziona perchè dopo aver aperto il file, esegui il ciclo e dopo non lo chiudi più. In questo modo la procedura riapre il file che viene trovato già aperto e quindi ti da l'errore.

In pratica devi modificare la chiusura del ciclo e del file:



Case is = 1
NomeFile = "c:\2.txt"
Open NomeFile For Input As #1
While Not EOF(1)
Input #1, nomefile
List2.AddItem (nomefile)
Wend
Close #1


Quindi:



Private Sub List1_Click()
Dim NomeFile As String

Label1.Caption = List1.ListIndex
List2.Clear
Select Case List1.ListIndex
Case Is = 0
NomeFile = "c:\1.txt"
Open NomeFile For Input As #1
While Not EOF(1)
Input #1, NomeFile
List2.AddItem (NomeFile)
Wend
Close #1
Case Is = 1
NomeFile = "c:\2.txt"
Open NomeFile For Input As #1
While Not EOF(1)
Input #1, NomeFile
List2.AddItem (NomeFile)
Wend
Close #1
Case Is = 2
NomeFile = "c:\3.txt"
Open NomeFile For Input As #1
While Not EOF(1)
Input #1, NomeFile
List2.AddItem (NomeFile)
Wend
Close #1
Case Is = 3
NomeFile = "c:\4.txt"
Open NomeFile For Input As #1
While Not EOF(1)
Input #1, NomeFile
List2.AddItem (NomeFile)
Wend
Close #1
End Select
End Sub

Loading