PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Aperçu avant impression - Export - Utilisateur pressé
Aperçu avant impression - Export - Utilisateur pressé
Started by P@ul, Jul., 26 2021 4:58 PM - 11 replies
Registered member
43 messages
Popularité : +15 (15 votes)
Posted on July, 26 2021 - 4:58 PM
Bonjour,

J'ai un état qui est relativement "lourd" et qui met un peu de temps à s'afficher en entier lors de l'aperçu avant impression.

Cependant, j'ai quelques utilisateurs "pressé" qui ne prennent pas le temps d'attendre que le rapport soit terminé de générer et clic immédiatement sur les boutons d'export email pdf et/ou sur le changement d'imprimante et du coup, ça fait planter mon application.

Est-ce possible de griser / désactiver les boutons dans l'aperçu avant impression tant et aussi longtemps que le rapport n'a pas terminé de se générer?

Je suis ouvert à toutes les suggestions...

Merci
Registered member
227 messages
Popularité : +18 (20 votes)
Posted on July, 26 2021 - 5:57 PM
oui, vous pouvez désactiver les bouton par programmation (à l'init de la fenêtre aperçue, il faut griser les champs ou groupe de champs)

cependant cela vous oblige a surcharger le model fournis par PC SOFT et vous empêche de bénéficier des futurs nouveauté dans la fenêtre aperçu


Autre solution que j'utilise de plus en plus parce que le gain de temps gagner est juste monstrueux ^^
tu imprimes en pdf sans aperçu puis tu affiche le pdf dans le nouveau champ PDF et tu auras un aperçue plus rapide et surtout quand tu cliques sur imprimé ça imprime, cela ne génère pas un nouveau document qui peut être différent de l'aperçue ^^
Il y a deux Bémol à cette solution :
le champ PDF n'a pass toutes les options de la fenêtre aperçue
et l'impression doit être Terminée pour être affiché.

il y a peut être d'autres solutions mais c'est celle que j'utilise
Registered member
43 messages
Popularité : +15 (15 votes)
Posted on July, 26 2021 - 9:20 PM
Rebonjour,

@Gurdarr, merci beaucoup pour ta réponse.

J'ai testé avec la première solution (surcharger la fenêtre en important le composant "Visualisateur de rapports").

Malheureusement, le seul bouton que j'ai réussi à griser, c'est celui "Lancer l'impression". Aussitôt que je grise un autre bouton ou un groupe de champ, ceux-ci restent grisé une fois le rapport complètement généré. C'est dommage car c'est exactement ce dont j'avais besoin...

La deuxième solution ne sera pas viable dans mon contexte puisqu'il manque beaucoup trop d'options par rapport à la fenêtre d'aperçue.

Si n'importe qui d'autre à une solution ou est capable de m'indiquer ou et quand dégriser les autres boutons/champs, svp manifestez-vous !!!

Merci
Registered member
227 messages
Popularité : +18 (20 votes)
Posted on July, 27 2021 - 11:05 AM
Bonjour P@ul,

Tu ne peux pas agir sur les onglets du rubans ?

Autre solution, tu peux créer un champ invisible qui recouvre le ruban, lui tu devrais pourvoir le contrôle (tu fais varier son altitude pour le passer devant ou derrière).

Attention, je crois qu'il faut mettre le code qui réactive tes boutons dans la partie fin impression ou fin de document sur l'état.

Cordialement
Registered member
43 messages
Popularité : +15 (15 votes)
Posted on July, 27 2021 - 8:21 PM
Rebonjour @Gurdarr,

Finalement j'ai "adapté" et ça fonctionne parfaitement maintenant.

J'ai grisé par défaut le ruban dans la fenêtre d'aperçu, donc aucun code à insérer dans l'init de la fenêtre.

Ce qui manquait, c'est de réactiver le ruban dans le code après impression de fin de document dans TOUS les états de mon projet. Je ne m'étais pas arrêté à cette étape lors de mes premiers tests, car quand ont grise simplement le bouton "Lancer l'impression", WinDev le réactive automatiquement pour nous lorsque l'état a terminé de se générer, ce qui N'EST PAS le cas avec les autres champs/groupe.

Bref, c'est quand même beaucoup de gestion, mais avec les modèles d'états, ont réussi à s'en sortir.

Encore une fois, merci énormément et bon dev !!!
Registered member
98 messages
Popularité : +2 (2 votes)
Posted on July, 28 2021 - 9:39 AM
Bonjour Gurdarr,

Je vous remercie de votre retour d'expérience. Pour ma part, j'ai de nombreux utilisateurs que se plaignent d'un 'Freeze' de l'application lorsqu'ils lance une impression avec l'aperçu. Seul un Ctrl+Alt+Supp permet de débloquer la situation... (sur appli en 64bits surtout depuis la 100J).
Cela provient sûrement d'un conflit avec un gestionnaire d'imprimante mais impossible d'en détecter la cause exacte.

J'ai testé ta solution d'une impression PDF avec succès hier et Je vais donc utiliser cette solution pour éviter 'Aperçus avant impression'.

Juste une question, comment affichez-vous ensuite le document PDF, fenêtre fille contenant le champ PDF ou dans un plan ?

Merci de votre prochain retour,

--
Patrick PELISSON
Registered member
3,845 messages
Popularité : +227 (347 votes)
Posted on July, 28 2021 - 10:23 AM
Bonjour,
Un champ image suffit pour afficher un PDF.

--
Il y a peut être plus simple, mais, ça tourne
Registered member
3,845 messages
Popularité : +227 (347 votes)
Posted on July, 28 2021 - 10:27 AM
Eventuellement, si le PDF est sur plusieurs pages, on se bricole les boutons de déplacements qui vont bien (avec PDFExtraitPage) c'est nettement moins lourd

--
Il y a peut être plus simple, mais, ça tourne
Registered member
227 messages
Popularité : +18 (20 votes)
Posted on July, 28 2021 - 6:19 PM
Je rejoins Voroltinquo
Avant la version 24, j'utilisais soit une image soit un active x ou il fallait obligatoirement adobe d'installé c'était assez compliqué

Mais maintenant depuis la 24, il y a un champs spécialement conçu pour intégrer des pdf dans vos applications donc c'est vraiment plus simple a gérer, la gestion des documents multi-pages est parfaitement géré.
Registered member
98 messages
Popularité : +2 (2 votes)
Posted on July, 29 2021 - 9:04 AM
Bonjour,
Merci de ces retours car ces 'freeze' à l'appel de la prévisualisation sont un réel problème.
Pour ma part en suivant vos conseils, j'ai créé dans mon appli une fenêtre contenant un champ PDF avec un intitulé en haut rappelant le nom et chemin du document affiché. A chaque impression, je crée un PDF dont j'enregistre les chemin et nom dans une zone mémoire (mem_visu) puis ouvre la fenêtre de visualisation avec le code suivant en fin d'initialisation de la fenêtre :
[/code]
SI MemExiste("mem_visu")=Vrai ALORS
sMonfichier est une chaîne
sMonfichier = MemRécupère("mem_visu",1)
PDF_VISU.Ouvre(sMonfichier)
LIB_DOC_VISU="Document visualisé : "+sMonfichier
FIN
[/code]
A la fermeture de la fenêtre de visualisation, je supprime le PDF créé si l'utilisateur ne souhaite pas en garder une copie...
C'est rapide et fiable maintenant.
Merci

--
Patrick PELISSON
Registered member
227 messages
Popularité : +18 (20 votes)
Posted on July, 29 2021 - 5:47 PM
Une autre utilités d'utiliser des pdf avec le champ visualiseur PDF c'est la gestion multi document

disons que votre utilisateur veut imprimer plusieurs document ( N commandes par exemples)
Vous pouvez paralléliser les N commandes ( cf lst 125 )
puis PDFFusionne() et un aperçue

L'utilisateur veux splitter sont aperçue en autant de document pouf vous avez dejà les pdfs

Il veut imprimer en recto verso pouf vous refaite un pdffusionne avec pdf page blanche pour compléter les pages impaire

et bizarrement vous allez faire tous ça mille fois plus vite qu'avec l'aperçue standard de windev vraiment plus vite


Attention je vois que vous utilisez des zones mémoires soit je pense comme moi des états créer à une époque où vous ne pouviez faire que comme ça...
Il y a les états sur requête SQL maintenant 8)

Et aussi si vous faites des impressions d'états dans des impressions d'état il y a des petites surprises (numérotation de pages notamment,marge impression)
Pensez à bien vérifier vos états complexes avant et après j'ai vraiment eu des trucs bizarres parfois.

Cordialement
Registered member
98 messages
Popularité : +2 (2 votes)
Posted on July, 29 2021 - 8:54 PM
Merci pour cette superbe idée d'impression PDF qui me sauve la mise en résolvant tous mes problèmes de 'Freeze' de l'application lors de l'aperçu...
De plus, cela semble plus rapide !
La zone mémoire et la seule solution que j'ai trouvé pour reporter le chemin du pdf à imprimer vers ma fenêtre de visualisation... Avez-vous une solution plus fiable ??? Je suis preneur !
Cordialement

--
Patrick PELISSON