Bonjour à tous,
Y a t-il moyen de demarrer un timer lors de la fin d'un autre timer.
Merci à tous.
Bonjour à tous,
Y a t-il moyen de demarrer un timer lors de la fin d'un autre timer.
Merci à tous.
Timer.Enabled = True pour le démarrer, si mes souvenirs sont bon
Avec 2 Timers, l'un en court(Timer1) l'autre(Timer2) en arrêt :L'ordre des instructions peut varier et / ou être inversé selon l'endroit où on les place.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Timer2.Enabled = Not Timer1.Enabled Timer1.Enabled = False ' Arrêt du 1er donc mettre le 2ème en marche
y a t-il d'autre code à ajouter car lorsque je met le premier timer en marche voila ce que cela me dit "object variable or with bloc variable not set"
je metMerci beaucoup
Code : Sélectionner tout - Visualiser dans une fenêtre à part timer1.enabled=true
A quelle ligne le problème se pose-t-il ?cela me dit "object variable or with bloc variable not set" je met timer1.enabled=true.
As-tu placé 2 Timers sur la Form ?(Timer1 et Timer2)
non je n'ai pas mis de timer1 et 2 sur la form par contre je declare
dans les generales
Code : Sélectionner tout - Visualiser dans une fenêtre à part dim timer1 as timer
pour l'instant j'essai de faire demarrer le premier timer.
bonjour,
si tu débute en VB6 le mieux est que tu place tes 2 timer sur ta form .. et supprime tes lignes dim timer...
ok, c'est ce que j'ai fait.je n'ai plus l'erreur. Maintenant j'essai d'effectuer du code lorsque le timer est fini.mais cela ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Timer1.Enabled = True If Timer1 = False Then Picture1.Line (0, 0)-Step(300, 1000), , BF
ok maintenant j'ai ecrit le code suivant:
dites moi si je me trompe lorsque le timer1 est fini je dessine et je lance le timer2 et lorsque le timer2 est fini je dessine.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Sub Timer1_Timer() Picture1.Line (0, 0)-Step(300, 1000), , BF Timer2.Enabled = True End Sub Private Sub Timer2_Timer() Picture1.Line (500, 0)-Step(300, 1000), , BF End Sub
seulement dans l'état je dessine les deux rectangle à la fin du timer1.
que faire.
il faut que tu définisse l'état initial l'état initial des propriété enabled et interval de tes deux timer, soit par le code soit dans l'éditeur de ta Form fenêtre propriété de tes 2 timers...
voilà j'ai reussi la chose suivante demarrer le timer2 à la fin du timer1 en ajoutant une ligne timer2.enabled=false lors du demarrage du timer1 pour interdire le demarrage du timer2. si j'ai bien tout compris. voici mon code.
en fait je voudrais simuler les feu tricolore d'un carrefour.
à noter les rectangles a la fin des timer c'est pour l'essai des timers.
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
21
22
23
24
25 Private Sub Picture1_Paint() Picture1.Line (6000, 0)-Step(0, 3800) Picture1.Line (0, 3800)-Step(6000, 0) Picture1.Line (0, 4750)-Step(6000, 0) Picture1.Line (6000, 4750)-Step(0, 6000) Picture1.Line (6950, 4750)-Step(0, 6000) Picture1.Line (6950, 4750)-Step(7000, 0) Picture1.Line (6950, 3800)-Step(7000, 0) Picture1.Line (6950, 0)-Step(0, 3800) Picture1.Line (5500, 2500)-Step(300, 1000), , BF Picture1.Line (4500, 5000)-Step(1000, 300), , BF Picture1.Line (7200, 5000)-Step(300, 1000), , BF Picture1.Line (7200, 3300)-Step(1000, 300), , BF Timer2.Enabled = False End Sub Private Sub Timer1_Timer() Picture1.Line (0, 0)-Step(300, 1000), , BF Timer2.Enabled = True End Sub Private Sub Timer2_Timer() Picture1.Line (500, 0)-Step(300, 1000), , BF End Sub
Tu prends un seul timer (par exemple 60 secondes avec timer 100mS et décompteur par 600 toutes les 100mS)
Tu le lances avec le feu jaune allumé
- Passage à 550 extinction jaune et allumage rouge
- Passage à 300 extinction rouge et allumage Vert
- Passage à 000 extinction Vert , allumage jaune et rechargement du décompteur par 600
Tu as la séquence 5 secondes jaune, 25 secondes rouge et 30 secondes vert
Il faut 3 variables globales
Tempo%=600
TempoJaune%=550
Temporouge%=300
Un programme de ce genre (non testé !)
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 ' variable global Tempo% TempoTotale% ' 600 TempoJaune% ' 550 TempoRouge% ' 300 Private Sub Timer1_Timer() Tempo% = Tempo% - 1 select case case 0 jaune=1 : Vert=0 Tempo%=TempoTotale% case <= TempoRouge% rouge=0 : Vert=1 case <= Tempojaune% rouge=1 : jaune=0 End Select End Sub
Salut
Une autre approche:
Sur ton Form tu poses, 1 Timer, 1 CommandButton, 1 CheckBox, 1 PictureBox (sans changer leurs noms)
DANS ton Picture1, tu poses 3 Shapes que tu renommes ShapeRouge, ShapeOrange et ShapeVert
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 Option Explicit Dim FinRouge As Integer, FinOrange As Integer, FinVert As Integer, Npassage As Integer Private Sub Form_Load() '---------------- partie pouvant être fait directement à la construction ---------------------- Timer1.Enabled = False Timer1.Interval = 1000 ' tempo de 1 Sc Command1.Move 420, 120, 1395, 315 'placement et dimensionnement Command1.Caption = "Go" Check1.Move 1920, 120, 255, 255 Check1.Value = 1 ' coché (Checked) Check1.ToolTipText = "Non coché, 1 seul cycle" 'rempli l'info bulle Picture1.Move 780, 540, 615, 1815 Picture1.Appearance = 0 'Flat (cadre fin) Picture1.BackColor = &H4040& ' couleur du fond (vert très foncé) ShapeRouge.Move 60, 90, 465, 465 ShapeRouge.Shape = 3 ' Circle ShapeRouge.BackStyle = 1 ' Opaque ShapeRouge.BackColor = &H5F& ' rouge très foncé ShapeOrange.Move 60, 645, 465, 465 ShapeOrange.Shape = 3 ShapeOrange.BackStyle = 1 ShapeOrange.BackColor = &H2298& ' orange très foncé ShapeVert.Move 60, 1215, 465, 465 ShapeVert.Shape = 3 ShapeVert.BackStyle = 1 ShapeVert.BackColor = &H2D00& ' Vert très foncé '---------------- Fin partie pouvant être fait directement à la construction ---------------------- FinVert = 3 ' 3 Sc FinOrange = 4 ' 4-3 = 1 Sc FinRouge = 7 ' 7-4 = 3 Sc End Sub Private Sub Command1_Click() If Command1.Caption = "Go" Then Command1.Caption = "Arreter" Npassage = 0 ShapeVert.BackColor = &HFF00& ' vert claire pour allumer Timer1.Enabled = True 'demare le timer Else Timer1.Enabled = False 'arret du timer Command1.Caption = "Go" ShapeRouge.BackColor = &H5F& ' rouge très foncé ShapeOrange.BackColor = &H2298& ' orange très foncé ShapeVert.BackColor = &H2D00& ' Vert très foncé End If End Sub Private Sub Timer1_Timer() Npassage = Npassage + 1 Select Case Npassage Case FinVert ShapeVert.BackColor = &H2D00& ' Vert très foncé pour éteindre ShapeOrange.BackColor = &H80FF& ' orange claire pour allumer Case FinOrange ShapeOrange.BackColor = &H2298& ' orange très foncé pour éteindre ShapeRouge.BackColor = &HFF& ' rouge claire pour allumer Case FinRouge ShapeRouge.BackColor = &H5F& ' rouge très foncé pour éteindre If Check1.Value = 0 Then 'ne pas continuer le cycle Timer1.Enabled = False 'arrete le timer Command1.Caption = "Go" Else ' reprendre/continer le cycle Npassage = 0 ShapeVert.BackColor = &HFF00& ' vert claire pour allumer End If End Select End Sub
C'est un truc comme ça que tu veux faire ?
Feurouge.zip
Attention il faudrait rajouter des limitations de sécurité ( valeur min/max des tempos, caractères non numériques etc)
Pour fêter le premier mensiversaire de l'absence d’intérêt de notre ami olivier62232 pour le sujet , je me suis amusé à faire un programme un peu plus complet disponible ICI : http://www.developpez.net/forums/d14...s/#post7944329
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager