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 :

GIF qui reste statique lors d'une requete [WD16]


Sujet :

WinDev

  1. #1
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut GIF qui reste statique lors d'une requete
    Hello,
    Sur une fenêtre j'ai un champ planning sur le plan 1 qui doit s'actualiser à chaque prise de focus de la fenêtre.
    Pendant le chargement, je passe ma fenêtre sur le plan 2 où il y a un GIF animé mais il reste statique pendant ma reqûete.
    Que faut-il faire pour qu'il bouge ?
    (j'ai testé de simplement afficher le gif sur une page et il bouge donc le gif fonctionne).
    Ma requête sur la prise de focus de ma fenêtre c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    FEN_principale..Plan = 2
    PlanningSupprimeTout(PLN_Planning)
    OrdreRessources est une Source de Données
    TableRessources est une chaîne = [
    SELECT NOM_RESSOURCE,POSITION_RESSOURCE,IDRESSOURCE,COULEUR_RESSOURCE
    FROM RESSOURCES
    ORDER BY POSITION_RESSOURCE ASC
    ]
    HExécuteRequêteSQL(OrdreRessources,hRequêteDéfaut,TableRessources)
    POUR TOUT OrdreRessources
    	PlanningAjouteRessource(PLN_Planning,OrdreRessources.NOM_RESSOURCE)
    FIN
     
     
    POUR TOUT RDV 
    	MonRendezVous est un RendezVous
    	MonRendezVous.ID = RDV.IDRDV
    	MonRendezVous.Contenu = RDV.CONTENU
    	...
    	PlanningAjouteRendezVous(FEN_principale.PLN_Planning,MonRendezVous)
    FIN
    FEN_principale..Plan = 1
    J'ai lu quelque part que cela vient du fait que windows n'a pas la main pour animer le gif... mais ce problème me dépasse un peu.

    Eric.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    as-tu essayé avec une animation de windev pour savoir si cela marche mieux avec ?

    Nicolas

  3. #3
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Bonjour, oui et cela ne fonctionne pas non plus.
    Le problème ne vient pas du gif mais du fait qu'il doive bouger pendant la requête...
    Eric.

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Peux-tu essayer de mettre ce code derrière un bouton masqué et lancer le traitement de ce bouton lorsque la prise de focus est terminée ?
    Normalement il devrait finir de charger le plan et lancer le traitement ensuite. Ce qui fait que le gif sera peut-être animé avant et pendant. Sinon pour savoir si le traitement fige le gif, il faudrait rester dans le plan et voir si l'animation démarre après le code.

  5. #5
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    As-tu essayé de placer quelques multitache( -1) dans tes boucles POUR ?
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  6. #6
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Hello, les multitache(-1) ont fontionné...
    J'avais déjà cherché de ce côté là mais rien de concluant.

    Pourriez vous en complément m'expliquer ce que fait ce multitache ?

    Comment tu savais que c'était dans les boucle POUR... ?

    Parce que là, j'en ai mis un peu partout mais je n'ai pas très bien saisi pourquoi un seul en début de code ne suffisait pas...

    Eric.

  7. #7
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    En fait, c'est assez simple.

    Pendant tes boucles POUR ton programme (enfin le process de ton programme) prend la main à 100% et donc, ton gif ne peut pas s'animer (windows ne lui permet pas de le faire).

    Un multitache (-1) rend la main à Windows pendent 1/100eme de seconde ce qui lui permet de faire plein de chose, comme gérer l'animation de ton gif. Par contre, inconvénient, ça ralentit ton traitement. Donc, c'est pour cela qu'il faut être parcimonieux avec les multitaches(-1), et en mettre suffisamment pour que l'animation ait lieu et pas trop afin d'éviter que ton traitement ne dure des lustres !

    Voilà, bon dév.
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  8. #8
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Ok je comprends bien.
    Merci de tes lumières.
    Par contre dans l'aide de Windev il ne dit pas qu'il faut attendre 1 centième de seconde :

    Je cite :

    "Remarque : Si <Temporisation> = -1, l'application rend directement la main à Windows, sans attendre 1 centième de seconde."

    Ce qui est plutôt cool...

    Eric.

  9. #9
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 328
    Points : 3 841
    Points
    3 841
    Par défaut
    Bonjour,

    Tu as également la possibilité de mettre ton code de chargement du planning dans un thread secondaire, ce qui laissera ton GIF tranquille.

  10. #10
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    ou tu peux aussi ouvrir une fenêtre qui permettra d'afficher ce gif et que tu fermeras à la fin du traitement.

  11. #11
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Autant la solution de remplir le planning dans un thread secondaire doit fonctionner, autant celle d'ouvrir une fenêtre fille, ne fonctionne pas (en tout cas en windev 10). Mais je ne voulais pas embrouiller notre ami avec des notions complexes de thread secondaire. Allons-y par palier.
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  12. #12
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    J'essaie de fouiller ce dont vous voulez parler avec vos threads.
    Ce n'est pas la première fois que j'en entends parler alors j'ai consulté la doc.

    Dans la prise de focus de ma fenêtre j'ai mis avant ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThreadExécute("ChargementEnCours",threadNormal,"chargement")

    Et dans procédure de ma fenêtre j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PROCEDURE chargement()
    FEN_principale..Plan=2
    Seulement le GIF reste toujours bloqué.

    N'ai-je rien compris ? ^^

    Eric.

  13. #13
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message
    Autant la solution de remplir le planning dans un thread secondaire doit fonctionner, autant celle d'ouvrir une fenêtre fille, ne fonctionne pas (en tout cas en windev 10). Mais je ne voulais pas embrouiller notre ami avec des notions complexes de thread secondaire. Allons-y par palier.
    C'est pourtant ce que je fais en Windev 15 et faisait avant en Windev 10 !

    j'utilise ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    OuvreFille("fenetreAttenteFinTraitement"+Dessus)
    Sablier(Vrai)
     
    // Traitement
     
    ferme("fenetreAttenteFinTraitement")
    Sablier(faux)

  14. #14
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 328
    Points : 3 841
    Points
    3 841
    Par défaut
    Il faudrait faire l'inverse.

    A partir de ton code de départ, tu laisses la ligne qui passe au plan 2 et tout le reste, tu le mets dans la procédure exécutée par le thread.

    Edit : Sympa la méthode Nicolas

  15. #15
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Cooool, merci ca marche nickel.

    Je me coucherai moins bête !

  16. #16
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Citation Envoyé par Nicolas_Jeanneau Voir le message
    C'est pourtant ce que je fais en Windev 15 et faisait avant en Windev 10 !

    j'utilise ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    OuvreFille("fenetreAttenteFinTraitement"+Dessus)
    Sablier(Vrai)
     
    // Traitement
     
    ferme("fenetreAttenteFinTraitement")
    Sablier(faux)
    Pour l'animation d'un GIF dans la fenetre fille, tu es quand même obligé de mettre des multitache dans la partie TRAITEMENT, non ? Parce que chez moi en WD10, ça ne fait rien !
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  17. #17
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    En effet, le gif ne s'anime pas dans la fenêtre fille !

    Mon message d'attente est une zone clignotante de windev donc je n'ai pas de gif sur celle-ci.

    Toutes mes excuses, je pensais que la fenêtre était autonome par rapport à la fenêtre d'appel mais à priori non. Même avec OuvreSoeur cela ne fonctionne pas.

  18. #18
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Ouf ! Je commençais à me demander si je n'étais dans un monde parallèle
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Points : 34
    Points
    34
    Par défaut
    bonjour à tous
    en effet le problème semble simple, mais il fait bien ch..

    je dois avoir un exemple qui le fait qqpart. (je cherche ca dans mes sources aujourd'hui)

    sinon, si tu connais les bornes, tu peux passer par une jauge. l'effet est pour ainsi dire le même.

  20. #20
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Bonjour,

    désolé de déterrer mais c'est surement mieux que de rouvrir un post.

    Je cherche à faire la même chose en v17, un gif animé pendant le chargement d'une procédure lancée via TimerSys :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TimerSys(chargePortefeuille,100,1)
    Avec des multitache(-1) le gif ne bouge pas, et surtout ma procédure s'exécute moins vite, enfin c'est l'impression que ça donne car les données remplissent ma table de façon progressive...

    Quelle méthode permettrait d'afficher le gif animé indépendamment des autres traitement ? Je me dis que depuis le temps, on a peut-être une solution

    Merci à vous
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. champs qui s'efface lors d'une requete ajax.
    Par starr dans le forum Langage
    Réponses: 3
    Dernier message: 27/10/2006, 08h33
  2. Erreur lors d'une requete insert into.. select
    Par Mr N. dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 04/11/2004, 17h32
  3. Réponses: 3
    Dernier message: 06/07/2004, 10h21
  4. Réponses: 13
    Dernier message: 10/05/2004, 16h49
  5. Erreur lors d'une requete INNER JOIN
    Par k-lendos dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/03/2004, 15h09

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