Eli miten sais ohjelman odottamaan vaikkapa 2sekunttia
rautalankaa kiitos =)
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.
Kiitos! nyt onnistui.
Vielä sellainen kysymys että miten tuon saa toimimaan form loadissa
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
Aihe on jo aika vanha, joten et voi enää vastata siihen.