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 |
|
|
| 1.91 du 24 Février 2013: extension de PrinterFunction | |
| | Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: 1.91 du 24 Février 2013: extension de PrinterFunction Dim 24 Fév 2013 - 15:14 | |
| Nouvelle version de KGF.dll: Version V1.91 du 24 Février 2013
Nouveautés: La fonction PrinterFunction a été élargie:
Le code 9 (retourner des valeurs utiles) à deux nouvelles options: 7: largeur du texte spécifié à l'impression 8: hauteur du texte spécifié à l'impression Dans ces deux cas, il faut passer adr(txt$) en paramètre opt2% pour mesurer le texte contenu dans txt$
Nouveau code 10: 10 = imprimer le texte txt$ dans un rectangle à partir de la position actuelle opt1% = adr(txt$) opt2% = len(txt$) opt3% = (largeur*32768 + hauteur)*2 + option de fond option de fond 0 = fond opaque 1 = fond transparent Ce code permet de maîtriser l'espace que prend un texte, aussi bien verticalement que horizontalement. Tout texte qui dépasse les dimensions du rectangle ne sera tout simplement pas imprimé.
La combinaison de ces deux nouveautés permet de mieux gérer la mise en page en cas de juxtaposition de zones de texte ou d'images.
Il y a une nouvelle fonction dans KGF_SUB.bas pour gérer plus facilement le nouveau code 10 de PrinterFunction: PrinterFunctionTextInRectangle(txt$,largeur%,hauteur%,opt%) : ' PrinterFunction f%=10 avec: txt$ = texte à imprimer à partir de la position actuelle largeur%, hauteur% = dimensions du rectangle délimitant opt% = indicateur pour le fond: 1 = fond transparent 0 = fond opaque
Modules modifiés: KGF.dll, KGF_SUB.bas, KGF.chm, KGF.doc, KGF.pdf
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 1.91 du 24 Février 2013: extension de PrinterFunction Dim 24 Fév 2013 - 15:56 | |
| Voici un petit exemple d'application de ces deux nouveautés: - Code:
-
' demo_PrintTextInRectangle.bas
dlist 1
KGF_initialize("KGF.dll")
SelectWindowsPrinter() PrinterManagerStartDoc()
creer("a") imprimer(10,10)
creer("b") imprimer(1610,10)
creer("c") imprimer(820,10)
creer("d") imprimer(450,500)
PrinterManagerEndDoc()
end
sub creer(x$) dim_local i%, s$ s$ = "" clear 1 for i%=1 to 20 s$ = s$ + string$(5,x$) item_add 1,s$ next i% end_sub
sub imprimer(x%,y%) dim_local i%, n%, h%, txt$ n% = count(1) txt$ = item_read$(1,1) PrinterFunctionGetValues(8,txt$) h% = PrinterFunctionGetValues% for i%=1 to n% PrinterFunctionAbsolutePosition(x%,y%+(i%-1)*h%) txt$ = item_read$(1,i%) PrinterFunctionTextInRectangle(txt$,750,400,1) next i% end_sub
#INCLUDE "KGF_SUB.bas"
On peut ainsi facilement placer des rectangles de texte où on peut, entourer une image de textes, superposer du texte à une image (avec l'option 1 pour fond transparent), etc. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 1.91 du 24 Février 2013: extension de PrinterFunction Dim 24 Fév 2013 - 16:26 | |
| J'étais justement en train de me demander comment imprimer des lignes successives, ne connaissant pas la hauteur du texte, et bien voilà, c'est fait. (Je ne vois pas d'autre moyen, le retour chariot/interligne n'étant pas pris en compte ?) Quelques petites remarques concernant la doc de KGF.dll (KGF.hlp): - dans les fonctions PrinterPrintText et PrinterFunction, les couleurs sont bien au format BGR (comme dans les images bmp) et non pas RGB comme indiqué (d'ailleurs les exemples le montrent): couleur = B*256*256 + G*256 + R. - Dans les paramètres de PrinterPrintText il faut évidemment lire x%... y% et non x%... x%, c'est un détail. - Le petit code exemple de PrinterFunction n'a pas été rectifié (ADR(phnd%)... au lieu de phnd%). - Le mot ellipse ne prend pas d'accent sur le 1er e ( ) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 1.91 du 24 Février 2013: extension de PrinterFunction Dim 24 Fév 2013 - 17:16 | |
| àJL35: Pour la doc: Tu devrais télé-charger KGF.chm à partir de MyDrive dossier DLLs\Documentation CHM\ . C'est ce fichier qui est à jour. La version HLP n'est plus maintenue, et elle n'est plus disponible que suite à la demande expresse d'un des Panoramciens. Tout ce que tu as relevé, est corrigé dans la version CHM.
En ce qui concerne l'impression multi-ligne: effectivement, les caractères chr$(13) et chr$(10) ne sont pas interprétés à l'impression, contrairement à l'affichage. Je posterai très bientôt une solution à ce problème.
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 1.91 du 24 Février 2013: extension de PrinterFunction Dim 24 Fév 2013 - 17:26 | |
| Merci Klaus, effectivement c'est un peu trompeur ces fichiers obsolètes qui font partie de la distribution, mais bon, il suffit de le savoir. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 24 Fév 2013 - 17:39 | |
| Bon, ben...je vais aller me mettre à jours... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 1.91 du 24 Février 2013: extension de PrinterFunction Dim 24 Fév 2013 - 17:53 | |
| J'ai modifié KGF_SUB.bas pour lui ajouter deux procédures qui impriment un texte multi-lignes à l'intérieur d'un rectangle: PrintTextInRectangleFromDList(d%,x%,y%,w%,h%)d% = numéro de DLIST (ou LIST ou MEMO) contenant le texte à imprimer x%,y% = coin en haut à gauche du rectangle récepteur w%,h% = largeur et hauteur du rectangle PrintTextInRectangleFromString(t$,x%,y%,w%,h%)t$ = chaîne de caractères contenant le texte à imprimer (lignes séparées par chr$(13)+chr$(10) ) x%,y% = coin en haut à gauche du rectangle récepteur w%,h% = largeur et hauteur du rectangle Le résultat des deux procédures est identique. Je pense que cela résoud une grande partie des problèmes de mise en page. Et voici le petit programme de démo adapté à cela: - Code:
-
' demo_PrintTextInRectangle.bas
dim txt$, mode% dlist 1
mode% = message_confirmation_yes_no("Le texte à imprimer est dans un DLIST ?")
KGF_initialize("KGF.dll")
SelectWindowsPrinter() PrinterManagerStartDoc()
if mode%=1 creer("a") PrintTextInRectangleFromDList(1,10,10,750,640) creer("b") PrintTextInRectangleFromDList(1,1650,250,750,800) creer("c") PrintTextInRectangleFromDList(1,820,380,750,900) creer("d") PrintTextInRectangleFromDList(1,450,410,750,405) else creer("a") PrintTextInRectangleFromString(txt$,10,10,750,640) creer("b") PrintTextInRectangleFromString(txt$,1650,250,750,800) creer("c") PrintTextInRectangleFromString(txt$,820,380,750,900) creer("d") PrintTextInRectangleFromString(txt$,450,410,750,405) end_if
PrinterManagerEndDoc()
message "Terminé." terminate
end
sub creer(x$) dim_local i%, s$ s$ = "" txt$ = "" clear 1 for i%=1 to 20 s$ = s$ + string$(5,x$) item_add 1,s$ txt$ = txt$ + s$ + chr$(13) + chr$(10) next i% end_sub
#INCLUDE "KGF_SUB.bas"
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 1.91 du 24 Février 2013: extension de PrinterFunction Dim 24 Fév 2013 - 17:59 | |
| Pire que Lucky Luke, tu tires plus vite que ton ombre... ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 24 Fév 2013 - 18:21 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 1.91 du 24 Février 2013: extension de PrinterFunction Dim 24 Fév 2013 - 18:25 | |
| Bien pratique la fonction 9 de PrinterFunction, avec la hauteur de texte, facile d'imprimer des lignes successives, merci Klaus ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 1.91 du 24 Février 2013: extension de PrinterFunction Lun 25 Fév 2013 - 14:56 | |
| Encore une remarque sur la doc (je parle bien cette fois de KGM.chm): PrinterFunction, code fonction 2, les opt2% et opt3% semblent bien être les dimensions (largeur et hauteur) de la figure, et non pas les coordonnées de son coin inférieur droit. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 1.91 du 24 Février 2013: extension de PrinterFunction Lun 25 Fév 2013 - 15:14 | |
| Merci d'éplucher la doc, JL35 !
Il y a bien une erreur dans la doc à ce niveau, mais ce n'est pas tout à fait ce que tu penses.
Les formes sont dessinées à partir de la position courante, et opt2% et opt3% donnent la largeur et la hauteur du rectangle englobant la forme. Ceci est corrigé dans la doc. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: 1.91 du 24 Février 2013: extension de PrinterFunction Lun 25 Fév 2013 - 15:43 | |
| Eh, ce n'est pas tout à fait désintéressé, j'épluche la doc parce que j'utilise les fonctions ! Oui pour la largeur et la hauteur c'est bien ce que j'avais compris (en fait je parlais du rectangle, là il n'y a pas d'ambigüité).
Pour les couleurs, est-ce bien partout au format BGR (B*256*256+G*256+R) et non pas RGB ?
Bon, apparemment nouvelle version (déjà), je regarde.
Tiens, avec la nouvelle version, je ne peux plus lire KGF.chm, j'ai bien les titres mais je n'ai plus accès aux contenus... bizarre... autant pour moi, ça marche, j'avais un blocage de sécurité à lever (Avast).
| |
| | | Contenu sponsorisé
| Sujet: Re: 1.91 du 24 Février 2013: extension de PrinterFunction | |
| |
| | | | 1.91 du 24 Février 2013: extension de PrinterFunction | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |