Onko mahdollista hyppiä formista formiin vb3:ssa? Jos on, niin miten? Tämä kysymys siksi, koska teen tietokilpailupeliä.
Avaa uusia formeja niin paljon kuin tarvitset/haluat valikosta 'New form' ja sitten
form2.show 'Näyttää kakkosformin form2.hide 'piilottaa kakkosformin
ja muuttujat kannattaa laittaa moduleen jotenkin tyyliin
global a as single
Jes. Kiitos. Nyt pääsee jatkamaan omaa kyhäelmää.
Muista poistaa muistista myös lataamasi formit kun ohjelma suljetaan.
Eli Formin Unload tapahtumaan
Unload Form2...
Vai onko tuo välttämätöntä?
Ite oon ainakin aina tehny niin.
Unload Form2? Eikö Formi unloadaudu automaattisesti heti kun Unload-sub on loppunut?
Edit: Tai siis, ei kai Form2_Unload-subiin yleensä ohjelma edes hyppää ellei formia suljeta. Koko sub on minun tietääkseni vain sitä varten, että ohjelma pystyy suorittamaan joitain käskyjä silloin, kun formi suljetaan, mutta ei se minusta formin sulkemista varten ole, ainoastaan valvoo sitä.
Ihan samoin kuin vaikka text1_Change ei muuta text1:sen sisältöä vaan ainoastaan valvoo muuttuuko se ja jos muuttuu, VB suorittaa käskyt joita subissa on.
ei mutta siis:
nappaimen/
Form1.hide
Form2.Show
toisen_nappaimen_toisessa_formissa_CLick ()
Form2.Hide
Form1.Show
ja sitten missä lopetatkin end-kohtaan:
unload Form1
unload Form2
eikös sen noin pitäisi toimia. tai siis noin minä saan sen toimimaan
Kyllä ladatut formit on syytä unloudata ohjelman päättyessä, jos niitä on ladattuna useita. End-käsky myös unloadaa ne ja sulkee mahdolliset avoimet tiedostot.
Teen sen itse näin:
'Formin avaus aikaisemman päälle: Forminnimi.Show
'Käytettävän formin sulkeminen Unload me
'Käytettävän formin sulkeminen ja toisen avaaminen Unload forminimi/me forminnimi.show
Eli siis:
Unload me: Lopettaa käytettävän formin
End: Tämä taitaa sulkea kaikki mahdolliset formit
.Show Tämä näyttää formin
.Hide Tämä piilottaa formin
Jäiköhän vielä jotain?
Jos teet tietokilpailua, niin varmaan kannattaisi toteuttaa kaikki kysymykset samassa formissa. Muuten formeja tulee ajan mittaan hirveä määrä, ja niiden hallinta on vaikeaa. Vai käytätkö formeja johonkin muuhun tarkoitukseen?
Antti Laaksonen kirjoitti:
Jos teet tietokilpailua, niin varmaan kannattaisi toteuttaa kaikki kysymykset samassa formissa. Muuten formeja tulee ajan mittaan hirveä määrä, ja niiden hallinta on vaikeaa. Vai käytätkö formeja johonkin muuhun tarkoitukseen?
Joo. Huomasin. formeja on tällä hetkellä kuusi ja jokaisessa yksi kysymys. En käytä formeja mihinkään muuhun kuin pistelaskuun. Miten muuten toteutan kaikki yhdessä ja samassa formissa?
Laita kysymykset ja vastaukset tiedostoon kryptattuina. Sieltä niitä voi sitten poimia vaikka satunnaisessa järjestyksessä.
setä kirjoitti:
Laita kysymykset ja vastaukset tiedostoon kryptattuina. Sieltä niitä voi sitten poimia vaikka satunnaisessa järjestyksessä.
Tä? Edelleen sormi suussa Mitenkäs tää oikein...? Tästä näkee, että olen puhdas amatööri tässä hommassa.
Eli suomeksi: en tajunnut vieläkään.
*Pistää tähän parit hymiöt*
Eli laita kysyttävän kysymyksen tila yhteen muuttujaan:
Dim KysyttavaKysymys as Integer
Dim Pisteet as Integer
KysyttäväKysymys=0
Pisteet=0
Sitten tee yksi funktio seuraavasti:
Function LataaKysymys(KymysysNumero as Integer)
Select Case KymysysNumero
Case 0
TekstiBoxiJossaKysymysEsitetään.Text="Mikä minua vaivaa?"
Case 1
TekstiBoxiJossaKysymysEsitetään.Text="Onko pizzassani jotain muka vikana?"
End Case
End Function
Lopuksi Funktio joka tarkistaa kysymyksen tuloksen:
Function TutkiVastaus(Vastaus as String, KysymysNumero as Integer)
Select Case KysymysNumero
Case 0
If Vastaus="Tietämättömyys ohjelmoinnista" Then Pisteet=Pisteet+1
Case 1
If Vastaus="On" Then Pisteet=Pisteet+1
End Select
KysyttavaKysymys=KysyttavaKysymys+1
End Function
Seuraava napista kutsut ensiksi TutkiVastaus ja sitten LataaKysymys funktiota Piste tuloksen voit tallentaa vaikka Labeliin ruudulle...
Kiitos. Nyt käsitin. (viimein)
*laittaa lisää hymiöitä*
Aihe on jo aika vanha, joten et voi enää vastata siihen.