TIMER sous Visual Basic 6.0

Fermé
Ma - 16 juil. 2004 à 10:32
 tomatefarcie - 4 mars 2009 à 15:02
Je débute avec VB et je voudrais savoir comment insérer une pasue dans le code. C'est à dire pour que le programme développé attende un moment avant de continuer l'execution de son code. Pourriez vous m'expliquer comment se servir des Timers ?
D'avance merci.
A voir également:

6 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
30 janv. 2008 à 12:26
Bonjour,

Dans le module de ton formulaire, tu déclares une variable générale booléenne (ex: Private flagTimer As Boolean), ainsi que cette fonction :

Private Declare Function GetTickCount Lib "kernel32" () As Long
Public Sub xWait(ByVal MilsecToWait As Long)
    Dim lngEndingTime As Long
  
    lngEndingTime = GetTickCount() + (MilsecToWait)
    Do While GetTickCount() < lngEndingTime
        DoEvents
    Loop
End Sub


Dans le Form_Load du formulaire, tu initialises ton flag à false (ex: flagTimer = False). Ensuite, sur l'évènement Click de ton bouton du colles ça:

Private Sub Command1_Click()
    
    If flagTimer = False Then
        flagTimer = True
    ElseIf flagTimer = True Then
        flagTimer = False
    End If
    
    Call Timer1_Timer
    
End Sub


Il ne reste plus qu'à coder la procédure du Timer en utilisant une boucle while :

Private Sub Timer1_Timer()

    While flagTimer = True
        '1 - code pour la requête SQL
        '2 - code pour le fichier
        Call xWait(3000)
    Wend
    
End Sub


Bon courage

;o)

polux
7
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 160
16 juil. 2004 à 11:00
salut
le timer se trouve dans les composants. On clique dessus et on
fait glisser sur la feuille comme tous les composants
Le timer a deux réglages : enabled/disabled et periode ou frequence.
Le timer emet des impulsions à la fréquence voulue
Si j'ai bonne mémoire, c'est de 5 millisecondes à 1 seconde
Un double clic sur l'icône du timer fait apparaître
la fonction ontimer qui est une des méthodes de l'objet timer
là est éxécuté le code que l'on choisit à chaque impulsion
qu'émet le timer à la fréquence voulue et seulement si il est "enabled"
Si le délai de 5 millisecondes est trop long, on peut mettre plusieurs timers, mais si c'est windows98 ou 95 on est très vite limité en performances. Le timer est une bonne solution parmi d'autres pour que l'interface ne soit pas bloquée pendant que s'excécute une long traitement.
rtfm cordialement
¤
5
ok merci !
Qd on ouvre un programme, il y a toujours une boite avec un intitulé, le nom du produit, la version, la license,... qui s'ouvre en premier. Je voudrais que dans mon programme, cette boite s'ouvre (ca c'est bon) mais qu'elle reste affichée à l'ecran 5 secondes par exemple (la elle s'affiche et disparait tout de suite). Comment peut on choisir ce temps ?
D'avance encore merci !
Ma.
1
Quand ta fenetre s'ouvre, tu lance un timer avec pour interval 5000 (équivalent à 5 secondes) avec pour fonction de fermer ta fenetre.
0
tomatefarcie
4 mars 2009 à 15:02
ds l'onglet splashscreen.vb (nom par default)tu rajoutes



'déclaration de sleep()
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


Me.Show()
Application.DoEvents()
'5000 pour 5 secondes
Sleep(5000)
0
voila un pti truc tu met l'inteval du timer a 0 et lorsque tu veux tu declancher le chrono tu affecte a interval une autre valeur par exemple 1000 = 1 seconde et dans
private sub timer_timer ... end sub
tu met un compteur i = i+1 lorsque le "i" atteint la valeur que tu veux pas exemple 10 tu affecte a interval une autre fois zero
interval = 0 'arrete le compteur et intervel <>0 le declanche
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,
je débute sous VB et aimerais moi aussi utiliser un timer pour réaliser une action répétitive.
Je voudrais en fait que le timer soit activé/désactivé par un bouton de sorte que:
-tant que le bouton est actif, le timer doit exécuter la même action (en réalité deux: exécution d'une requête SQL, puis concaténation du résultat dans un fichier csv préexistant), puis recommencer un décompte de 30 secondes, exécuter la requête, ajouter son résultat au fichier, recommencer le décompte etc.
-si le bouton est désactivé, le timer s'arrête après avoir exécuté l'action à laquelle il est lié.

concrètement, je sèche sur la manière de m'y prendre pour programmer un timer de la sorte et pour ce qui concerne la concaténation de données à un fichier préexistant.

Je remercie d'avance tous ceux/celles qui auront un peu de temps pour m'aider à résoudre ce problème.
1
Je vous remercie grandement pour votre aide, tout fonctionne comme je le voulais et je pense avoir compris comment fonctionnaient les timers. Grace à vous.
Merci.

Ma.
0