FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Méthode manuelle d'extraction de la racine carrée
par pascal10000 Aujourd'hui à 7:47

» Un catalogue de photos de fleurs, avec KBDD, affichage HTML
par Klaus Hier à 21:12

» Racine carrée d’un nombre par l’algorithme de Héron
par papydall Hier à 20:21

» Mah-Jong anglais
par papydall Hier à 18:43

» [annulé]ON_MOVE n,l ne fonctionne que sur le form 0
par silverman Hier à 16:52

» Ludothèque Panoramic
par jjn4 Hier à 15:42

» Partie fractionnaire d'un flottant
par silverman Hier à 11:28

» Calculus
par Ouf_ca_passe Hier à 9:06

» 6 (en analyse):confusion de variable locale entre SUB et FNC
par Jack Hier à 8:18

» Curseurs personnalisés
par papydall Hier à 5:24

» KGF_dll - nouvelles versions
par Klaus Hier à 0:38

» Exemples de définition et utilisation de Fonctions FNC
par Marc Lun 19 Fév 2018 - 22:50

» Pour coincer la bulle
par JL35 Lun 19 Fév 2018 - 15:31

» Logiciel de soutien en langues.
par Pedro Alvarez Lun 19 Fév 2018 - 15:00

» Version instantanée V 0.9.28i14 du 10/02/2018
par pascal10000 Lun 19 Fév 2018 - 10:58

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Février 2018
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
262728    
CalendrierCalendrier

Partagez | 
 

 1.91 du 24 Février 2013: extension de PrinterFunction

Aller en bas 
AuteurMessage
Klaus

avatar

Nombre de messages : 10572
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10572
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 6145
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: 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 ( Wink )
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10572
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 6145
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8015
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 24 Fév 2013 - 17:39

Bon, ben...je vais aller me mettre à jours... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10572
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: 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"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 6145
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: 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... !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8015
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 24 Fév 2013 - 18:21

Tirer, tirer,...en tout cas programmer c'est sûr !

lol! lol! lol! lol! lol! lol! lol! lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6145
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: 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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6145
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10572
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 6145
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: 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).

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: 1.91 du 24 Février 2013: extension de PrinterFunction   

Revenir en haut Aller en bas
 
1.91 du 24 Février 2013: extension de PrinterFunction
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Février 2013] Quelques nouveautés et informations !
» [festival] - Le Troll et légende - le 29, 30, 31 mars 2013
» [Résolu] Comment Transférer d'un carte SD à Mapsource CN Europe 2013
» pas de carte 2013 après téléchargement
» Quelques captures de Comodo Internet Security 2013

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: