Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Odottaminen (VB)

jaskapoika [05.04.2006 22:03:31]

#

Eli miten sais ohjelman odottamaan vaikkapa 2sekunttia
rautalankaa kiitos =)

Antti Laaksonen [05.04.2006 22:13:51]

#

Odotuksen voi tehdä vaikka näin:

Sub Odota(aika As Single)
    Dim alku As Single
    alku = Timer
    While Timer - alku < aika
        DoEvents
    Wend
End Sub

Seuraava koodi tulostaa tekstiä, odottaa kaksi sekuntia ja tulostaa lisää tekstiä.

Private Sub Form_Click()
    Print "Alku"
    Odota 2
    Print "Loppu"
End Sub

WinAPIssa on myös aliohjelma Sleep, joka määritellään näin ohjelman alussa:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Nyt odotusaika annetaan millisekunteina:

Private Sub Form_Click()
    Print "Alku"
    DoEvents
    Sleep 2000
    Print "Loppu"
End Sub

Komennot Odota ja Sleep toimivat hieman eri tavoin. Odota vaikuttaa ainoastaan koodin suoritukseen, eli ohjelmaa pystyy käyttämään muuten (esim. muuttamaan ikkunan kokoa tai kirjoittamaan tekstiä tekstikenttään) odotuksen aikana. Sleep taas seisauttaa ohjelman kokonaan niin, ettei se ota vastaan mitään käyttäjän viestejä. Komentoa DoEvents käytetään juuri ohjelman jumiutumisen estämiseksi.

jaskapoika [06.04.2006 15:42:19]

#

Kiitos! nyt onnistui.

jaskapoika [08.04.2006 18:22:30]

#

Vielä sellainen kysymys että miten tuon saa toimimaan form loadissa

neau33 [08.04.2006 18:33:46]

#

Moikka jaskapoika!

Älä pukkaa sitä...

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long): Public n As Integer

Form_Load tapahtumaan vaan...

Private Sub Form_Resize()
If n = 0 Then: Print "Alku": DoEvents: Sleep 2000: Print "Loppu": n = 1: DoEvents: Sleep 2000: Cls
End Sub

Vastaus

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

Tietoa sivustosta