Est-il possible de creer des timers en dynamique?

cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 - 30 juil. 2003 à 16:09
cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 - 31 juil. 2003 à 12:09
Salut!

Je cherche a creer des timers dont le nb est une variable.
Est-il possible de faire "load Timer1(i)" pour creer un timer et si oui, comment se servir de la fonction "Timer1_Timer()" pour chacun des index de Timer1?
Je ne sais pas si j'ai ete assez clair, mais si qq'un peut m'aider ca serait genial!! Merci!!

10 réponses

RicoNuch Messages postés 140 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 16 décembre 2006
30 juil. 2003 à 16:22
Oui, c'est possible.
Crée le premier timer sur ta Form en lui attribuant l'index 0.
Tu peux ajouter des timers de la façon suivante :

Dim I As Integer
For I = 1 To 5
Load timEssai(I)
Next I

Pour récupérer l'événement : après avoir attribué l'index 0 au timer original, double-clique dessus. La procédure suivante est créée :

Private Sub timEssai_Timer(Index As Integer)

Tu n'as plus qu'à utiliser l'index pour séparer les événements de tes timers.

RicoNuch
0
cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 1
30 juil. 2003 à 16:34
Est-ce que je peux mettre d'autres parametres en plus de Index en entree de la fonction Private Sub timEssai_Timer?

Et Est-ce que je peux faire par exemple "Call timEssai_Timer(1, autreParametre)"?
0
cs_Base Messages postés 70 Date d'inscription jeudi 23 janvier 2003 Statut Membre Dernière intervention 31 juillet 2003
30 juil. 2003 à 16:38
Lut,

Oui tu peux le faire... Il faut déclarer un Timer avec l'index 0 sur ta feuile :

'...
For i = 1 To 10
Load Timer(i)
Timer(i).Interval = 1
Next i
'...

'Evénement du timer
Private Sub Timer1_Timer(Index as Integer)
'
'...
'
End Sub


B@se 8-)
0
RicoNuch Messages postés 140 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 16 décembre 2006
30 juil. 2003 à 16:56
Non, on ne peut pas changer l'intitulé de l'événement. Ce que tu peux faire, c'est déclarer des variables au niveau module ou projet. Quand l'événement Timer se produira, il pourra trouver tes paramètres si tu les as fait passer dans ces variables.

RicoNuch
0

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

Posez votre question
cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 1
30 juil. 2003 à 17:20
Merci pour ton aide.
J'ai encore un pb: en fait je veux detecter la creation de pls fichiers de la facon suivante:

Private Sub Timer1_Timer(index As Integer)
Dim bIsExistFile As Boolean
Dim i As Integer, nbHi As Integer

nbHi = 2
For i = 1 To nbHi bIsExistFile (Dir("H924-H" & i & ".ini") "")
'Si bIsExistFile est TRUE, le fichier n'existe pas.

'Désactiver le Timer si le fichier fichierIni.ini apparait:
If Not bIsExistFile Then
Me.Timer1(i).Interval = 0
MsgBox " Apparition du fichier H924-H" & i & ".ini!!!"
End If
Next i
End Sub

Me.Timer1(i).Interval = 0 permet bien de desactiver le timer? parce que il continue a boucler et a me mettre le MsgBox? Peut-etre peux-tu m'aider encore une fois?
0
RicoNuch Messages postés 140 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 16 décembre 2006
30 juil. 2003 à 18:30
Pour désactiver le timer, passer sa propriété Enabled à False :

timEssai.Enabled = False

Bonne prog...
RicoNuch
0
cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 1
31 juil. 2003 à 10:33
Salut!

Decidemment j'y arrive pas! J'y comprend plus rien. J'ai mis:
Me.Timer1(Hinb).Interval = 0
Me.Timer1(Hinb).Enabled = False
et mon timer est encore actif, C'est normal?
0
RicoNuch Messages postés 140 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 16 décembre 2006
31 juil. 2003 à 11:22
Eh, oui ! C'est normal.

Pour désactiver un timer tu ne dois pas jouer sur sa propriété Interval mais sur sa propriété Enabled.

Si tu passes Interval à 0 le seul résultat que tu obtiendras sera que l'événement timer se produira à des intervalles proches de 0 millisecondes, c'est à dire que VB tentera dans la mesure où le processeur le permet d'activer continuellement l'événement.

Laisses donc Interval de côté et agit sur Enabled

RicoNuch
0
RicoNuch Messages postés 140 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 16 décembre 2006
31 juil. 2003 à 11:36
Rectification : je n'avais pas bien lu ton message. Si tu as effectivement passé la propriété Enabled à False et que l'événement se produit toujours, il peut y avoir plusieurs
raisons qui se trouvent dans ton code. Vérifie que :

- Tu ne t'es pas emêlé les pinceaux dans tes différents Timers et que tu as bien déactivé le bon...

- Que la propriété ne repasse pas immédiatement à True dans un autre endroit de ton code. Pour s'en apercevoir, tu peux passer l'expression dans la fenêtre Espion et cocher la case "Arrêter si la valeur change".

RicoNuch
0
cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 1
31 juil. 2003 à 12:09
En fait, pour l'instant, j'ai bidouiller en ajoutant un booleen qui est initialise a false et qd il rentre ds ma boucle (ou il faut que le fichier existe ET que le booleen soit a false) ou je desactive le timer et je passe le booleen a true ce qui fait qu'il ne peut plus rentrer dans la boucle. Je suis d'accord, c'est de la bidouille mais c une solution en attendant de voir d'ou vient mon pb comme tu m'as indique de faire.
MERCI de ton aide precieuse!
0
Rejoignez-nous