Tätä olen ihmetellyt VB:ssä jos kauan "taino niin kauan kun olen sitä opiskellut :D". Eli siis miten voin tehä esim sillai
et on a muuttuja, jota pitäisi kasvattaa kokoajan eli siis a muuttujalla ei ole päämäärää se vaan aksvaa koko ajan 1.
Itse yritin sitä näin..
Private Sub Form_Load() Dim a As Integer Do a = a + 1 Label1.Caption = a Loop End Sub
Tämä koodi tekee niin, että se kasvattaa a:ta koko ajan, mutta se kasvattaa sitä niin kauan, että kone hyytyy ja kaatuu! Miten voin tehdä niin, että a kasvaa koko ajan 1, mutta kone ei hyydy eikä ohjelma kaadu.
Loopin sisälle:
DoEvents
Nytten taas tulee sellanen ongelma, että Form:iä ei näy missään...Ohjelma ei kaadu ,mutta Formi:ä ei vaan näy...
Tuossahan a kasvaa hetkessä Integer-tyypin lukualueen ulkopuolelle. Määrittele edes Long-tyypiksi tai Decimal-tyypiksi. Niin ja määrittele se ennen Form_Load-tapahtumaa yleiseksi muuttujaksi.
Laita sinne alkuun Me.Show
kayttaja-3842 kirjoitti:
Ohjelma ei kaadu ,mutta Formi:ä ei vaan näy...
Koska formi näytetään vasta kun sen Load-tapahtuma on suoritettu loppuun, ja tämä kyseinen Load-tapahtumahan ei lopu koskaan.
Sedän neuvo auttaa.
Joo sain sen toimimaan näin:
Dim a As Long Private Sub Form_Activate() Do DoEvents a = a + 1 Label1.Caption = a Loop End Sub
kayttaja-3842 kirjoitti:
Joo sain sen toimimaan näin:
Tuolla saattaa olla yllättäviä sivuvaikutuksia. Activate-tapahtuma kun suoritetaan aina kun lomake tulee aktiiviseksi. Koitappa vaikka Alt+Tabbailla oman ohjelmasi ja jonkin toisen välillä.
Minä kannattaisin edelleen koodia Load-tapahtumaan ja lomakkeen näyttämistä Show-metodin avulla.
Private Sub Form_Load() Dim a As Long Me.Show Do a = a + 1 Label1.Caption = a DoEvents Loop End Sub
Aihe on jo aika vanha, joten et voi enää vastata siihen.