IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

afficher un chronometre


Sujet :

WinDev

  1. #21
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Récapitulons :
    1. Les fenêtres sont en mode "Fenêtre libre"
      J'ai testé en mode MDI Mère et fille, ça fonctionne aussi.
    2. La fenêtre Mère appelle la procédure locale suivante :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
       
      PROCÉDURE TraitementLong()
      nNoChrono est entier
      nNoEtape est entier
       
      nNoChrono=1
      ChronoDébut(nNoChrono)
      OuvreFille(FEN_Affiche_chrono,nNoChrono)
       
      POUR nNoEtape=1 À 4
      	FEN_Affiche_chrono.LIB_Info=ChaîneConstruit("Étape %1",nNoEtape)
      	Multitâche(200)	//Simule le traitement
      FIN
      Ferme(FEN_Affiche_chrono)
    3. La fenêtre d'affichage (FEN_Affiche_chrono) comporte les codes suivants
    4. AfficheChrono est une procédure globale automatique réglée comme suit:
      • Type
        Timer/Procédure différée
      • Comment
        Nombre de fois : Infini
        Espacement : 00:00:00:10
        En cas de rappel de la procédure : Ignorer le timer ...
      • Quand
        Immédiatement au moment de l'appel
      • Code
        Code : Sélectionner tout - Visualiser dans une fenêtre à part
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
         
        PROCÉDURE AfficheChrono(sLibellé est chaîne,nNoChrono est entier)
        chLibellé est Champ
        sChronoAffiché est chaîne
        duDuréeChrono est Durée
         
        chLibellé<-{sLibellé,indChamp}
        duDuréeChrono..EnMillisecondes=ChronoValeur(nNoChrono)
        sChronoAffiché=DuréeVersChaîne(duDuréeChrono,"HH:MM:SS:LL")
        chLibellé..Libellé=sChronoAffiché
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  2. #22
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 469
    Points : 121
    Points
    121
    Par défaut
    avant tout je te remercies pour le temps que tu me consacres...

    Ton recap est parfait, j'avais juste la fonction ChronoDebut qui était lancée dans le code d'init de la Fen_Affiche_Chrono.
    Tout le reste est rigoureusement identique.

    J'ai donc déplacer le ChronoDebut comme dans ton récap.
    ça n'a rien changé.

    Je vais refaire le tout dans un autre projet pour voir...

    C'est incompréhensible !

    PS : ne pas oublier que je suis en version 23 ! j'espère qu'il n' y a pas un vieux bug qui traine la dessous...

  3. #23
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 469
    Points : 121
    Points
    121
    Par défaut
    Punaise !!!!!!

    Dans un projet neuf, ça fonctionne !!!

    alors là.... ?????? qu'elle est la différence...

  4. #24
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jjacques68 Voir le message
    Dans un projet neuf, ça fonctionne !!!
    On appelle ça la solution "Attila".

    Pourquoi est-ce que ça ne fonctionnait pas avant ,
    LIB_Chrono en mode heure peut être alors que la conversion était faite en mode chaine dan le code et un oubli dans le nouveau projet.
    Ou alors une compilation non faite auparavant et qui considérait encore la procédure globale comme locale.
    .....
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  5. #25
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 469
    Points : 121
    Points
    121
    Par défaut
    dans les 2 projets oui...

    par contre dans le 1er projet, dans le traitement long, je fais appel à des champs de la fenêtre principale... donc de l'IHM...

    est ce que ce serait pas ça ?

    dans le projet 2, dans la boucle de traitement long, j'ai essayé

    - DonneFocus(Fen_Principale) ----> ça fonctionne toujours
    - RepriseSasie(Fen_Principale) ----> ça bloque l'affichage des étapes mais pas le chrono !!!

  6. #26
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 469
    Points : 121
    Points
    121
    Par défaut
    Ou alors une compilation non faite auparavant et qui considérait encore la procédure globale comme locale.
    J'ai justement essayé de la mettre en procédure interne à la fenêtre et ça marche tout aussi bien.

    Mais c'est dingue, de pas arriver à le faire dans le 1er projet !!
    J'ai recompiler pourtant !

  7. #27
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jjacques68 Voir le message
    par contre dans le 1er projet, dans le traitement long, je fais appel à des champs de la fenêtre principale... donc de l'IHM...
    Le problème de modification de l'IHM a lieu lorsque l'on tente la modification via un thread secondaire.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  8. #28
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 469
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Le problème de modification de l'IHM a lieu lorsque l'on tente la modification via un thread secondaire.
    donc comme je suis toujours dans le Thread principal, ça devrait pas être ça le soucis.

    y a quelque chose qui me bloque le timer (procédure automatique) dans mon "traitement long"...

    Mais je vois vraiment pas quoi...

    j'execute des requetes, fais appel à l'IHM (champs planning), écrit dans des tables...

    Mais je ne trouve pas d'instructions particulières qui pourraient bloquer le timer...

  9. #29
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 469
    Points : 121
    Points
    121
    Par défaut
    alors intéressant :

    dans ma boucle de traitement long, j'ai ajouté un Multitache(200).

    et bien à chaque itération, qui prend donc moins de 2 secondes, j'ai le chrono qui se fige un court instant pour ensuite tourner le reste des 2 secondes.
    Sans cette tempo, le chrono est figé jusqu'à la fin !

    Donc c'est bien ça, il y a quelque chose qui me fige le timer pendant le traitement !!!

    Je vois toujours pas quoi, je pensais à l'execution des requêtes qui peut être "long" mais c'est pas le cas.
    J'ai pu le vérifier avec des Trace() avant et après l'execution des requetes, et le chrono tourne pendant ce temps là.

    J'utilise l'instruction "CONTINUER" dans mes boucles, mais rien ne dit dans l'aide que c'est bloquant, puis ce serait débil...

  10. #30
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 469
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par jjacques68 Voir le message
    Donc c'est bien ça, il y a quelque chose qui me fige le timer pendant le traitement !!!
    Et bien je crois bien que l'instruction PlanningAjouteRendezVous() est bloquante.

    J'ai réussi à le reproduire, et ça semble bien être ça.
    Mon timer est figé dès l'appel de cette fonction qui peut prendre +- de temps

    EDIT : NAN FAUSSE PISTE !

Discussions similaires

  1. [XL-2010] afficher chronometre dans une cellule
    Par chefsun dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/03/2012, 10h24
  2. [Débutant] Chronometre qui s'affiche en continue
    Par seanbean dans le forum C#
    Réponses: 2
    Dernier message: 17/12/2011, 20h43
  3. afficher du texte
    Par Mau dans le forum OpenGL
    Réponses: 10
    Dernier message: 24/06/2003, 15h31
  4. Afficher/Masquer un bouton comme IE 6
    Par benj63 dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/07/2002, 13h12
  5. Réponses: 2
    Dernier message: 10/06/2002, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo