Jos esimerkiksi minulla on kymmenen kuvaa joita klikkaamalla pitäisi tapahtua sama asia niin pitää minun määritellä jokaiselle kuvalle tapahtuma erikseen vai voiko sen tehdä jollakin helpommalla tavalla?
Tuo onnistuu aliohjelmilla. Katsoppas vaikka ensin tuo opas: https://www.ohjelmointiputka.net/oppaat/opas.
Ei menny ihan perille...
Siis tällänen pitäis saaha aikaan:
mulla on 10 kuvaa (Imagea) ja kun yhtä sellaista klikkaa
se klikattu kuva vaihtuu toiseksi (ohjelma lataa toisen kuvan siihen tilalle).
Kaikilla 10 imagella sama tapahtuma.
Ainoastaan klikatun kuva pitäis vaihtua.
Miten sais toimimaan?
Samaa olen itsekin miettinyt joskus. Pitäisi saada tehtyä jonkinlainen "oliomatriisi"
Muuttujat voi latoa matriiseihin, mutta voiko oliot? Jos on sata oliota ja pitäisi jokaista klikkaamalla saa ne vaikka katoamaan niin tosi hauska laittaa erikseen tokaiseen Subbiin.
Kuva1.Visible = False
Kuva2.Visible = False
Kuva3.Visible = False
Kuva4.Visible = False
Kuva5.Visible = False
Kuva6.Visible = False
Kuva7.Visible = False
Kuva8.Vis...
jne.
Tosi kätevä olis jos sais jonkun tällaisen
For a = 1 TO 100
Kuva(a).Visible = False
Next a
Voi latoa ja ne on komponetteja
kun kopioit komponentin ja liität valitse Yes tällöin matriisi lähtee kasautumaan
Kontrollit voivat siis olla samannimisiä, jos niiden Index-ominaisuuden arvo on eri. Sitten kontrolleja voi käsitellä juuri hunajavohvelin mainitsemalla tavalla. Samalla kontrolleihin liittyvät aliohjelmat muuttuvat niin, että niissä on mukana Index-parametri.
Muistaakseni meni näin:
Tee yksi kontrolli
Ota siitä Copy/paste kopio samalle formille
VB kysyy että tehdäänkö indeksoitu kotrolli, vastaa YES.
Nyt kun clikkaa mitä tahansa ko. indeksoitua kontrollia niin joutuu aina samaan ohjelmapätkään, jossa index muuttuja pitää sisällään tiedon, mitä kontrollia oli clikattu.
Kontrolli(index).visible =false ... jne
Samoin ulkoa voi antaa käskyjä: Kontrolli(3).visible=false
tai for each...
En saanut toimimaan...
Tarkotus ois ollu että vain klikattu kuva muuttuu.
Aihe on jo aika vanha, joten et voi enää vastata siihen.