Utilisation de Sleep [Résolu]

Vianneyp 84 Messages postés jeudi 6 juillet 2006Date d'inscription 6 janvier 2010 Dernière intervention - 1 mai 2007 à 12:37 - Dernière réponse : jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention
- 1 mai 2007 à 22:53
Bonjours,
Je souhaiterai qu'un label se remplisse progressivement comme dans bon nombre de jeux.
Plutot que d'utiliser une 20aine de Timer je me suis dit qu'il valait mieux utiliser l'instruction Sleep:

Label.Caption = "a"
Sleep X
Label.Caption = "ab"
Sleep X
Label.Caption = "abc"
ect...

Cepandent il semblerai que Sleep "paralyse" totalement le programme.Durant la temporisation,impossible de clique ou que ce soit,d'ecrit ou meme de déplacer la fenêtre...
Le programme reste donc figé jusque a ce que le label soit entiérement remplit par la texte désiré.
L'utilité de ce code se retrouve donc réduite a...néant.

Admettons que l'on écrive Sleep 30000,le programme restera initulisable pendant 30 secs ?
Aucune autre procédure ne peut elle pas étre appelé tant que Sleep "comptabilise" ?
Ou est-ce moi qui fait qqch de travers ?
Merci d'avance pour vos éclairecicements
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 1 mai 2007 à 13:20
3
Merci
L'api Sleep suspend le process durant la période déterminer, alors oui le programme est comme figé.

Par contre, je ne vois pas l'interet d'une 20aine de timers, un seul suffit

dans chaque tick du timer il suffit de rajouter une lettre à celles déjà présentes dans la label.

Attention, le timer ne sert pas ici à temporiser entre chaque ajout de lettre comme l'api Sleep, mais il est là pour séquencer l'ajout de la lettre.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #

Merci cs_casy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de cs_casy
cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention - 1 mai 2007 à 12:44
0
Merci
Salut,

Voici l'api pause :

'Api Pause ici a déclarer dans ta form, si module private >> Public
 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'*********

Utilisation :
Sleep 2000 << ici pause de 2 secondes

A+
Exploreur

 
Commenter la réponse de cs_Exploreur
Vianneyp 84 Messages postés jeudi 6 juillet 2006Date d'inscription 6 janvier 2010 Dernière intervention - 1 mai 2007 à 12:51
0
Merci
C'est exactement ce que j'ai fait.
Si je n'avait pas déclaré l' API Vb ne m'aurai pas laisser compiler le projet.
Non mon probléme est différent car l'instruction Sleep fonctionne trés bien,un peu tro meme puisque si par exemple je met dans une procédure quelquonque :
Sleep 30000
Durant 30 secs le programme ne réagira plus a rien...Mon ordinateur posséde 1024DDR je ne pense donc pas que la memoire en soit la cause...

Je voudrao juste que Windows marque un temps de pause la ou je place Sleep avant de continuer la procédure,non qu'il me "pause" tout le programme  vous voyez ce que je veut dire ?
Commenter la réponse de Vianneyp
cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention - 1 mai 2007 à 12:59
0
Merci
Salut,

Faudrait peut-être placé un Doevents quelque part....

A+
Exploreur

 
Commenter la réponse de cs_Exploreur
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 1 mai 2007 à 13:26
0
Merci
Exemple :

Private Const texte As String = "Ajout progressif de texte"

Private Sub Form_Load()

   Label1.Caption = ""
   Timer1.Interval = 250
   Timer1.Enabled = True
   
End Sub<hr />
Private Sub Timer1_Timer()
   Static i As Integer

   i = i + 1
   If i > Len(texte) Then
       i = 1
       Label1.Caption = ""
   End If
   
   Label1.Caption = Label1.Caption & Mid(texte, i, 1)

End Sub<hr />
, ----
[code.aspx?ID=41455 By Renfield]

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
tiblay 60 Messages postés mercredi 9 novembre 2005Date d'inscription 6 janvier 2009 Dernière intervention - 1 mai 2007 à 22:34
0
Merci
Salut VianneYp,

Moi j'utilise ceci

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

                For U = 1 To 80
                    'SYSTEM IDLE
                    DoEvents
                    'DELAY
                    Sleep (100)
                        'Ce que tu veut ICI
                        '--->

                Next U

Bye

TiBlay
Commenter la réponse de tiblay
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 1 mai 2007 à 22:53
0
Merci
Private Sub Command1_Click()
 toto = "voilà donc"
 Label1.Caption = ""
 For i = 1 To Len(toto)
   Label1.Caption = Label1.Caption & Mid(toto, i, 1)
   attente 0.3   'règle ici le "pas" que tu veux
 Next
End Sub


Private Sub attente(duree)
  depart = Timer
  While Timer < depart + duree
   DoEvents
  Wend
End Sub
Commenter la réponse de jmfmarques

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.