IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB]Executer un timer


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 56
    Par défaut [VB]Executer un timer
    Bonjour, je voudrai savoir si c'etait possible d'executer un timer qu'une seule fois.
    Puisque quand je fait form1.timer1.enabled = true il s'execute indéfiniment.
    j'ai donc mis un form1.timer1.enabled = false juste apres mais du coup l'action du timer ne s'execute plus.

    Merci

  2. #2
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut Re: Executer un timer
    Citation Envoyé par dureiken
    j'ai donc mis un form1.timer1.enabled = false juste apres...
    juste après quoi ?

    dans l'événement Timer ?

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Par défaut
    Bonjour,
    Voici un exemple d'utilisation du contrôle Timer (ici pour décrémenter un compteur.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     Dim cpt As Integer
     
    Private Sub Form_Load()
    cpt = 10
    Label1.Caption = cpt
    Timer1.Interval = 1000   'L'interval est en millisecondes
    End Sub
     
    Private Sub Timer1_Timer()
    cpt = cpt - 1
    Label1.Caption = cpt
    If cpt = 0 Then
       Timer1.Interval = 0
       Label1.Caption = "Go"
    End If
    End Sub
    jpleroisse

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 56
    Par défaut
    j'ai fait ca :
    Code : VB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Public Function monter()
     
    ascenseur.Top = ascenseur.Top - 10
    ascenseur.Show
    batiment.Timer1.Enabled = False
     
    End Function
     
    Public Function monter2()
     
    For i = 1 To 500
    ascenseur.Show
    batiment.Timer1.Enabled = True
    Next i
     
     
    End Function
    et dans batiment ( ma premiere form )
    Code : VB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Command1_Click()
    functions.monter2
     
    End Sub
     
     
    Private Sub Timer1_Timer()
    functions.monter
     
    End Sub
    mais quand je fais ca l'ascenseur ne monte qu'une fois

    [Balises de code rajoutées par Thierry AIM, Merci d'y penser la prochaine fois]

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 56
    Par défaut
    en fait j'ai fait un timer qui toutes les .1 seconde fait monter ma fenetre, en meme temps un 2eme timer qui s'active 5 secondes plus tard fait un timer1.enabled = false.

    ca marche mais des fois la fenetre monte de 3cm on va dire, des fois 5, je comprends pas.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Par défaut
    Bonjour,
    Ton ascenseur, c'est une Form?? (ascenseur.Show)
    A quoi sert ta boucle For i = 1 to 500 ??

    jpleroisse

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 46
    Par défaut
    Peut être en désactivant puis réactivant tes timer à chaque éxécution parce qu'avec des temps d'intervalle si court VB doit s'emméler un peu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Timer1_Timer()
        Timer1.Enabled = False
        Form1.Top = Form1.Top - 20
        Timer1.Enabled = True
    End Sub
     
    Private Sub Timer2_Timer()
        Timer2.Enabled = False
        Timer1.Enabled = IIf(Timer1.Enabled, False, True)
        Timer2.Enabled = True
    End Sub
    Enfin bon moi c'est une habitude que j'ai pris.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 56
    Par défaut
    Bigyork => ca fait toujours pareil, ca monte pas toujours de la meme hauteur

    jp => la boucle c"etait pour le faire monter 500 fois de la petite distance 10

  9. #9
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par dureiken
    Bigyork => ca fait toujours pareil, ca monte pas toujours de la meme hauteur

    jp => la boucle c"etait pour le faire monter 500 fois de la petite distance 10
    C’est normal ta boucle de 500 fois elle ne fait pas grand chose... elle demande d'afficher 500 fois de suite l'ascenseur tout en mettant à 1 le timer... mais.. l'ascenseur à tous juste le temps de s'afficher une fois que la boucle s'est exécutée 500 fois il n'y a rien qui l'arrête... essai ::

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    dim i As integer
    Public Function monter() 
     
    ascenseur.Top = ascenseur.Top - 10 
    ascenseur.Show 
    batiment.Timer1.Enabled = (i > 0) 'Rappel du timer si i >0
    i=i-1
     
    End Function 
     
    Public Function monter2() 
     
    ascenseur.Show 
    batiment.Timer1.Enabled = True 
    i = 500 'initialise le compteur à 500
     
    End Function

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Par défaut
    Bonjour,
    Ce code fait monter et descendre ta Form pendant 10 secondes.
    Dans ta Form Batiment.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Command1_Click()
    ascenseur.Top = 10
    ascenseur.Show
    End Sub
    Dans ta Form ascenseur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Option Explicit
    Dim cpt As Integer
    Private Sub Form_Load()
    cpt = 10
    Me.Top = 10
    Timer1.Interval = 1000
    End Sub
     
    Private Sub Timer1_Timer()
    cpt = cpt - 1
    If Me.Top = 10 Then
        Me.Top = 3000
    Else
        Me.Top = 10
    End If
    If cpt = 0 Then
    Timer1.Interval = 0
    End If
    End Sub
    jpleroisse

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 56
    Par défaut
    ok merci bbil ta solution marche nickel
    merci jp aussi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C++]Timer pour exécution séparée
    Par Invité4 dans le forum SDL
    Réponses: 33
    Dernier message: 26/02/2008, 18h01
  2. Execution des Timer
    Par ploxien dans le forum Langage
    Réponses: 2
    Dernier message: 10/10/2007, 11h26
  3. Timer supérieur à 65535 ms j'ai une erreur exécution 380
    Par christophe_s46 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 06/08/2007, 11h51
  4. [ timer ] execution
    Par hocinema dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 09/03/2007, 18h15
  5. [DLL] Ma DLL execute le Timer une seul fois !
    Par TOTO32 dans le forum Langage
    Réponses: 14
    Dernier message: 13/08/2005, 20h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo