Timer

fallen_13
Messages postés
5
Date d'inscription
jeudi 19 mai 2005
Statut
Membre
Dernière intervention
18 novembre 2005
- 16 nov. 2005 à 16:38
fallen_13
Messages postés
5
Date d'inscription
jeudi 19 mai 2005
Statut
Membre
Dernière intervention
18 novembre 2005
- 18 nov. 2005 à 15:47
Bonjour,


J'ai un souci sur un timer qui se bloque et reste inactif.


Pour résumer mon application, c'est une mise a jour automatique d'un diaporama dont les images sont issues du net.
Pour ce faire, mon prog est constitué de deux forms
Le premier form contient
Un timer et slider, un controle inet, deux boutons options , un controle image ainsi qu'une fonction (nommé téléchargement).
Mon deuxième form est constitué d'un timer, un bouton option , d'un dirlist box et un filelistbox.
Lorsque dans mon form1, je clique sur l'optionbutton, il m'ouvre ma form2 qui se charge de lancer le timer.
dont voici le code

dim i as integer
t=timer
label4.caption=1
for i=1 to 20
label4.caption=label4.caption+1
do while timer-t<i
doevents
loop
next
call form1.telechargement

La fonction telechargement se lance au bout de 20s (c'est pour les tests, apres ca sera toute les 35/40min), va chercher mon image "gif" mets a jour le filelistbox ainsi que mon diaporama mais voila que mon timer de la form2 ne redemarre pas ...
Parcontre si je supprime l'appel de la fonction, mon timer recommence.
J'ai teste en mettant form2.timer1.enabled=true en divers endroit du code de la form1 mais il ne se passe rien...

Le code de mon diaporama inclu dans le timer de la form1.
image1=LoadPicture(Form2.File1.Path & "" & Form2.File1.filename)
image1.width=9000
image1.height=9000
image1.stretch=true
if Form2.File1.ListIndex=Form2.File1.Listcount-1 then
Form2.File1.ListIndex=0
else
Form2.File1.ListIndex=Form2.File1.ListIndex+1
end if

Si quelq'un a une idée ou connait la cause de mon probleme ca serait achement cool
Merci à (aux) personne(s) qui m'apporteront une aide....

Fallen
A voir également:

9 réponses

olixelle
Messages postés
506
Date d'inscription
vendredi 30 juillet 2004
Statut
Membre
Dernière intervention
3 mars 2008
2
16 nov. 2005 à 16:45
g rien compris :)

Rollerman
0
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
16 nov. 2005 à 18:52
Salut,
Par hasard, tu ne confondrais pas la fonction Timer et le contrôle Timer ?

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
fallen_13
Messages postés
5
Date d'inscription
jeudi 19 mai 2005
Statut
Membre
Dernière intervention
18 novembre 2005

16 nov. 2005 à 21:46
Arf ! Je vais essayer de mieux m'expliquer..
J'appele fonction timer la fonction qui est declarée par
Private sub timer1_timer()
end sub
Le controle Timer est le controle défini dans le form.
Mais peut-être que je me plante totalement .
Si je me trompe, pourrait-on m'éclairer? merci

Mon probleme pour essayer de faire simple :))
J'ai un diaporama (cf code ci-dessus) dont les images se situent dans un repertoire.
Toute les 30min, une fonction (que j'ai nommé Public function telechargement() ) se charge de rapatrier une image (par le biais d'un controle inet) et me renommer ce fichier avec la date et heure du pc, elle m' actualise mon diaporama .
Le probleme est que la fonction timer (cf code ci dessus) ne se reactualise pas. IL ne redemarre pas et donc le telechargement ne s'effectue qu'une seule fois...
Comment faire lancer mon telechargement toute les 35min??

Désolé si je m'explique mal, cela ne fait pas longtemps que je travaille en vb :-) Mais il y a un début a tout....

Merci
0
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
17 nov. 2005 à 19:40
No problemo, on a tous débuté un jour.

Sachant que la propriété du contrôle timer ne dépasse pas 1mn (60000ms), je verrais la chose comme ça :

Ta procédure Telechargement dans un module et, toujours dans ce module, au niveau général, une variable : public Tempo as integer (par ex).

Le Timer1.Interval = 60000

et ça dedans :

Private Sub Timer1_Timer()


Tempo = Tempo + 1

If Tempo = 35 Then
Tempo = 0
Call Telechargement
End If

End Sub

Ta procédure Telechargement sera appelée toutes les 35mn, tant que tu n'auras pas mis timer1.enabled = false ou que tu n'auras pas quitté l'appli.

Je n'ai pas essayé le code que tu dis avoir mis dans le timer1_timer mais, à vu de museau, l'utilisation de la fonction timer dans un contrôle timer, ça peut peut-être se faire mais c'est légèrement incompatible.

Bonne prog

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0

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

Posez votre question
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
17 nov. 2005 à 19:42
J'ai oublié qqchose, quand je parle de fonction timer, c'est ce que tu utilises avec t=timer

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
fallen_13
Messages postés
5
Date d'inscription
jeudi 19 mai 2005
Statut
Membre
Dernière intervention
18 novembre 2005

17 nov. 2005 à 23:24
Toujours des soucis. J'ai bien cree un module (contenant ma fonction et la variable tempo).
Mon controle timer se situe dans mon form2. J'ai alors mis le code que tu m'as dit.
Il se lance bien au bout du temps choisi mais une fois que la procedure Telechargement a ete realisé, elle n'est plus appelée et le "tempo" reste à 0.
Par contre si je supprime l'appel de la fonction dans sub timer1_timer(), le "tempo" recommence indefiniement.
Dans ma fonction Telechargement, j'ai essaye de rajouter form2.timer1.enabled=true et form2.timer1.interval=6000 mais sans succes.....

Merci...pour l'aide.
0
fallen_13
Messages postés
5
Date d'inscription
jeudi 19 mai 2005
Statut
Membre
Dernière intervention
18 novembre 2005

18 nov. 2005 à 10:53
J ai continué a chercher, je pense avoir trouve la cause du probleme mais je ne connais pas la solution...
A la fin de ma fonction Telechargement, il y a
form1.timer.enabled=true
form1.timer.interval=form1.slider1.value

En effet, j 'ai mis un slider qui me permet de regler la vitesse de defilement des mes images dans mon diaporama.

Si j'enleve ces deux lignes, ma fonction telechargement se lance toute les x temps et mon "tempo" tourne indéfiniment mais mon diaporama ne fonctionne pas
Par contre si le timer1 de ma form1 est actif, j ai bien mon diaporama mais ma fonction telechargement ne se lance qu'une seule fois...
Je ne comprend pas pourquoi !!!

merci
0
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
18 nov. 2005 à 14:42
Quand tu dis 'mon "tempo" tourne indéfiniment', tu veux dire que la variable tempo se remet à 0 toutes les 35mn ? ou qu'elle s'incrémente au delà de 35 ?
Inutile de remettre partout timer1.enabled = true si tu ne l'as pas mis à false quelquepart dans ton prog.
Pour timer1.interval = 60000, si c'est déclaré au début du prog ou dans les propriétés du controle, pas besoin de le recoder, à moins que tu veuilles changer le délai.
Il me vient une autre idée, ton diapo dure combien de temps ?

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
fallen_13
Messages postés
5
Date d'inscription
jeudi 19 mai 2005
Statut
Membre
Dernière intervention
18 novembre 2005

18 nov. 2005 à 15:47
Oui la variable tempo se remet à 0 toute les 35min.
Parcontre pour cela, j'ai lever le slider .
Le diapo tourne sans cesse. Des que ma fonction Telechargement se lance, elle le reactualise.

J'ai fait des essais en enlevant form1.timer1.interval=form1.slider1.value et en remplacant form1.timer1.interval=60000. Et la c'est ok, ma fonction telechargement est appele toute les 35min, le diapo se remet a jour.
Parcontre aucun moyen de controler la vitesse de defilement des images...

Pour info, je ne sais pas si c'est la cause.
Dans mon controle timer faisant reference au slider, j'ai mis le code du diaporama (cf mon premier message)..

.
0