TIMER sous Visual Basic 6.0

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.

6 réponses

  1. 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
    1. 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
      1. 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
        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
        2. 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
      2. 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
        1. 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
          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