Näin ikäänkuin "aloittelevana" VB-ohjelmoijana on pakko kysyä kun tyhmä ei muista/osaa:
Mikä on tai siis oli se koodinpätkä millä saa laitettua sisältöä niihin comboboxeihin ja miten siihen liitetään tapahtumafunktio?
Esim:
Minulla olisi ComboBox, jossa olisi 3 vaihtoehtoa. Ohjelma siirtyisi toteuttamaan ComboBoxiin valitun tapahtuman heti valinnan jälkeen tai vaihtoehtoisesti sen jälkeen kun valinta on tehty ja painettu ns. valintanappia.
Vaihtoehdot voisivat olla vaikkapa... kuva 1, kuva 2 ja kuva 3. Kun valitsen kuva 2-kohdan niin ohjelma avaa juuri tuon kuvan 2.... (tämä siis vain esimerkkinä)
Auttakkee tyhmempää... Danke jo etukäteen
/Glottis
Voit lisätä ComboBoxiin kohtia AddItem-komennolla:
Combo1.AddItem "Kohta 1" Combo1.AddItem "Kohta 2" Combo1.AddItem "Kohta 3"
ComboBoxin valinnan jälkeen tapahtuu aliohjelma Click, joten voit laittaa koodin sinne. ListIndex on valitun kohdan numero ja List sisältää kohtien nimet.
Private Sub Combo1_Click() MsgBox "Valitsit kohdan " & Combo1.List(Combo1.ListIndex) End Sub
Tuon saman koodinpätkän voi toki laittaa myös CommandButtoniin, jolloin käyttäjän täytyy painaa nappia valinnan jälkeen.
Aaah! Tuohan se olikin... pitääpäs heti kokeilla :)
Kiitoksia kovasti
Hmm...
Meni hyvin siihen saakka kun kirjoitin nuo rivit koodia ja lisäsin tarvittavat elementit visuaaliseen osioon.
Kun valitsin vaikkapa kohdan 2 niin se ilmoittaa tuon oikean valinnan, mutta kun haluan valita lisää/toisen kerran niin comboboxissa on yhtäkkiä tuplamäärä noita kohtia eli:
Kohta 1
Kohta 1
Kohta 2
Kohta 2
Kohta 3
Kohta 3
------
miksi?
Varmaankin ComboBoxin Sorted-ominaisuuden arvo on True, ja lisäät sinne uudelleen nuo kolme kohtaa. Kokeile tyhjentää ComboBox komennolla Combo1.Clear ennen AddItem-rivejä.
No noinhan se onnistui nätisti ja näppärästi - kiitos taas kerran Hra.Laaksonen
=)
Lisäjuttua tähän perään heti vaan... mitenkäs menetellään kun haluaa indexoida tuo vaihtoehdot niin että jokainen valinta tuottaa täysin yksilöidyn vastauksen?
Private Sub Combo1_Click() Select Case Combo1.List(Combo1.ListIndex) Case "Kohta 1" Print "Valittuna on kohta 1" Case "Kohta 2" Print "Kohta kaksi" Case "Kohta 3" MsgBox "Kohta kolme" End Select End Sub
lainaus:
Private Sub Combo1_Click() Select Case Combo1.List(Combo1.ListIndex) Case "Kohta 1" Print "Valittuna on kohta 1" Case "Kohta 2" Print "Kohta kaksi" Case "Kohta 3" MsgBox "Kohta kolme" End Select End Sub
Juuri näin! Kiitos myös Hra Kauppilalle
Se on hankalaa kun ei oma muisti pelaa ... *heh*
lainaus:
Hmm...
Meni hyvin siihen saakka kun kirjoitin nuo rivit koodia ja lisäsin tarvittavat elementit visuaaliseen osioon.
Kun valitsin vaikkapa kohdan 2 niin se ilmoittaa tuon oikean valinnan, mutta kun haluan valita lisää/toisen kerran niin comboboxissa on yhtäkkiä tuplamäärä noita kohtia eli:
Kohta 1
Kohta 1
Kohta 2
Kohta 2
Kohta 3
Kohta 3
------
miksi?
Tuli tuosta vain mieleen, että jos olet laittanut nuo AddItem -komennot tuohon Combo1_Click() aliohjelmaan, niin se lisää aina uudestaan nuot "kohdat" siihen ComboBoxiin. Kannattaa ennemminkin laittaa vaikka formin lataamisen yhteyteen tuo kohtien lisääminen, niin ei tarvitse sitten joka kerta tyhjentää tuota ComboBoxia.
lainaus:
lainaus:
Hmm...
Meni hyvin siihen saakka kun kirjoitin nuo rivit koodia ja lisäsin tarvittavat elementit visuaaliseen osioon.
Kun valitsin vaikkapa kohdan 2 niin se ilmoittaa tuon oikean valinnan, mutta kun haluan valita lisää/toisen kerran niin comboboxissa on yhtäkkiä tuplamäärä noita kohtia eli:
Kohta 1
Kohta 1
Kohta 2
Kohta 2
Kohta 3
Kohta 3
------
miksi?Tuli tuosta vain mieleen, että jos olet laittanut nuo AddItem -komennot tuohon Combo1_Click() aliohjelmaan, niin se lisää aina uudestaan nuot "kohdat" siihen ComboBoxiin. Kannattaa ennemminkin laittaa vaikka formin lataamisen yhteyteen tuo kohtien lisääminen, niin ei tarvitse sitten joka kerta tyhjentää tuota ComboBoxia.
Ei, kyllä ne ovat (siis uo AddItem-käskyt) tuossa Combo1_dropdown -kohdassa.
Parempi olisi mielestäni vaihtaa ne Form1_Load -aliohjelmaan, niin voisi unohtaa sen Combo1.Clear komennon.
hyvä ajatus ja nyt se toimii vielä paremmin.. eli sai unohtaa tuon clear-jutun.
Uusi juttu/ongelma kysymyksineen:
Eli miten saada combobox-objekti tavallaan "ilmestymään tyhjästä" ... esim msgbox-objektin tapaan.
Onko tähän mitään yleispätevää keinoa vai pitääkö tehdä erillinen formi tuolle jota aina kutsukaan tarvittaessa, mutta onko siis keinoa saada esiin comboboxia, joka napsahtaa päälle "search"-nappia painamalla ja sen alaspudotusvalikossa on itse antamani arvot...
etsi esine 1
etsi esine 2
etsi esine 3
teet haluamaasi paikkaan aivan tavallisen comboboxin ja määrittelet sen sisällön kuten ennekin, mutta laitat sen visible-arvon vain oletuksena falseksi..(eli esim form_loadiin comboloota.visible = false)
Search nappulan clickkiin laitat puolestaan jotta comboloota.visible = true jolloin se paukahtaa näkyviin.
Äh... tietty jos haluat combon leijjailemaan kokonaan omana objektinaan ruudulle niin eihän se tuolla toimi...
Aihe on jo aika vanha, joten et voi enää vastata siihen.