Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Listbox ja kenttien aktivointi

MysticMan [19.05.2005 21:40:55]

#

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.

hunajavohveli [19.05.2005 21:56:58]

#

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.

esakom [20.05.2005 08:44:04]

#

tiedot kyllä kannattaisi linkittää toisiinsa jo accesissa, ts. relaatiomallin mukaisesti määritellä tiettyyn junamalliin liittyvät tiedot.

BadSource [20.05.2005 09:01:03]

#

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

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta