Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: "Päivitys"

Sivun loppuun

kayttaja-3842 [01.04.2006 17:37:05]

#

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.

Meitsi [01.04.2006 17:47:05]

#

Loopin sisälle:

DoEvents

kayttaja-3842 [01.04.2006 17:51:48]

#

Nytten taas tulee sellanen ongelma, että Form:iä ei näy missään...Ohjelma ei kaadu ,mutta Formi:ä ei vaan näy...

setä [01.04.2006 17:51:50]

#

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

Blaze [01.04.2006 18:14:37]

#

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.

kayttaja-3842 [01.04.2006 18:48:20]

#

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

Blaze [01.04.2006 19:07:24]

#

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.

Lumi-ukkeli [01.04.2006 19:08:44]

#

Private Sub Form_Load()
Dim a As Long
Me.Show

Do

a = a + 1
Label1.Caption = a
DoEvents

Loop

End Sub

Sivun alkuun

Vastaus

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

Tietoa sivustosta