PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Faire une action après FichierAffiche
Faire une action après FichierAffiche
Débuté par meumeu321, 20 avr. 2017 11:29 - 6 réponses
Membre enregistré
55 messages
Posté le 20 avril 2017 - 11:29
Bonjour,

comment faire une action après un FichierAffiche(). J'ai l'impression que je perds complètement la main.
Je voudrais soit afficher une autre page, soit réactualiser l'affichage de la table en cours mais rien, impossible !

Merci,
Posté le 20 avril 2017 - 12:40
Après mûre réflexion, meumeu321 a écrit :
Bonjour,

comment faire une action après un FichierAffiche(). J'ai l'impression que je
perds complètement la main.
Je voudrais soit afficher une autre page, soit réactualiser l'affichage de la
table en cours mais rien, impossible !

Merci,


mouaih
c'est un peu toujours le pb.
Par exemple les popups de tempos qui doivent afficher le résultat sous
forme de fichieraffiche. C'est possible mais y'a une technique que tu
retrouveras dans ce forum.

Sinon ce que je fais moi par exemple pour les pdf.
j'ai une page avec OuvrePdf avec un champs iframe qui va contenir mon
pdf et au dessus, je peux mettre les boutons pour organiser et
maitriser mon dialogue.

bon je te copie ce que j'avais déjà répondu sur ce sujet en début
d'année, peut-être cela te donnera des idées

bonjour,
je pense qu'en partant dans le fichierAffiche, tu perds le contrôle du
suivi des instructions.
Par exemple ton fsupprime est-il bien pris en compte ?

Cela fait plusieurs années que je galèrais dans cette problématique de
présenter un pdf généré, puis d'enchainer sur une action, notamment de
l'utilisateur.
Après de nombreuses solutions plus ou moins satisfaisantes, j'ai enfin
trouvé récemment un système qui me convient très bien.
En plus comme toute bonne soluce, c'est très simple.

j'initie une globale qui contient l'url de mon pdf
Je fais un pageAffiche(ouvrepdf).
Le pageaffichedialogue est pratique mais pas si on a d'autres appels de
popups possibles.

ouvrepdf est une page normale simple avec un ancrage pour se maximiser.
Elle est séparée horizontalement en deux parties; la partie du haut
contient l'interface de navigation, la partie du bas contient le pdf
affiché. L'astuce est que ce pdf est envoyé dans un champs iframe (donc
qui prend toute cette partie basse et est en ancrage adapté au
navigateur). Il est initié en init de la page par le contenu de ma
globale.

C'est très pratique pour l'utilisateur car le pdf ne part pas dans un
onglet ou téléchargement plus ou moins visible.
Et surtout pour le développeur, à partir de bouton dans l'interface du
haut on gère parfaitement la simultanéité des actions.

Par ex, j'ai rajouté un qrcode appelé dans une popup pour que
l'internaute puisse flasher le qrcode de son pdf et le mettre dans ses
wallets ou autre système.

Voilà en espèrant que cela t'aide ...
Posté le 20 avril 2017 - 13:25
Bonjour

ce n'est pas possible

La dernière instruction de tout code web serveur est de redonner la main
au navigateur. RIEN n'est exécuté après ca.

Ce qui redonne la main au navigateur :
- retour
- pageaffiche
- pagerafraichit
- fichieraffiche
-...

Ca n'est pas propre à webdev, c'est comme ça qu'un serveur web
fonctionne : il recoit une requête, prépare une réponse, la renvoit, et
c'est fini.


C'est pour ça qu'on fait en général un fichieraffiche dans un bouton
avec comme destination une autre page (ou une iframe), de manière à
garder la main sur le reste de la page ou la page d'origine

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com


Le 4/20/2017 à 3:29 AM, meumeu321 a écrit :
Bonjour,

comment faire une action après un FichierAffiche(). J'ai l'impression
que je perds complètement la main.
Je voudrais soit afficher une autre page, soit réactualiser l'affichage
de la table en cours mais rien, impossible !

Merci,
Membre enregistré
55 messages
Posté le 20 avril 2017 - 16:15
Merci pour ces réponses !
Je suis débutante en web du coup le concept iframe , je ne le connaissais pas. J'avais lu la réponse du début d'année de M. Roumegou mais ce n'était pas clair et ça avait l'air très complexe.

Mais j'ai suivi vos conseils :
j'ai créé un champ iframe dans une popup, le bouton "imprimer" a pour destination le champ iframe.
Dans le code navigateur du bouton Imprimer, j'ai mis popupaffiche
Dans le code serveur du bouton Imprimer, j'appelle FichierAffiche
Dans le code serveur du bouton Fermer de la popup, j'ai mis le code de rafraichissement de la table

