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 Sub
Aihe on jo aika vanha, joten et voi enää vastata siihen.