Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| probleme d'impression. | |
| | |
Auteur | Message |
---|
Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: probleme d'impression. Dim 19 Jan 2014 - 21:56 | |
| Pour Klaus.
J'ai besoin d'un exemple complet d'impression du contenu d'un memo. Avec choix de l'imprimante.
Pourrais-tu m'aider dans ce sens Klaus ?
Merci d'avance.
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: probleme d'impression. Dim 19 Jan 2014 - 22:47 | |
| Un des problèmes avec Panoramic, c'est qu'on en peut pas gérer des imp. Pas moyen. La seule chose possible en Panoramic, c'est de créer un fichier texte, et d'imprimer ce fichier par une commande DOS lancée par EXECUTE. Frustre, et insuffisant. C'est pourquoi j'ai créé les fonctions de gestion d'imprimante, dans KGF.dll. Là, tu peux tout faire - texte, images, graphismes, cadres, positionnements relatifs ou absolus, changement de police, taille, attributs et couleur du texte etc. Je te donne ici un petit programme très simple qui fait une édition sur 2 pages, avec choix de l'imprimante. En étudiant la doc, tu pourras compliquer les choses à loisir. - Code:
-
label imprimer
dim res%, nom$, i%, maxlig%, s$, lig% dim phnd%, chnd%, attr$, coulsiz%, x%, y%, pol$
memo 1 : top 1,10 : left 1,20 : width 1,300 : height 1,360 font_names_load 1 button 2 : top 2,400 : left 2,10 : caption 2,"Imprimer" on_click 2,imprimer
dll_on "KGF.dll" end
imprimer: nom$ = string$(255," ") res% = DLL_call2("SelectWindowsPrinter",adr(nom$),len(nom$)) nom$ = trim$(nom$) ' message nom$ res% = DLL_call4("PrinterManager",1,adr(phnd%),adr(chnd%),0) maxlig% = 60 x% = 10 : y% = 10 : ' position du début du texte pol$ = "Courier" for i%=1 to count(1) if lig%>maxlig% res% = DLL_call4("PrinterManager",2,adr(phnd%),adr(chnd%),0) x% = 10 : y% = 10 : ' position du début du texte lig% = 0 end_if lig% = lig% + 1 x% = 10 : y% = y% + 80 : ' position du début du texte s$ = item_read$(1,i%) attr$ = "AxAy" : ' positionnement absolu dans les deux axes coulsiz% = ( (255*256+0)*256+0 )*256 + 12 : ' couleur 255,0,0 et police taille 12 res% = DLL_call6("PrinterPrintText",adr(s$),adr(pol$),adr(attr$),coulsiz%,adr(x%),adr(y%)) next i% res% = DLL_call4("PrinterManager",3,adr(phnd%),adr(chnd%),0) return | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Probème d'impression Lun 20 Jan 2014 - 10:32 | |
| Bonjour. Le code suivant ne fonctionne pas. Après avoir sélectionné l'imprimante, il se bloque, et je n'obtiens jamais la valeur de res% ligne 19, après 'SelectWindowsPrinter'. Merci de ton aide Klaus. - Code:
-
label imprimer
dim res%, nom$, i%, maxlig%, s$, lig% dim phnd%, chnd%, attr$, coulsiz%, x%, y%, pol$
memo 1 : top 1,10 : left 1,20 : width 1,300 : height 1,360 font_names_load 1 button 2 : top 2,400 : left 2,10 : caption 2,"Imprimer" on_click 2,imprimer
dll_on "KGF.dll"
end
imprimer: nom$ = string$(255," ") res% = DLL_call2("SelectWindowsPrinter",adr(nom$),len(nom$)) message res% nom$ = trim$(nom$) message nom$ res% = DLL_call4("PrinterManager",1,adr(phnd%),adr(chnd%),0) maxlig% = 60 x% = 10 : y% = 10 : ' position du début du texte pol$ = "Courier" for i%=1 to 5 : ' count(1) caption 0,str$(i%) if lig%>maxlig% res% = DLL_call4("PrinterManager",2,adr(phnd%),adr(chnd%),0) x% = 10 : y% = 10 : ' position du début du texte lig% = 0 end_if lig% = lig% + 1 x% = 10 : y% = y% + 80 : ' position du début du texte s$ = item_read$(1,i%) attr$ = "AxAy" : ' positionnement absolu dans les deux axes coulsiz% = ( (255*256+0)*256+0 )*256 + 12 : ' couleur 255,0,0 et police taille 12 res% = DLL_call6("PrinterPrintText",adr(s$),adr(pol$),adr(attr$),coulsiz%,adr(x%),adr(y%)) next i% res% = DLL_call4("PrinterManager",3,adr(phnd%),adr(chnd%),0) return Même le code suivant, issu de la doc, ne fonctionne pas !! - Code:
-
dim res%,nom$
dll_on "kgf.dll"
nom$ = string$(255," ") res% = DLL_call2("SelectWindowsPrinter",adr(nom$),len(nom$)) if res%=0 message "Aucune imprimante choisie" else message "Imprimante choisie: "+nom$ end_if | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: probleme d'impression. Lun 20 Jan 2014 - 11:24 | |
| Je ne comprends pas ton problème. J'ai pris les codes que tu as postés, et les deux fonctionnent.
Le premier code affiche "1", puis le nom de l'imprimante choisie, puis imprime 5 lignes, prises au milieu de la liste des polices du mémo.
Le second affiche le nom de l'imprimante choisie, ou le message approprié si l'on est sorti de la séléction par Annuler.
Tu es sous W7 ? Est-ce qu'un autre Panoramicien sous W7 a le même problème ? | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Problème d'impression. Lun 20 Jan 2014 - 12:09 | |
| Klaus, je suis sous Windows 7.
J'ai beau tester sans arrêt, le programme se bloque toujours. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: probleme d'impression. Lun 20 Jan 2014 - 12:26 | |
| J'entends bien. C'est pourquoi j'ai posé la question aux autres. Pour tester, il suffit de copier tes 2 codes dans l'éditeur et de les exécuter dans le dossier où se trouve KGF.dll.
Est-ce que chez toi, la fenêtre de sélection s'affiche ? Et si oui, qu'est-ce qui se passe si tu la quittes par "Annuler" ?
Dans le cas d'un clic sur "Annuler", le retour doit être immédiat, avec le résultat 0 dans res% Dans le cas d'une sélection d'imprimante, il y a quelques secondes d'attente avant le retour, avec 1 dans res% et le retour du nom de l'imprimante choisie dans nom$.
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 20 Jan 2014 - 12:27 | |
| J' arrive !....laissez moi 5 petites minutes le temps d' avaler un café et deux valium... | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Problème d'impression. Lun 20 Jan 2014 - 12:37 | |
| Bonjour.
Lorsque je clique sur 'annuler' lors de la sélection de l'imprimante, j'obtiens le code '0' dans res%, puis une chaîne nulle pour nom$, ce qui est normal.
Ensuite, si je clique à nouveau sur 'imprimer', l'impression se lance bien.
Ce que je n'avais pas tester au départ.
Il y a donc bien un léger problème. | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Problème d'impression. Lun 20 Jan 2014 - 12:39 | |
| Et maintenant, si je fais 'annuler' lors de la sélection de l'imprimante, l'impression se lance bien !! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 20 Jan 2014 - 12:40 | |
| Chouette ! j' ai pas eu besoin des valium... cela fonctionne chez moi !... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: probleme d'impression. Lun 20 Jan 2014 - 12:54 | |
| Bizarre - Vous avez dit Bizarre ? Alors, ça ne marche pas de la même manière chez Pedro et chez Ygeronimi ? Je commence à croire que tu as un W7 envouté, Pedro !
Là, je ne vois pas bien, pour le moment, ce que je pourrais faire... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 20 Jan 2014 - 13:08 | |
| Il y a tout de même un souci avec le bouton annuler du gestionnaire de l' imprimante ( Epson pour moi ) qui imprime même si on clique sur "Annuler".... ps : ceci avec le code 1 de Pedro | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: probleme d'impression. Lun 20 Jan 2014 - 13:54 | |
| C'est normal, Ygeronimi. Après la sélectioin de l'imprimante, le code retour n'est pas testé, et donc, l'impression se lance quelque soit le résultat de la fonction. Il faudrait faire ce code de la manière suivante: - Code:
-
label imprimer
dim res%, nom$, i%, maxlig%, s$, lig% dim phnd%, chnd%, attr$, coulsiz%, x%, y%, pol$
memo 1 : top 1,10 : left 1,20 : width 1,300 : height 1,360 font_names_load 1 button 2 : top 2,400 : left 2,10 : caption 2,"Imprimer" on_click 2,imprimer
dll_on "KGF.dll"
end
imprimer: nom$ = string$(255," ") res% = DLL_call2("SelectWindowsPrinter",adr(nom$),len(nom$)) message res% nom$ = trim$(nom$) message nom$ if res%=0 message "Abandon..." return end_if res% = DLL_call4("PrinterManager",1,adr(phnd%),adr(chnd%),0) maxlig% = 60 x% = 10 : y% = 10 : ' position du début du texte pol$ = "Courier" for i%=1 to 5 : ' count(1) caption 0,str$(i%) if lig%>maxlig% res% = DLL_call4("PrinterManager",2,adr(phnd%),adr(chnd%),0) x% = 10 : y% = 10 : ' position du début du texte lig% = 0 end_if lig% = lig% + 1 x% = 10 : y% = y% + 80 : ' position du début du texte s$ = item_read$(1,i%) attr$ = "AxAy" : ' positionnement absolu dans les deux axes coulsiz% = ( (255*256+0)*256+0 )*256 + 12 : ' couleur 255,0,0 et police taille 12 res% = DLL_call6("PrinterPrintText",adr(s$),adr(pol$),adr(attr$),coulsiz%,adr(x%),adr(y%)) next i% res% = DLL_call4("PrinterManager",3,adr(phnd%),adr(chnd%),0) return Et là tu verras que l'impression ne se lance plsu si l'on clique sur "Annuler".
Dernière édition par Klaus le Lun 20 Jan 2014 - 17:52, édité 1 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 20 Jan 2014 - 14:29 | |
| Je me doutais bien qu' il manquait quelque chose mais je n' étais pas parti sur cette piste... Merci Klaus | |
| | | Invité Invité
| Sujet: Re: probleme d'impression. Lun 20 Jan 2014 - 15:33 | |
| Bonjour, J'ai essayé le dernier code (et pas les autres). J'appuie sur le bouton 'imprimer', j'ai la boite de sélection de l'imprimante. Et puis je suis bloqué. Pas un seul message.
Je viens de re-tester, mais en annulant l'impression dans la boite de dialogue. Là j'ai le retour des messages. Par contre, il faudrait remplacer 'END_SUB' par 'RETURN' dans ce cas là. Ce n'est pas une sub. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: probleme d'impression. Lun 20 Jan 2014 - 17:58 | |
| Tu as raison, Cosmos70, pour le EXIT_SUB. Je l'ai corrigé dans le code posté ci-dessus. Essaie le code suivant: - Code:
-
label imprimer
dim res%, nom$, i%, maxlig%, s$, lig% dim phnd%, chnd%, attr$, coulsiz%, x%, y%, pol$
memo 1 : top 1,10 : left 1,20 : width 1,300 : height 1,360 font_names_load 1 button 2 : top 2,400 : left 2,10 : caption 2,"Imprimer" on_click 2,imprimer
dll_on "KGF.dll"
end
imprimer: nom$ = string$(255," ") res% = DLL_call2("SelectWindowsPrinter",adr(nom$),len(nom$)) message res% nom$ = trim$(nom$) message nom$ if res%=0 message "Abandon..." return end_if message "L'imprimante choisie est: "+nom$ res% = DLL_call4("PrinterManager",1,adr(phnd%),adr(chnd%),0) maxlig% = 60 x% = 10 : y% = 10 : ' position du début du texte pol$ = "Courier" for i%=1 to 5 : ' count(1) caption 0,str$(i%) if lig%>maxlig% res% = DLL_call4("PrinterManager",2,adr(phnd%),adr(chnd%),0) x% = 10 : y% = 10 : ' position du début du texte lig% = 0 end_if lig% = lig% + 1 x% = 10 : y% = y% + 80 : ' position du début du texte s$ = item_read$(1,i%) attr$ = "AxAy" : ' positionnement absolu dans les deux axes coulsiz% = ( (255*256+0)*256+0 )*256 + 12 : ' couleur 255,0,0 et police taille 12 res% = DLL_call6("PrinterPrintText",adr(s$),adr(pol$),adr(attr$),coulsiz%,adr(x%),adr(y%)) next i% res% = DLL_call4("PrinterManager",3,adr(phnd%),adr(chnd%),0) message "Fini." return Tu devrais cette fois obtenir le nom de l'imprimante si tu valides normalement (j'ai juste ajouté une ligne message). As-tuy vérifié dans les files d'attente d'imprimante de ton système si une édition est en attente ? Effectivement, le programme n'était pas censé envoyer d'autres messages - juste faire l'édition. Cette fois, il affichera "Fini." en fin d'édition... | |
| | | Invité Invité
| Sujet: Re: probleme d'impression. Lun 20 Jan 2014 - 18:26 | |
| Non Klaus, dès que je valide, il y a blocage (sans message d'erreur - seulement Panoramic ne répond pas).
Il n'y a pas non plus d'icone pour l'imprimante dans la barre de tâche, comme c'est le cas lors d'une impression. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: probleme d'impression. Lun 20 Jan 2014 - 18:47 | |
| C'est une information intéressante. Donc, la fenêtre de sélection ne disparaît pas ? Et le message signalant le nom de l'imprimante ne vient pas non plus.
C'est une information intéressante, et je vais chercher dans ce sens. | |
| | | Invité Invité
| Sujet: Re: probleme d'impression. Lun 20 Jan 2014 - 18:52 | |
| - Citation :
- la fenêtre de sélection ne disparaît pas ?
La fenêtre de sélection de l'imprimante s'efface, c'est celle de Panoramic (panoramic.exe) qui reste bloqué. Bon je vais faire mes 4 km avec ma chienne. (surtout je ne parle pas de ma femme ) On verra plus tard. |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Problème d'impression. Mar 21 Jan 2014 - 10:25 | |
| Bonjour.
J'ai résolu le problème d'une façon détournée.
J'enregistre le texte à imprimer dans un fichier. Ensuite, à l'aide de la commande 'execute_wait', je lance son impression par un exécutable écrit en Blitzbasic.
Dans ce cas, tout fonctionne à merveille, car BlitzBasic reconnaît bien la commande 'wordpad.exe /P'. | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: probleme d'impression. Jeu 12 Fév 2015 - 13:22 | |
| bonjour a tous @ Klaus sous XP je viens de faire une impression numérique en PDF creator avec ton exemple. Après avoir répondu a toute les questions, bizarrement, il n'imprime que les cinq premières ligne! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: probleme d'impression. Jeu 12 Fév 2015 - 14:20 | |
| Ca ne serait pas un peu normal ? La boucle ne fait que 5 lignes... As-tu essayé d'étendre la boucle ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: probleme d'impression. Jeu 12 Fév 2015 - 14:44 | |
| Voici ce que ça donne si je passe de 5 à 15, à la ligne 30: Ca fait bien 15 lignes. D'ailleurs, en commentaire sur cette ligne, il y a ce qu'il faut pour imprimer tout le tableau... | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: probleme d'impression. Jeu 12 Fév 2015 - 18:22 | |
| désolé mais je n'ai pas su interpréter "count " il me reste a capturer l’écran et imprimer le tout ce n'est pas fait encore. juste une question sur la portabilité de ta DLL avec le module de dessin, le programme n'arrive pas à charger la DLL quand le fichier .exe et la DLL sont sur une clef USB. Je ne peut pas mettre de chemin avec une racine qui change avec chaque ordinateur? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: probleme d'impression. Jeu 12 Fév 2015 - 18:35 | |
| Tu peux placer la DLL où tu veux, à condition de mettre le chemin complet dans ma commande DLL_ON. Exemple: - Code:
-
dll_on "C:\Projets Panoramic\Ressources externes\DLLs\KGF.dll" Et évidemment, la DLL peut résider sur une clé USB - il suffit d'indiquer le bon nom de disque dans le chemin. | |
| | | Contenu sponsorisé
| Sujet: Re: probleme d'impression. | |
| |
| | | | probleme d'impression. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |