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 :

Aide pour message en fin de traitement [WD25]


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Apprentis développeur en "Herbe"
    Inscrit en
    Mars 2014
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprentis développeur en "Herbe"
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 310
    Points : 64
    Points
    64
    Par défaut Aide pour message en fin de traitement
    Bonjour le forum,

    Une question : j'aimerai mettre en place un message (Info ("Fin du traitement...") par exemple) à la fin d'un de mes traitements mais comment faire cela ?
    J'ai un peu cherché sur le net mais rien trouvé qui réponde à ma problématique ??
    En utilisant un chrono peut-être ? Mais comment faire dans ce cas ? Mettre un chrono de début (au départ de mon traitement) puis un de fin ... mais ensuite ? Que dois-je tester ou vérifier pour lancer mon message d'info ?
    Une petite idée pour m'aider ?
    Merci d'avance pour vos réponses et bonne journée à tous.

  2. #2
    Membre éclairé
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2017
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 327
    Points : 788
    Points
    788
    Par défaut
    Difficile d'orienter sans savoir comment est fait le traitement: en synchrone ou en asynchrone (avec ou sans thread/tache parallèle)
    Une Info("Traitement terminé") fonctionne, mais j'ai tendance à utiliser ToastAffiche, car je supporte assez peu qu'un programme m'abreuve d'infos sur lesquelles je dois cliquer. C'est plutôt invasif niveau UX d'autant que la majorité des messages peuvent ne pas être bloquants vu l'info qu'ils apportent

  3. #3
    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
    Bonjour,
    Il faut raisonner autrement, un traitement ne se termine pas si on entre dans une boucle infinie,
    -soit parce qu'aucune des conditions de sortie n'est vérifiée
    -soit parce qu'il n'y a pas de condition de sortie.

    Dans les autre cas, le traitement se termine "naturellement" et renvoie un résultat, il suffit de placer le message avant ce renvoi de résultat.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  4. #4
    Membre éclairé
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2017
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 327
    Points : 788
    Points
    788
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Bonjour,
    Il faut raisonner autrement, un traitement ne se termine pas si on entre dans une boucle infinie,
    -soit parce qu'aucune des conditions de sortie n'est vérifiée
    -soit parce qu'il n'y a pas de condition de sortie.

    Dans les autre cas, le traitement se termine "naturellement" et renvoie un résultat, il suffit de placer le message avant ce renvoi de résultat.
    Je suppose que oui si il a tout fait en procédural "classique".
    Mais si il code en MVC, le traitement étant fait par le Controller, il ne devrait pas comporter d'instructions IHM qui sont du ressort de la Vue. Et comme j'ignore comment il a codé son truc, c'est vraiment dur de lui filer une solution.

  5. #5
    Membre du Club
    Homme Profil pro
    Apprentis développeur en "Herbe"
    Inscrit en
    Mars 2014
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprentis développeur en "Herbe"
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 310
    Points : 64
    Points
    64
    Par défaut
    Bonsoir à vous,

    En fait j' ai codé un bouton qui exécute un traitement sur PDF en mode console iconisée (LanceAppli).
    Ce traitement appose un tampon sur les PDF.
    Je souhaiterai que lorsque ce traitement soit terminé un message avertisse l'utilisateur.

    Voici le code en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SI PAS LanceAppli(ComplèteRep(fRepExe()) + "Export.bat",exeIconise,exeNonBloquant) ALORS
    	ErreurInfo(errComplet)
    FIN
    Le fichier .bat contient l'ensemble des lignes de commandes exécutées dans la console.

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    Une idée parmi d'autres :
    1. Tu crées un programme (nouveau programme , indépendant du premier) qui ouvre une fenêtre quelconque ... ou qui lance uniquement une instruction info("fini") ou ToastAffiche("fini")
    2. Dans le fichier .bat que tu lances, en dernière ligne de ce fichier .bat, tu lances le programme en question.

    Reste à gérer la façon dont ce programme s'affiche.
    Tu dois pouvoir faire en sorte que la fenêtre s'affiche au 1er plan, même si l'utilisateur est en train de faire autre chose (Excel, navigation sur Internet ...) , mais comme dit Voroltinquo, l'utilisateur n'a pas forcément envie d'être embêté par une fenêtre qui s'ouvre tout d'un coup au milieu de l'écran.

    Il y a aussi des systèmes pour simplement afficher une information dans la barre de programme ( avec l'heure, la date ... toutes les icones système ...). C'est peut-être le bon compromis pour que l'information soit visible, mais pas génante.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #7
    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
    Avec un a la fin de ton bat et l'utilisation de la 2° syntaxe de LanceAppli, cela pourrait fonctionner aussi
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  8. #8
    Membre du Club
    Homme Profil pro
    Apprentis développeur en "Herbe"
    Inscrit en
    Mars 2014
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprentis développeur en "Herbe"
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 310
    Points : 64
    Points
    64
    Par défaut
    Bonsoir à tous,

    Un grand merci pour tous vos retours. Je comprends les idées proposées mais en revanche plus difficile pour moi de les mettre en pratique.
    En ce qui concerne le message, pas de soucis de "gêne" pour l'utilisateur car celui-ci doit attendre la fin du traitement du bat avant de continuer le taff.
    En revanche, comment lancer une fenêtre ou un message Windev depuis la console ? Cela est possible ?
    Voici le code derrière mon bouton "Tamponner" :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    sListePdfaTamponner		est une chaîne
    nIndice					est un entier
    tabMonTabPdf			est un tableau de chaînes
    sNomFichierTamponne		est une chaîne	= ""
    sCheminDossierATamponer	est une chaîne	= SansCaractèreDroite(FEN_TRAITEMENT_COURRIER.SAI_CHEMINDOSSIER,"\")
     
    TableSupprimeTout(FEN_TRAITEMENT_COURRIER.TABLE_TEMP)
     
    POUR TOUTE LIGNE SELECTIONNÉE nIndice DE FEN_TRAITEMENT_COURRIER.TABLE_COURRIER
    	SI TableCherche(FEN_TRAITEMENT_COURRIER.TABLE_COURRIER.COL_FICHIER_COURRIER,FEN_TRAITEMENT_COURRIER.TABLE_COURRIER.COL_CHEMIN_COURRIER[nIndice]) = -1 ALORS
    		TableAjoute(FEN_TRAITEMENT_COURRIER.TABLE_TEMP,FEN_TRAITEMENT_COURRIER.TABLE_COURRIER[nIndice])
    	SINON
    		Info("Erreur")
    	FIN
    FIN
     
    POUR nIndiceFichier = 1 _À_ FEN_TRAITEMENT_COURRIER.TABLE_TEMP..Occurrence
    	tabMonTabPdf.Ajoute(FEN_TRAITEMENT_COURRIER.TABLE_TEMP[nIndiceFichier].COL_CHEMIN_FICHIER_TEMP)
    	sNomFichierTamponne += fExtraitChemin(FEN_TRAITEMENT_COURRIER.TABLE_TEMP[nIndiceFichier].COL_CHEMIN_FICHIER_TEMP,fFichier)
    FIN
     
    POUR TOUTE LIGNE SELECTIONNÉE DE FEN_TRAITEMENT_COURRIER.TABLE_COURRIER
    	sListePdfaTamponner += ChaîneConstruit(FEN_TRAITEMENT_COURRIER.SAI_CHEMINDOSSIER + "pdfstamp.exe" + " " + "-PDF" + " " + Caract(34)+FEN_TRAITEMENT_COURRIER.TABLE_COURRIER.COL_CHEMIN_COURRIER+Caract(34) + " " + "-AT" + " " + """Courrier recu le : \D""" + " " + "-P8" + " " + " " + "-MLR5 " +  "-R90" + " " + "-C255" + " " + "-FT" + " " + """Tahoma""" + " " + "-FS8" + RC)
    FIN
     
    fSauveTexte(ComplèteRep(fRepExe())+ "Export.bat", sListePdfaTamponner)
     
    LecteurPDFFerme(FEN_TRAITEMENT_COURRIER.PDF_COURRIER)
     
    SI PAS LanceAppli(ComplèteRep(fRepExe()) + "Export.bat",exeIconise,exeNonBloquant) ALORS
    	ErreurInfo(errComplet)
    FIN

  9. #9
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    Si la dernière ligne de ton fichier .bat est toto ou toto.exe ou c:\mesprojets\toto.exe, ça va lancer le programme toto.exe, qui peut parfaitement être un programme créé par Windev.

    Ce n'est pas très glorieux comme méthode, mais c'est simple à faire.

    Si l'utilisateur doit réellement attendre pendant que ton programme .bat tourne, peut être que le plus simple est de mettre le bon paramètre dans lanceAppli.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lanceappli ( "monFichier.bat", *, exeBloquant )    // exeBloquant ... pour que le message info() arrive uniquement après l'exécution du .bat
    info ( "terminé")
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  10. #10
    Membre du Club
    Homme Profil pro
    Apprentis développeur en "Herbe"
    Inscrit en
    Mars 2014
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprentis développeur en "Herbe"
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 310
    Points : 64
    Points
    64
    Par défaut
    Bonsoir tbc92,

    Merci pour le retour. En effet, c'est bien ce que j'avais cru comprendre .... et cela n'est pas très glorieux de créer un exe juste pour ouvrir une fenêtre d'info.
    c'est FOU que rien n'existe ou possible pour déterminer précisément la fin d'un traitement Windev ^^^ ???
    Je vais tester avec le bon paramètre dans mon LanceAppli alors.

  11. #11
    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 samsam007 Voir le message
    c'est FOU que rien n'existe ou possible pour déterminer précisément la fin d'un traitement Windev ^^^ ???
    Le problème est que ce n'est pas un traitement windev.
    Si ton traitement externe ne renvoie pas de résultats (tout s'est bien déroulé, il y a des erreurs ...) ou que tu ne récupère pas le résultat windev ne pourra pas faire le boulot.
    Dans ton cas, il n'y a ni l'un ni l'autre à priori, d'autant plus que tu avais eu des solutions purement windev. En les utilisant, la récupération du résultat de la fonction aurait été encore plus simple.
    Maintenant que tu es passé en 25, tu as même accès aux variables pdfDocument

    Tu peux remplacer ton LanceAppli par un appel à la fonction suivante ou quelque chose qui lui ressemble
    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
     
    Fonction TamponnerPDF(sCheminPDF est chaine,sTampon est chaine) :booléen
    PDFTravail est pdfDocument
    Tampon est un Filigrane
     
    Tampon..Texte = sTampon
    PDFTravail=PDFOuvre(sCheminPDF)
    iParamètreFiligrane(iFiligraneImpression,MonFiligrane)
     
    iDestination(iPDFGénérique,sCheminPDF)
     
    SI PAS iImprimePDF(PDFTravail) ALORS
         RENVOYER Faux
    SINON
         RENVOYER Vrai
    FIN
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  12. #12
    Membre du Club
    Homme Profil pro
    Apprentis développeur en "Herbe"
    Inscrit en
    Mars 2014
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprentis développeur en "Herbe"
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 310
    Points : 64
    Points
    64
    Par défaut
    Bonjour à tous,

    J'ai réussi à contourner mon soucis en plaçant un ToastAffiche("traitement en cours...) en début du code de mon bouton, un ToastSupprimeTout() juste avant mon message de fin de traitement.
    J'ai tenté aussi de jouer sur la propriété (Superposable) mais pas réussi à faire ce que je voulais ^^
    Un grand merci pour tous vos différents retours.
    Bonne journée à vous

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

Discussions similaires

  1. [MySQL] Aide pour terminer le code de traitement !
    Par plorton dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/08/2011, 13h07
  2. [MySQL] aide pour message d'erreur
    Par Stéph utilisateur d'acces dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/06/2011, 17h49
  3. Aide pour application de fin d'étude
    Par zakiabdess dans le forum Delphi
    Réponses: 1
    Dernier message: 17/07/2006, 12h41

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