Probleme de Timer pour formulaire access

Panda -  
 seb4257 -
Bonjour,

je voudrait afficher une image pendant quelques secondes puis la faire disparaitre, un peu comme une infobulle.
j'ai donc le code suivant:

Me.ImgZoom.Visible = True

tinit = Timer
Do
If Timer - tinit > 2 Then
GoTo TempsEcoule
End If
Loop

TempsEcoule:

Me.ImgZoom.Visible = False

mais ça ne marche pas. "Me.ImgZoom.Visible = True" ne rend visible l'image qu'après la pause malgré que l'instruction soit placée avant,et l'image redevient donc invisible aussitôt.
comment faire pour que ca reste affiché 2 secondes?

merci pour votre aide

10 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    un peu modifie, mais le plus important c'est:
    Timer - tinit < 2 au lieu de Timer - tinit > 2

    Me.ImgZoom.Visible = True
    tinit = Timer
    Do While Timer - tinit < 2
        DoEvents
    Loop
    
    TempsEcoule:
    Me.ImgZoom.Visible = False
    0
  2. Panda
     
    vraiment merci, ça marche au poil.

    une idée de pourquoi ça marche avec ta méthode et pas avec l'autre?
    comme ça je me coucherai moins con et je ne referai pas l'erreur.
    0
  3. Panda
     
    je voulais pousser le bouchon un peu plus loin, mais ça ne semble pas fonctionner.

    je voulais sur le même principe faire une boucle identique avant de rendre l'infobulle visible pendant 1/2 seconde afin que si tu passes juste le curseur au dessus sans t'arrêter celle ci n'ait pas le temps de s'afficher.
    le problème vient du fait que j'ai plusieurs contrôles a coté l'un de l'autre, et donc que si mon curseur passe rapidement au dessus de plusieurs, il y a plusieurs boucles While qui se déclenchent en simultanée et ça fait planter Access.
    auriez vous une idée?

    tinit = Timer
    Do While Timer - tinit < 1
    DoEvents
    Loop

    Me.ImgZoom.Visible = True

    tinit = Timer
    Do While Timer - tinit < 2
    DoEvents
    Loop

    TempsEcoule:
    Me.ImgZoom.Visible = False
    0
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Ce que vous avez fait marche dans l'absolu. Ce que j'ai fait est un peu plus logique, j'ai fait une boucle d'attente de x secondes (avec un doevents pour ne pas monopoliser le processeur) et ensuite le programme continu.

    Bonne suite
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Pour finir, c'est le doevents qui doit faire le difference, car le code reagit plus vite que l'affichage en access ou excel
    0
  7. Panda
     
    merci pour tes réponses.
    par contre je n'ai décidément pas trouvé comment différer l'affichage de "l'infobulle" avec cette même méthode affin que, si tu ne fais que passer le curseur au dessus, elle ne s'affiche pas.
    0
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    pas trouvé comment différer l'affichage de "l'infobulle"qué zaco, si c'est ce que je pense, pas possible ou alors voir avec les evenements souris

    A+
    0
  9. Panda
     
    de la même façon que je crée une boucle timer pour afficher l'infobulle pendant 2 seconde, je voudrais en créer une avant l'affichage de l'infobulle.
    comme l'infobulle est déclenchée par le mousemove sur mon contrôle, je voudrais effectivement pouvoir passer au dessus de celui-ci sans avoir besoin qu'elle se déclenche.
    donc l'idée etait de mettre une autre boucle timer d'1 seconde au début de la fonction qui regarde si il se passe autre chose (par exemple ma souris bouge encore) et le cas échéant sortir de la fonction au lieu de poursuivre avec l'affichage de l'infobulle.

    tinit = Timer
    Do While Timer - tinit < 1
    DoEvents
    'si il y a un événement c'est que mon curseur passait au dessus de mon contrôle, mais qu'il ne faut pas afficher l'infobulle donc que je dois sortir. un truc du style "if events then goto TempsEcoule" sauf que cette fonction n'existe pas.
    Loop

    Me.ImgZoom.Visible = True

    tinit = Timer
    Do While Timer - tinit < 2
    DoEvents
    Loop

    TempsEcoule:
    Me.ImgZoom.Visible = False
    0
  10. seb4257
     
    t'as trouvé une solution pour le délai d'affichage?
    0