Menu sous visual basic

vfi Messages postés 24 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 19 mai 2008 - 22 déc. 2003 à 10:49
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 - 22 déc. 2003 à 15:54
Bonjour,

je voudrais savoir si quelqu'un à un remède pour mon problème:

En fait j'ai une application dans laquelle j'utiliser un timer (vb) pour écrire et lire dans une base de donnée le plus rapidement possible. Et le problème c'est quand je sélectionne le menu de ma form vb, le timer se bloque. Puis quand je quitte mon menu il repart.

Y a-t-il une astuce?

Merci

9 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
22 déc. 2003 à 11:41
Mais pourquoi utilises-tu un timer pour écrire dans une DB ? Je ne vois pas ce que tu fais exactement ?

Christophe R.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
22 déc. 2003 à 11:42
Mais pourquoi utilises-tu un timer pour écrire dans une DB ? Je ne vois pas ce que tu fais exactement ?

Christophe R.
0
vfi Messages postés 24 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 19 mai 2008
22 déc. 2003 à 12:12
En fait, c'est pour faire une simulation d'un serveur OPC.

Ce Timer permettra de lire en permanence l'état des machines de mon projet.
Ces machines renvoient à mon serveur OPC leurs infos via un réseau Profibus.

Mais le problème c'est que pour l'instant je n'ai pas reçu le matériel (automate, capteur,carte profibus....). Du coup je simule via un base de données Access les états du serveur OPC.

C'est un peu compliqué mais je dois le faire.
0
K@zuya Messages postés 306 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 15 février 2016
22 déc. 2003 à 12:17
tu devrai faire ton propre timer

Private Declare Function GetTickCount Lib "kernel32" () As Long

Dim TMR_Enabled As Boolean

Private Sub RunTimer(TMR_Interval)
TMR_Enabled = True
Dim Cur_Time As Long
Dim Next_Time As Long
Cur_Time = GetTickCount
Next_Time = Cur_Time + TMR_Interval
Do While TMR_Enabled
    If Next_Time <= Cur_Time Then
        TIMER_SUB
        Next_Time = Cur_Time + TMR_Interval
    End If
    Cur_Time = GetTickCount
    DoEvents
Loop
End Sub

private sub TIMER_SUB()
' code a executer ici
End sub


en voila un exemple, pour l'utiliser, tu met RunTimer(500)
et pour le stopper, tu met TMR_Enabled = false

voila

K@zuya 8-)
0

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

Posez votre question
K@zuya Messages postés 306 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 15 février 2016
22 déc. 2003 à 12:19
tu devrai faire ton propre timer

Private Declare Function GetTickCount Lib "kernel32" () As Long

Dim TMR_Enabled As Boolean

Private Sub RunTimer(TMR_Interval)
TMR_Enabled = True
Dim Cur_Time As Long
Dim Next_Time As Long
Cur_Time = GetTickCount
Next_Time = Cur_Time + TMR_Interval
Do While TMR_Enabled
    If Next_Time <= Cur_Time Then
        TIMER_SUB
        Next_Time = Cur_Time + TMR_Interval
    End If
    Cur_Time = GetTickCount
    DoEvents
Loop
End Sub

private sub TIMER_SUB()
' code a executer ici
End sub


en voila un exemple, pour l'utiliser, tu met RunTimer(500)
et pour le stopper, tu met TMR_Enabled = false

voila

K@zuya 8-)
0
K@zuya Messages postés 306 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 15 février 2016
22 déc. 2003 à 12:24
ah, j'oubliais, ne met pas run_timer dans Form_Load sinon, ton appli na va pas s'affichier, met le dans Form_Activate au plus tôt
K@zuya 8-)
0
vfi Messages postés 24 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 19 mai 2008
22 déc. 2003 à 12:45
Merci pour ton aide mais ça fait la même chose.
J'ai l'impression que le menu vb prend la main et ne la rend plus à mon application tant qu'il est est déployé!

???????????????????????
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 déc. 2003 à 13:20
En effet, les menus prennent la main.

Essaie de placer le timer dans une autre Form (cachée) et si ca ne regle pas ton problème,

Une solution qui fonctionne serait le MultiThreading.

le timer et le menu seraient en effet dans deux threads differentes donc, aucun soucis. SI tu as besoin d'infos sur le multithreading, regardes sur le net, et tu trouvera très certainement un exemple de code VB sur [mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 5
22 déc. 2003 à 15:54
il y a quelque chose qui me parait bizard, j'utilise VB6.0 sous Windows XP et moi mon menu n'interromp pas mon timer (ce qui n'est pas le cas d'un msgbox par exemple...) c'est a dire que toutes les 2 sec, j'ai mis un timer qui m'affiche un msgbox "Bonjour"...(pour voir) pis j'ai mis un menu comprenant 1 sous menu (tout ca avec le createu de menu pour que le programme attende un choix). Ben toutes les 2 sec, il ferme l'arboresence du menu s'il est ouvert et affiche "Bonjour" (mais a ce moment la, l'exectution du timer est interrompue...) Voila, donc je c pas si c'est ce que tu cherches a faire ou si c'est moi qui ai pas tout compris...
(C'etait juste pour info...)
0
Rejoignez-nous