je veux creer un programme qui va utiliser le timer comme reference mais lors de l'execution il me donne l'erreur suivant "variable objet ou variable bloc with non définie "
voici code utilisé:
Dim WithEvents t As Timer
Dim i As Integer
Private Sub Form_Load()
i = 0
t.Enabled = True
t.Interval = 1000
End Sub
Private Sub t_Timer()
i = i + 1
Me.Text1.Text = i
End Sub
Salut
En VB6, il n'est pas possible (difficile) d'ajouter des composants s'ils n'ont pas au moins un exemplaire sur la forme.
Il te faut donc placer graphiquement l'objet Timer (qu'on appellera monTimer) sur ta forme.
Si tu as besoin de plusieurs de ces objets en mode Run, il te suffit de l'indexer (mettre son Index à 0), puis, dans le code, de faire un
Load monTimer(1)
Pour info, un Timer réglé à 1000 mSec ne garantit pas la précision.
Le déclenchement peut être retardé selon la charge de la machine.
Si tu as besoin de précision, il te faut t'orienter vers des APIs qui rechercheront l'heure exacte du système, basé sur la fréquence du CPU
Il y a plusieurs exemples parmi les codes VB6 sur le site (cherche "timer précision" dans la Recherche)
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Salut,
Sans du tout vouloir contredire ce qui à été dit avant, et venant du monde DotNetien (VB.NET), j'aurais a priori dit qu'il manque un "new" :
Dim WithEvents t As New Timer
Bon, ça n'a surement rien à voir, mais je le dis quand même...
-> bien tenté mais non, çà ne marche pas comme çà en VB6 ^^
(pour le coup on aurait même un message d'erreur, impossible de mettre NEW avec WITHEVENTS, justement parce qu'on doit avoir un contrôle "existant" pour recevoir (puis re-transmettre) ses évènements
ici si la demande est de ne pas poser de contrôle en mode édition, il faut tout de même le faire par code, pas le choix
çà donnerait :
Option Explicit
Dim WithEvents
t
As
Timer
'déclaration évènements
'
'
Private Sub
Form_Load()
Set t = Me.Controls.Add("VB.Timer", "t") 'création timer
t.Enabled = True
t.Interval = 1000
End Sub
Private Sub Form_Unload(Cancel As Integer)
t.Enabled = False
Set t = Nothing
End Sub
'
Private Sub t_Timer()
Static i As Long
i = i + 1
Text1.Text = CStr(i)
End Sub