Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: ComboBox-ongelma (VB)

Sivun loppuun

glottis [25.09.2003 09:52:03]

#

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

Antti Laaksonen [25.09.2003 11:11:25]

#

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.

glottis [25.09.2003 11:43:09]

#

Aaah! Tuohan se olikin... pitääpäs heti kokeilla :)

Kiitoksia kovasti

glottis [25.09.2003 11:54:43]

#

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?

Antti Laaksonen [25.09.2003 12:01:44]

#

Varmaankin ComboBoxin Sorted-ominaisuuden arvo on True, ja lisäät sinne uudelleen nuo kolme kohtaa. Kokeile tyhjentää ComboBox komennolla Combo1.Clear ennen AddItem-rivejä.

glottis [25.09.2003 12:40:30]

#

No noinhan se onnistui nätisti ja näppärästi - kiitos taas kerran Hra.Laaksonen

=)

glottis [25.09.2003 13:06:18]

#

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?

Pekka Kauppila [25.09.2003 13:54:50]

#

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

glottis [25.09.2003 14:39:43]

#

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*

Pekka Kauppila [25.09.2003 15:42:31]

#

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.

glottis [26.09.2003 08:11:22]

#

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.

Pekka Kauppila [26.09.2003 14:57:02]

#

Parempi olisi mielestäni vaihtaa ne Form1_Load -aliohjelmaan, niin voisi unohtaa sen Combo1.Clear komennon.

glottis [29.09.2003 10:55:58]

#

hyvä ajatus ja nyt se toimii vielä paremmin.. eli sai unohtaa tuon clear-jutun.

glottis [06.10.2003 15:26:10]

#

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

Halenism [06.10.2003 15:33:25]

#

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...


Sivun alkuun

Vastaus

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

Tietoa sivustosta