Minulla on formi, jossa on viisi listboxia, joihin haetaan tiedot access-tietokannasta. Yksi näistä listboxeista on eräänlainen "päälistbox" ja haluaisin tietää kuinka saan aktivoitua muut listboxit, kun klikkaan jotakin kenttää tästä "päälistboxista", niin, että kaikissa muissa listboxeissa päälistboxiin liittyvät oikeat kentät aktivoituvat (ts. oikeat kentät maalataan muissa listboxeissa).
Esimerkkinä olkoon vaikka yksi listbox, jossa on junan malleja ja kun klikkaan tiettyä junan mallia, ohjelma aktivoi automaattisesti muista listboxeista kyseiseen junan malliin liittyvät tiedot. Toivottavasti ei mennyt liian monimutkaiseksi...;) Kiitos.
Esim. näin:
Private Sub List1_Click() List2.ListIndex = List1.ListIndex End Sub
Kun yhden listan ListIndex vaihtuu, vaihdetaan myös toisen listan ListIndex samaksi kuin ensimmäisen listan. ListIndex kertoo siis, mikä kohta listasta on valittuna.
tiedot kyllä kannattaisi linkittää toisiinsa jo accesissa, ts. relaatiomallin mukaisesti määritellä tiettyyn junamalliin liittyvät tiedot.
Hieman lisää tuosta Listboxin käytöstä. Liitä tietoihin ItemData-arvo, jolloin rivien tunnistaminen eri Listboxeista on helpompaa.
Esimerkiksi Juna A:n ID on 1, jolloin Junaan A:han kuuluvan moottorin ID on 1. Alla esimerkkiä ItemDatan käytöstä. Esimerkissä tosin ID:t arvotaan, sinun tapauksessa niiden pitää olla vakiot, jokaiselle "Junalle" oma vakiona pysyvä, että tunnistukset menee oikein...
Private Sub Form_Load()
Dim Valitut As String
Dim Luku As Integer
Dim i As Integer
Randomize Timer
For i = 0 To 9 'Lisätään listaan 10 kohtaa
List1.AddItem "Valinta " & (i + 1)
Do
Luku = Int(Rnd * 9) + 1 'Ja jokaiselle yksilöllinen ID väliltä 1-10
Loop Until InStr(1, Valitut, CStr(Luku) & ",") = 0
Valitut = Valitut & CStr(Luku) & ","
List1.ItemData(List1.NewIndex) = Luku
Next i
Valitut = ""
For i = 0 To 9
List2.AddItem "Valinta " & (i + 1)
Do
Luku = Int(Rnd * 9) + 1
Loop Until InStr(1, Valitut, CStr(Luku) & ",") = 0
Valitut = Valitut & CStr(Luku) & ","
List2.ItemData(List2.NewIndex) = Luku
Next i
End Sub
Private Sub List1_Click()
Dim i As Integer
Dim j As Integer
If List1.SelCount > 0 Then 'Onko listasta valittu jotain
For i = 0 To (List1.ListCount - 1)
If List1.Selected(i) Then
For j = 0 To (List2.ListCount - 1)
If List1.ItemData(i) = List2.ItemData(j) Then List2.Selected(j) = True
Next j
End If 'List1.Selected
Next i
End If 'List1.SelCount
End SubAihe on jo aika vanha, joten et voi enää vastata siihen.