Et ça fonctionne !
Merci beaucoup, la programmation web est vraiment compliquée...
Membre enregistré
57 messages
Popularité : +6 (6 votes)
Posté le 21 avril 2017 - 21:01
C'est pas vraiment compliqué mais c'est schizophrénique !

Tu dois tenir compte du fait que le processus navigateur ne sait pas ce que fait le processus serveur ..... et vice-versa
Ils ne communiquent que par des requêtes et des envois de pages ou de bouts de pages ...
C'est vrai que pour cela, coder pour windev est moins psychiatrique !

Bon courage !

--
Dr J-M des Grottes
Gestionnaire du Registre des Néphrologues Francophones de Belgique
CHU Tivoli
La louvière
Belgique
Posté le 14 avril 2018 - 20:55
Bonjour,

Voilà je reviens sur le sujet un an après. Mais je pense que ma solution pourrait aider. J'ai réellement souffert du manque de solution claire.

Je résume:

J'ai un bouton Imprimer qui doit générer et ouvrir un fichier pdf mais dans une autre page en me laissant la main.

NB.
le bouton Imprimer doit envoyer des valeurs au serveur (dans la description du bouton)

ensuite ; Destination = "Définie dans la page en cours (A la même place, frame en cours (_self))"

Dans le code navigateur du bouton;

NavigateurOuvre("",Page_APERCU)
ChangeDestination(Page_APERCU)

Notez que : Page_APERCU est une page webdev vierge avec ancrage Largeur et Longueur.
qui a pour code dans Déclarations globales de Page_APERCU (serveur) le code ci-dessous :

PROCEDURE MaPage(_Fichier)

ensuite dans le code Initialisation de Page_APERCU :

//--On appelle l'état avec son nom paramètre
FichierAffiche(ComplèteRep(fRepWeb())+_Fichier, "application/pdf").

C'est tout pour Page_APERCU.

Miantenant dans le code Clic de Imprimer (serveur)

//--Affiche l'état dans une autre page
PageAffiche(Page_APERCU,sFichier)

EN SOMME, SI WEBDEV TIENT TANT A AFFICHER L'ETAT DANS LA PAGE EN COURS, J'EN CREE UNE VIERGE ET J'APPELLE MON ETAT QUI VA S'OUVRIR OBLIGATOIRE DANS LA PAGE VIERGE ET ME LAISSER LA MAIN.
Posté le 16 avril 2018 - 09:10
Guillaume a exposé le 14/04/2018 :
Bonjour,

Voilà je reviens sur le sujet un an après. Mais je pense que ma solution
pourrait aider. J'ai réellement souffert du manque de solution claire.

Je résume:

J'ai un bouton Imprimer qui doit générer et ouvrir un fichier pdf mais dans
une autre page en me laissant la main.

NB. le bouton Imprimer doit envoyer des valeurs au serveur (dans la
description du bouton)

ensuite ; Destination = "Définie dans la page en cours (A la même place,
frame en cours (_self))"

Dans le code navigateur du bouton;

NavigateurOuvre("",Page_APERCU)
ChangeDestination(Page_APERCU)

Notez que : Page_APERCU est une page webdev vierge avec ancrage Largeur et
Longueur.
qui a pour code dans Déclarations globales de Page_APERCU (serveur) le code
ci-dessous :

PROCEDURE MaPage(_Fichier)

ensuite dans le code Initialisation de Page_APERCU :

//--On appelle l'état avec son nom paramètre
FichierAffiche(ComplèteRep(fRepWeb())+_Fichier, "application/pdf").

C'est tout pour Page_APERCU.

Miantenant dans le code Clic de Imprimer (serveur)

//--Affiche l'état dans une autre page
PageAffiche(Page_APERCU,sFichier)

EN SOMME, SI WEBDEV TIENT TANT A AFFICHER L'ETAT DANS LA PAGE EN COURS, J'EN
CREE UNE VIERGE ET J'APPELLE MON ETAT QUI VA S'OUVRIR OBLIGATOIRE DANS LA
PAGE VIERGE ET ME LAISSER LA MAIN.

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com


Bonjour Guillaume,
Il me semble que c'est ce que peu ou prou, Fabrice ou moi nous
t'expliquions il y a un an.
... une page où l'on prévoit une interface pour interagir

Bon Fabrice n'est plus là ...il boude ;-)
et on le regrette