Utilisation de Sleep [Résolu]

Messages postés
84
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2010
- - Dernière réponse : jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
- 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
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
43
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 #

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 139 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_casy
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
16
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
Messages postés
84
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2010
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
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
16
0
Merci
Salut,

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

A+
Exploreur

 
Commenter la réponse de cs_Exploreur
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
43
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
Messages postés
60
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
6 janvier 2009
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
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
24
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.