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
» A propos des attributs de fichier
par Oscaribout Aujourd'hui à 1:53

» Problème de math
par Marc37 Hier à 23:04

» Problème de math
par braveen Hier à 21:40

» I Love You
par papydall Hier à 19:22

» Un petit "coucou" à tous les Panoramiciens !
par mindstorm Hier à 17:06

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Mer 18 Oct 2017 - 18:08

» mise a jour calculatrice
par joeeee2017 Mer 18 Oct 2017 - 15:57

» [solved] 3D_LINE How to ?
par Jicehel Mer 18 Oct 2017 - 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Mar 17 Oct 2017 - 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Formatage (page A4)

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2, 3  Suivant
AuteurMessage
Invité
Invité



MessageSujet: Re: Formatage (page A4)   Jeu 21 Fév 2013 - 20:31

Je l'ai eu aussi, avec l'extention et l'imprimante thermique. Je l'ai gardé 1 mois que j'ai vendu pour acheter un PET 2001 de commodore, de la famille de 6502 cadencé à 1 mhz. C'est d'ailleurs sur celui-ci que le fer à soudé à cramé.


l était beau le mien Razz
Revenir en haut Aller en bas
maelilou



Nombre de messages : 111
Age : 68
Localisation : Ardennes françaises
Date d'inscription : 02/05/2012

MessageSujet: Re: Formatage (page A4)   Jeu 21 Fév 2013 - 20:32

Et j'avais comme livre de chevet le bouquin de Rodnay Zacks...

Mais la toute première programmation que j'ai faite c'était sur des tores de ferrite.
Puis sur cartes perforées 80 colonnes...

Et quand maintenant les gosses ne s'étonnent plus de rien, j'aimerais remonter le temps avec eux et leur montrer la misère qu'on avait lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Formatage (page A4)   Jeu 21 Fév 2013 - 23:45

Je ne me lasse pas de revoir des photos de mon premier ordi (l'Hector HRX), ça me rappelle toujours les heures passées à recopier les pages de code d'Hebdogiciel pour faire une jeu de 'petanque' ou un space invander rempli de sprites fait à partir de centaines de lignes de data injectées dans la mémoire à partir de PEEK et de POKE et la jolie musique du lecteur de cassette quand on sauvegardait tout ça (ou qu'on le lisait) en croisant les doigts pour que ça passe bien Wink


Dernière édition par Jicehel le Ven 22 Fév 2013 - 1:25, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Formatage (page A4)   Ven 22 Fév 2013 - 1:15

Je vois que je ne suis pas tout seul à avoir connu le moyen-âge ! mon Dieu, comme le temps passe (vite) !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

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

MessageSujet: re   Ven 22 Fév 2013 - 1:54

Mon premier ordi ressemblait à celui ci :


les disquettes avait plus de mémoire que le disque dur.... Laughing
(mac os)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Formatage (page A4)   Ven 22 Fév 2013 - 2:03

Juste pour info: le tuto sur mes fonctions de gestion d'imprimante avance...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Ven 22 Fév 2013 - 2:30

Super Klaus !

Je sens que je vais refaire un stock de doliprane dans peu de temps...
lol! lol! lol!

J'ai fait 2 propositions de commande, j'aimerai avoir ton sentiment sur ces sujets
-"Pause_Click N Pause_Click_Off N"
-"Extension Checked()"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Formatage (page A4)   Ven 22 Fév 2013 - 11:58

@Ygeronimi:
pour le click, j'ai donné la solution dans un autre dil de discussion: utilise OFF_CLICK n, puis plus tard, refais ON_CLICK n,nom_de_label
pour l'extension de checked(), je pense que Jack a répondu...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Formatage (page A4)   Ven 22 Fév 2013 - 13:57

Voici, sans prétention, un petit tuto montrant comment on se sert des fonctions de gestion d'imprimante de KGF.dll. Ce tuto n'a pas vocation à montrer toutes les fonctions. Mais il explique comment faire une édition multi-pages, avec du texte, du dessin et des images.

Tutoriel pour les fonctions d'impression de KGF.dll

KGF.dll met à disposition un ensemble de fonctions permettant de gérer l'impression.
Ces fonctions ont de multiples paramètres, et l'ordre dans lequel elles sont appelées,
a une importance capitale.

Pour faciliter leur utilisation, il est fortement conseillé d'utiliser les procédures de
KGF_SUB.bas. Elles "habillent" les fonctions de la DLL de façon plus intuitive et
permettent d'écrire des programmes plus lisibles. A travers tout ce tutoriel, l'accent
sera mis sur les procédures de KGF_SUB.bas.

Le but de ce tutoriel est de créer un programme montrant l'utilisation des fonctions
de gestion d'impression, étape par étape, avec un code fonctionnel et vérifiable à
chaque étape.

Etape 1 - création de la structure initiale du programme

Nous allons créer un "squelette" de programme, utilisable d'ailleurs pour tout programme
Panoramic. A ce squelette, nous allons accrocher les différents éléments permettant de
gérer l'impression.

Code:

' tutoriel_fonctions_impression.bas

' === programme principal, création de l'environnement Panoramic
labels()
constantes()
variables()
donnees()
form0()
menu()
GUI()
initialisations()
end

' === procédures pour le programme principal
sub labels()
end_sub

sub constantes()
end_sub

sub variables()
end_sub

sub donnees()
end_sub

sub form0()
end_sub

sub menu()
end_sub

sub GUI()
end_sub

sub initialisations()
end_sub

' === lien lers KGF_SUB.bas
#INCLUDE "KGF_SUB.bas"

Clairement, ce programme ne fait rien pour le moment. Mais il donne accès à KGF_SUB.bas
et permet de gérer les différents éléments de façon ordonnée.

Etape 2 - personnalisation de la structure initiale du programme

Nous allons maintenant adapter ce squelette pour qu'il puisse servir de programme de test
d'impression. Pour cela, nous allons configurer la form 0, lui donner un menu et quelques objets.

Pour créer tout objet Panoramic, il faut spécifier un numéro d'objet. Ici, nous allons employer
une technique permettant de revenir plus tard sur le programme en insérant de nouveaux objets
sans avoir à se soucier des numéros d'objets disponibles. Pour cela, les objets seront créés
par un numéro incrémenté de 1 pour chaque nouvel objet, et on mémorise dans des variables
les numéros des objets que l'on doit accéder ultérieurement. Ces noms de variables doivent
être sufffisamment longs et explicites pour définir clairement le rôle de l'objet.

Code:

' tutoriel_fonctions_impression.bas

' === programme principal, création de l'environnement Panoramic
labels()
constantes()
variables()
donnees()
form0()
menu()
GUI()
initialisations()
end

' === procédures pour le programme principal
sub labels()
  label imprimer3, sortir
end_sub

sub constantes()
end_sub

sub variables()
  dim no% : ' variable interne pour la création de nouveaux objets
  dim no1%, no2% : ' variables internes pour la création du menu
  dim printer_x%, printer_y% : ' mémorisation de la position d'impression
end_sub

sub donnees()
end_sub

sub form0()
  full_space 0
  caption 0,"Tutoriel pour l'utilisation des fonctions de gestion d'impression"
end_sub

sub menu()
  no% = no% + 1 : main_menu no% : no1% = no%
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no% : caption no%,"Fichiers"
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Imprimer Etape 3"
    on_click no%,imprimer3
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"sortir"
    on_click no%,sortir

end_sub

sub GUI()
end_sub

sub initialisations()
  KGF_initialize("KGF.dll")
end_sub

' === routines évènement

' ici, on crée l'impression de l'étape 3
imprimer3:
  PrinterManagerStartDoc()
  ' imprimer le texte en police Arial taille 12, couleur bleue,
  ' en position (300,400), en gras et italique
  printer_x% = 300
  printer_y% = 400
  PrinterPrintText("Ceci est mon texte","Arial","GIAXAY",0,0,255,12,printer_x%,printer_y%)
  PrinterManagerEndDoc()
  return
 
  ' ici, on sort du programme
sortir:
 terminate

' === lien lers KGF_SUB.bas
#INCLUDE "KGF_SUB.bas"

Etape 3 - Une première impression

Bon, assez de généralités. On va faire une première impression, très simple. Plus tard,
nous allons ajouter d'autres possibilites au programme.

Pour cette fois, on va juste imprimer une seule ligne de texte et vérifier le résultat.

Pour cela, on utilise 3 procédures de KGF_SUB:
- PrinterManagerStartDoc pour ouvrir l'imprimante et initialiser l'impression
- PrinterPrintText pour imprimer un texte
- PrinterManagerEndDoc pour fermer l'impression et envoyer le document sur l'imprimante

Il nous faut aussi 2 variables pour mémoriser l'adresse x,y de la position d'impression.
Ce seront les variables printer_x%, printer_y%.

Code:

' tutoriel_fonctions_impression.bas

' === programme principal, création de l'environnement Panoramic
labels()
constantes()
variables()
donnees()
form0()
menu()
GUI()
initialisations()
end

' === procédures pour le programme principal
sub labels()
  label imprimer, sortir
end_sub

sub constantes()
end_sub

sub variables()
  dim no% : ' variable interne pour la création de nouveaux objets
  dim no1%, no2% : ' variables internes pour la création du menu
  dim printer_x%, printer_y% : ' mémorisation de la position d'impression
end_sub

sub donnees()
end_sub

sub form0()
  full_space 0
  caption 0,"Tutoriel pour l'utilisation des fonctions de gestion d'impression"
end_sub

sub menu()
  no% = no% + 1 : main_menu no% : no1% = no%
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no% : caption no%,"Fichiers"
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Imprimer"
    on_click no%,imprimer
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"sortir"
    on_click no%,sortir

end_sub

sub GUI()
end_sub

sub initialisations()
  KGF_initialize("KGF.dll")
end_sub

' === routines évènement

' ici, on crée l'impression
imprimer:
  PrinterManagerStartDoc()
  ' imprimer le texte en police Arial taille 12, couleur bleue,
  ' en position (300,400), en gras et italique
  printer_x% = 300
  printer_y% = 400
  PrinterPrintText("Ceci est mon texte","Arial","GIAXAY",0,0,255,12,printer_x%,printer_y%)
  PrinterManagerEndDoc()
  return
 
  ' ici, on sort du programme
sortir:
 terminate

' === lien lers KGF_SUB.bas
#INCLUDE "KGF_SUB.bas"

On voit immédiatement plusieurs points:
1. une édition doit être "ouverte" (procedure PrinterManagerStartDoc)
2. on peut envoyer un texte n'importe où, au pixel près, en précisant police, taille, couleur et attributs
(procédure PrinterPrintText)
3. pour lancer l'impression, il faut "fermer" l'édition (procédure PrinterManagerEndDoc)
ce qui a pour effet d'envoyer le document constitué à l'imprimante.

Il en découle immédiatement que les fonctions d'impression n'agissent pas directement sur
l'imprimante, mais plutôt sur une image interne, le "canvas" de l'édition. Ce canvas est un grand
tableau en mémoire, contenant chaque pixel avec ses attributs, comme une bitmap. Et les
fonctions d'impression agissent sur ce canvas, permettant ainsi de constituer des éditions complexes.

Mais en fait, comment faire plusieurs pages ? Car tant qu'on n'éjecte pas la page en cours de
constitution, tout se passe dans le canvas de la même page. On peut utiliser bien sûr EndDoc pour
imprimer la page en cours, puis StartDoc pour lancer une nouvelle édition, etc. Mais c'est trop lourd.
C'est pourquoi il y a la procédure PrinterManagerNewPage(). Elle imprime la page en cours comme
la procédure PrinterManagerEndDoc, mais garde l'impression ouverte et présente un canvas vierge
aux traitements suivants. Et la fonction PrinterManagerReset(mode%) permet d'annuler tout ou partie
d'une édition: 0=toute l'édition, rien ne sera imprimé, et 1=la page actuellement en cours sera effacée
et redeviendra vierge.

Mais attention: une fois qu'une page est éjectée par PrinterManagerNewPage et qu'on est passé sur la
page suivante, on ne peut plus supprimer sélectivement cette page ! On ne peut que supprimer l'édition
complète.

Etape 4 - Construction d'un projet d'édition plus complexe

Nous allons faire une édition de 2 pages.

La première contiendra plusieurs textes. Pour chaque texte, on pourra saisir le texte, choisir la police,
la taille, la couleur et les attributs. Des objets seront placés dans la form 0 pour cela, avec un bouton
de validation qui "imprime" le texte préparé. Un autre bouton permettra de passer à la page suivante.
On pourra cocher les cases des attributs, choisir la police dans une combo et choisir la couleur par
des scroll_bar.

La seconde contiendra deux zones colorées, Dans la première, on imprimera un texte prédéfini,
et dans la seconde, on placera une image ou photo sélectionnée dans un dossier sur disque. Un
bouton permettra de valider l'édition complète.

Le but du tuto n'étant pas d'apprandre à saisir ces informations, mais à gérer l'impression, je fournis ici
le programme complet, avec les parties impression complètement documentées:
Code:

' tutoriel_fonctions_impression.bas

' === programme principal, création de l'environnement Panoramic
labels()
constantes()
variables()
donnees()
form0()
menu()
GUI()
initialisations()
end

' === procédures pour le programme principal
sub labels()
  label imprimer3, sortir, debut_4, change_couleur, appliquer, ejecter
  label charger_image, imprimer4
end_sub

sub constantes()
end_sub

sub variables()
  dim no% : ' variable interne pour la création de nouveaux objets
  dim no1%, no2% : ' variables internes pour la création du menu
  dim printer_x%, printer_y% : ' mémorisation de la position d'impression
  dim no_page_1%, no_page_2% : ' numéros d'objet des containers des pages 1 et 2
  dim no_debut_4% : ' numéro d'objet du bouton "Début Etape 4"
  dim no_text% : ' numéro d'objet du texte à imprimer en page 1
  dim no_x%, no_y% : ' numéros d'objet pour la position du texte en page 1
  dim no_police% : ' numéro d'objet du nom de police du texte en page 1
  dim no_gras%, no_italique%, no_souligne%, no_barre% : ' options du texte
  dim no_rouge%, no_bleu%, no_vert% : ' couleurs du texte
  dim no_couleur% : ' picture de visualisation de la couleur du texte
  dim no_taille% : ' taille de la police du texte
  dim attrib$ : ' pour construire les attributs pour PrinterPrintText en page 1
  dim R%, G%, B%, X%, Y%, T% : ' pour paramètres pour PrinterPrintText en page 1
  dim no_open% : ' numéro d'objet du open_dialog pour trouver une image
  dim s$ : ' variable de travail
end_sub

sub donnees()
end_sub

sub form0()
  full_space 0
  caption 0,"Tutoriel pour l'utilisation des fonctions de gestion d'impression"
end_sub

sub menu()
  no% = no% + 1 : main_menu no% : no1% = no%
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no% : caption no%,"Fichiers"
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Imprimer Etape 3"
    on_click no%,imprimer3
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"sortir"
    on_click no%,sortir

end_sub

sub GUI()
  no% = no% + 1 : button no% : no_debut_4% = no%
    top no%,40 : left no%,10 : width no%,130
    caption no%,"Début Etape 4" : on_click no%,debut_4
  no% = no% + 1 : container no% : no_page_1% = no% : inactive no%
    top no%,10 : left no%,150 : width no%,800 : height no%,300
    caption no%,"Page 1"
  no% = no% + 1 : edit no% : parent no%,no_page_1% : no_text% = no%
    top no%,20 : left no%,20 : width no%,380
  no% = no% + 1 : alpha no% : parent no%,no_page_1%
    s$ = "A l'aide de ce formulaire, préparez une ligne de texte."+chr$(13)+chr$(10)
    s$ = s$ + "Puis, utilisez le bouton Appliquer pour l' placer."+chr$(13)+chr$(10)
    s$ = s$ + "Répétez cela à volonté,"+chr$(13)+chr$(10)
    s$ = s$ + "puis utilisez Ejecter pour passer à la page suivante."
    top no%,60 : left no%,20 : caption no%,s$
  no% = no% + 1 : alpha no% : parent no%,no_page_1%
    top no%,20 : left no%,440 : caption no%,"X:"
  no% = no% + 1 : edit no% : parent no%,no_page_1% : no_x% = no%
    top no%,20 : left no%,460 : width no%,60
  no% = no% + 1 : alpha no% : parent no%,no_page_1%
    top no%,20 : left no%,560 : caption no%,"Y:"
  no% = no% + 1 : edit no% : parent no%,no_page_1% : no_y% = no%
    top no%,20 : left no%,580 : width no%,60
  no% = no% + 1 : combo no% : parent no%,no_page_1% : no_police% = no%
    top no%,50 : left no%,440 : width no%,200 : font_names_load no%
  no% = no% + 1 : check no% : parent no%,no_page_1% : no_gras% = no%
    top no%,80 : left no%,440 : caption no%,"Gras"
  no% = no% + 1 : check no% : parent no%,no_page_1% : no_italique% = no%
    top no%,100 : left no%,440 : caption no%,"Italique"
  no% = no% + 1 : check no% : parent no%,no_page_1% : no_souligne% = no%
    top no%,120 : left no%,440 : caption no%,"Souligné"
  no% = no% + 1 : check no% : parent no%,no_page_1% : no_barre% = no%
    top no%,140 : left no%,440 : caption no%,"Barré"
  no% = no% + 1 : alpha no% : parent no%,no_page_1%
    top no%,80 : left no%,540 : caption no%,"R:"
  no% = no% + 1 : scroll_bar no% : parent no%,no_page_1% : no_rouge% = no%
    top no%,80 : left no%,560 : min no%,0 : max no%,255 : position no%,0
    width no%,200 : on_change no%,change_couleur
  no% = no% + 1 : alpha no% : parent no%,no_page_1%
    top no%,110 : left no%,540 : caption no%,"G:"
  no% = no% + 1 : scroll_bar no% : parent no%,no_page_1% : no_vert% = no%
    top no%,110 : left no%,560 : min no%,0 : max no%,255 : position no%,0
    width no%,200 : on_change no%,change_couleur
  no% = no% + 1 : alpha no% : parent no%,no_page_1%
    top no%,140 : left no%,540 : caption no%,"B:"
  no% = no% + 1 : scroll_bar no% : parent no%,no_page_1% : no_bleu% = no%
    top no%,140 : left no%,560 : min no%,0 : max no%,255 : position no%,0
    width no%,200 : on_change no%,change_couleur
  no% = no% + 1 : picture no% : parent no%,no_page_1% : no_couleur% = no%
    top no%,20 : left no%,670 : height no%,50 : width no%,90 : color no%,0,0,0
  no% = no% + 1 : alpha no% : parent no%,no_page_1%
    top no%,190 : left no%,440 : caption no%,"Taille:"
  no% = no% + 1 : edit no% : parent no%,no_page_1% : no_taille% = no%
    top no%,190 : left no%,500 : width no%,500 : text no%,12
  no% = no% + 1 : button no% : parent no%,no_page_1%
    top no%,220 : left no%,440
    caption no%,"Appliquer" : on_click no%,appliquer
  no% = no% + 1 : button no% : parent no%,no_page_1%
    top no%,250 : left no%,440
    caption no%,"Ejecter" : on_click no%,ejecter

  no% = no% + 1 : container no% : no_page_2% = no% : inactive no%
    top no%,320 : left no%,150 : width no%,800 : height no%,300
    caption no%,"Page 2"
  no% = no% + 1 : open_dialog no% : no_open% = no%
  no% = no% + 1 : alpha no% : parent no%,no_page_2%
    s$ = "A l'aide du bouton Image, chargez une image."+chr$(13)+chr$(10)
    s$ = s$ + "Puis, utilisez le bouton Imprimer pour lancer l'impresssion."
    top no%,60 : left no%,20 : caption no%,s$
  no% = no% + 1 : button no% : parent no%,no_page_2%
    top no%,20 : left no%,440
    caption no%,"Image" : on_click no%,charger_image
  no% = no% + 1 : button no% : parent no%,no_page_2%
    top no%,50 : left no%,440
    caption no%,"Imprimer" : on_click no%,imprimer4

end_sub

sub initialisations()
  KGF_initialize("KGF.dll")
end_sub

' === routines évènement

' ici, on crée l'impression de l'étape 3
imprimer3:
  PrinterManagerStartDoc()
  ' imprimer le texte en police Arial taille 12, couleur bleue,
  ' en position (300,400), en gras et italique
  printer_x% = 300
  printer_y% = 400
  PrinterPrintText("Ceci est mon texte","Arial","GIAXAY",0,0,255,12,printer_x%,printer_y%)
  PrinterManagerEndDoc()
  return
 
  ' ici, on sort du programme
sortir:
 terminate
 
' ici, on débute l'étape 4 (page 1)
debut_4:
  inactive no_debut_4%
  active no_page_1%
  PrinterManagerStartDoc()
  return
 
' ici, on change la couleur du texte en étape 4 (page 1)
change_couleur:
  color no_couleur%,position(no_rouge%),position(no_vert%),position(no_bleu%)
  return
 
' ici, on applique le texte avec ses attributs à la page
appliquer:
  if numeric(text$(no_x%))=0
    message "Coordonnée X invalide"
    return
  end_if
  if numeric(text$(no_y%))=0
    message "Coordonnée Y invalide"
    return
  end_if
  if numeric(text$(no_taille%))=0
    message "Coordonnée Y invalide"
    return
  end_if
  X% = val(text$(no_x%))
  Y% = val(text$(no_y%))
  T% = val(text$(no_taille%))
  attrib$ = "AXAY" : ' pour le positionnement en absolu
  if checked(no_gras%)=1 then attrib$ = attrib$ + "G" : ' gras ?
  if checked(no_italique%)=1 then attrib$ = attrib$ + "I" : ' italique ?
  if checked(no_souligne%)=1 then attrib$ = attrib$ + "U" : ' souligné ?
  if checked(no_barre%)=1 then attrib$ = attrib$ + "S" : ' barré ?
  R% = position(no_rouge%)
  G% = position(no_vert%)
  B% = position(no_bleu%)
  PrinterPrintText(text$(no_text%),text$(no_police%),attrib$,R%,G%,B%,T%,X%,Y%)
  return

' ici, on éjecte la page 1 et on passe à la page 2 en étape 4
ejecter:
  PrinterManagerNewPage()
  inactive no_page_1%
  active no_page_2%
  return
 
' ici, on charge une image du disque
charger_image:
  s$ = file_name$(no_open%)
  return

' ici, on lance l'impression en étape 4
imprimer4:
  ' on construit d'abord la page 2
 
  ' positionner en absolu = (200,150)
  PrinterFunctionAbsolutePosition(400,150)
  ' dessiner un rectangle de 800x200 pixels au coins arrondis sur 25 pixels
  PrinterFunctionForm(1,800,200,25)
  ' remplir le rectangle de bleu (couleur RGB)
  PrinterFunctionFlood(0,200,200,255)
  ' positionner en absolu = (430,250)
  PrinterFunctionAbsolutePosition(410,240)
  ' imprimer un texte dans ce rectangle
  PrinterFunctionText("Texte dans rectangle",1)
 
  ' positionner en absolu = (300,550)
  PrinterFunctionAbsolutePosition(300,550)
  ' dessiner un rectangle de 800x600 pixels au coins arrondis sur 10 pixels
  PrinterFunctionForm(1,800,600,10)
  ' remplir le rectangle de bleu (couleur RGB)
  PrinterFunctionFlood(0,200,200,255)
  ' positionner en absolu = (430,250)
  PrinterFunctionAbsolutePosition(320,570)
  ' insérer l'image sélectionnée
  PrinterFunctionImage(s$,760,560)
 
  ' puis on ferme l'édition ce qui imprime tout
  PrinterManagerEndDoc()
  inactive no_page_2%
  active no_debut_4%
  return
 
' === lien lers KGF_SUB.bas
#INCLUDE "KGF_SUB.bas"

Etape 5 - aller plus loin

Il y a de multiples fonctions supplémentaires. Un bon conseil: lisez attentivement l'aide de KGF.dll
ou l'aide de KGF_SUB.bas. Il y a de multiples informations et des exemples pour chaque fonction.

On peut, entre autres:
- choisir l'imprimante et définir l'imprimante par défaut
- connaître le nombre d'imprimantes installées
- dessiner des lignes, rectangles, éllipses, arcs de cercles
- positionner le point d'impression en absolu ou en relatif
- changer tous les attributs d'impression (police, couleur, taille, ...)
- changer couleur d'avant et arrière-plan, épaisseur du trait, ...
- retourner des informations physiques de la feuille
- retourner des informations sur les paramétrages actifs

Toutes ces fonctions sont accessibles par des appels directs de fonctions dans KGF.dll, ou par
l'utilisation de procédures de KGF_SUB.bas, plus simples à mettre en oeuvre.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Ven 22 Fév 2013 - 16:09

Souci à l'étape 4



Tu expliques le placement du texte sur la feuille
mais, pourrais tu donner les dimensions d'une feuille A4 ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Formatage (page A4)   Ven 22 Fév 2013 - 16:32

le plantage vient du fait que ton imprimante est configurée à plus de 300 ppm (600 ppm par exemple). Si tu changes cela dans les propriétés de l'imprimante (qualité d'impression), ça passera.

Et puis, toutes les imprimantes ne sont pas capable de gérer le remplissage. Mets simplement les lignes 221 et 231 en commentaire.

Tu peux utiliser la fonction PrinterFunctionGetMetrics pour avoir toutes les informations de dimension. Regarde dans le fichier d'aide...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Ven 22 Fév 2013 - 16:43

Ok ! j'ai compris le pourquoi du comment... Laughing

Je viens de voir qu' effectivement ma question sur les dim d'un feuille A4 était stupide
puisque ces dimensions changent en fonction de la résolution Dpi

2480 x 3508 pixels / pouces en 300 dpi
1654 x 2339 pixels / pouces en 200 dpi
827 x 1170 pixels / pouces en 100 dpi
596 x 842 pixels / pouces en 72 dpi

la source ici


maintenant il va falloir que je retrouve la résolution d'impression de mon imprimante...
...ca c'est une autre paire de manches. Laughing

voir la modifier et là... geek
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

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

MessageSujet: re   Ven 22 Fév 2013 - 17:10

Impossible de savoir ou de modifier avec des dimensions la résolution
de mon imprimante par son outils de configuration...GRRRRRRRR!!!!!!!! bounce


Dernière édition par ygeronimi le Ven 22 Fév 2013 - 17:29, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Formatage (page A4)   Ven 22 Fév 2013 - 17:19

Click doit/propriétés sur l'imprimante. Voici e que ça fait chez moi:


Je vais poster un petit code bientôt pour afficher toutes les caractéristiques numériques de la page.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Formatage (page A4)   Ven 22 Fév 2013 - 17:38

Et voici un petit code pour afficher les infos de la page de l'imprimante:
Code:
' infos_imprimante.bas

dim R%, G%, B%

memo 1 : top 1,10 : left 1,10 : width 1,550 : height 1,400
font_name 1,"Courier"

KGF_initialize("KGF.dll")

SelectWindowsPrinter()
PrinterManagerStartDoc()

item_add 1,"Paramètres de la page d'impression:"
PrinterFunctionGetMetrics(1)
item_add 1,"PHYSICALOFFSETX    décalage horizontal en pixel: "+str$(PrinterFunctionGetMetrics%)
PrinterFunctionGetMetrics(2)
item_add 1,"PHYSICALOFFSETY    décalage vertical en pixel: "+str$(PrinterFunctionGetMetrics%)
PrinterFunctionGetMetrics(3)
item_add 1,"PHYSICALWIDTH      largeur totale en pixel: "+str$(PrinterFunctionGetMetrics%)
PrinterFunctionGetMetrics(4)
item_add 1,"PHYSICALHEIGHT    hauteur totale en pixel: "+str$(PrinterFunctionGetMetrics%)
PrinterFunctionGetMetrics(5)
item_add 1,"LOGPIXELSX        résolution horizontale en pixels/pouce: "+str$(PrinterFunctionGetMetrics%)
PrinterFunctionGetMetrics(6)
item_add 1,"LOGPIXELSY        résolution verticale en pixels/pouce: "+str$(PrinterFunctionGetMetrics%)
PrinterFunctionGetMetrics(7)
item_add 1,"HORZRES            largeur utile en pixels: "+str$(PrinterFunctionGetMetrics%)
PrinterFunctionGetMetrics(8)
item_add 1,"VERTRES            hauteur utile en pixels: "+str$(PrinterFunctionGetMetrics%)
PrinterFunctionGetMetrics(9)
item_add 1,"HORZSIZE          largeur utile en milimètres: "+str$(PrinterFunctionGetMetrics%)
PrinterFunctionGetMetrics(10)
item_add 1,"VERTSIZE          hauteur utile en milimètres: "+str$(PrinterFunctionGetMetrics%)

item_add 1,""
item_add 1,"Autres paramètres:"
PrinterFunctionGetValues(1)
item_add 1,"abscisse (x) de la position active: "+str$(PrinterFunctionGetValues%)
PrinterFunctionGetValues(2)
item_add 1,"ordonnée (Y) de la position active: "+str$(PrinterFunctionGetValues%)
PrinterFunctionGetValues(3)
B% = bin_and(PrinterFunctionGetValues%,255)
G% = bin_and(int(PrinterFunctionGetValues%/256),255)
R% = int(int(bin_and(PrinterFunctionGetValues%,255*256*256)/256)/256)
item_add 1,"couleur de la police: "+str$(R%)+","+str$(G%)+","+str$(B%)
PrinterFunctionGetValues(4)
B% = bin_and(PrinterFunctionGetValues%,255)
G% = bin_and(int(PrinterFunctionGetValues%/256),255)
R% = int(int(bin_and(PrinterFunctionGetValues%,255*256*256)/256)/256)
item_add 1,"couleur du fond: "+str$(R%)+","+str$(G%)+","+str$(B%)
PrinterFunctionGetValues(5)
B% = bin_and(PrinterFunctionGetValues%,255)
G% = bin_and(int(PrinterFunctionGetValues%/256),255)
R% = int(int(bin_and(PrinterFunctionGetValues%,255*256*256)/256)/256)
item_add 1,"couleur de dessin: "+str$(R%)+","+str$(G%)+","+str$(B%)
PrinterFunctionGetValues(6)
item_add 1,"taille de la police: "+str$(PrinterFunctionGetValues%)
PrinterFunctionGetValues(7,"Bonjour")
item_add 1,"largeur de [Bonjour]: "+str$(PrinterFunctionGetValues%)
PrinterFunctionGetValues(8,"Bonjour")
item_add 1,"hauteur de [Bonjour]: "+str$(PrinterFunctionGetValues%)

PrinterManagerReset(0)
end


#INCLUDE "KGF_SUB.bas"

et pour mon HP psc 1315, voici ce qu'il affiche:


Et comme tu peux voir, c'est du DIN A4: 210x297 mm !


Dernière édition par Klaus le Lun 25 Fév 2013 - 17:20, édité 4 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Formatage (page A4)   Ven 22 Fév 2013 - 17:47

Merci Klaus pour le tuto, je vais commencer par me l'imprimer pour l'avoir sous le coude.

Et merci aussi pour le petit utilitaire, ça peut toujours servir.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
bignono

avatar

Nombre de messages : 1086
Age : 60
Localisation : Val de Marne
Date d'inscription : 13/11/2011

MessageSujet: Re: Formatage (page A4)   Ven 22 Fév 2013 - 17:53

Bonjour Klaus,
Le petit code pour afficher les infos de l'imprimante, c'est très utile. Ça va m'aider à décortiquer ton tuto. Merci beaucoup.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

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

MessageSujet: re   Ven 22 Fév 2013 - 17:57

Je suis sous windows 7 et quand je vais dans les propriétés
de mon imprimante, il me renvoit sur gestionnaire de configuration
propre à l' imprimante.

( Epson stylus sx130 )

je n'ai pas le même affichage que toi... Crying or Very sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

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

MessageSujet: re   Ven 22 Fév 2013 - 18:04

J' avais pas vu ton code pour récupérer les données de l'imprimante
je teste tout de suite ! Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Formatage (page A4)   Ven 22 Fév 2013 - 18:05

Comment cela se présente-il ? J'ai aussi une Stylus, et voici ce qu'il m'affiche:

Dans ce cas, c'est la liste des icônes en "Qualité d'impression" qui détermine le nombre de pixels.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Ven 22 Fév 2013 - 18:08

Et voilà le résultat :
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Formatage (page A4)   Ven 22 Fév 2013 - 18:18

Donc, avec 360 pixels, ta résolution est trop forte. Essaie de baisser la qualité d'impression, dans le gestionnaire. Il n'affiche pas quelque chose comme ce que je viens de poster ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Ven 22 Fév 2013 - 18:30

Non, il m'affiche le gestionnaire propre à l'imprimante d'epson.
Je ne peux pas régler la résolution.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Formatage (page A4)   Ven 22 Fév 2013 - 18:40

Impossible, Ygeronimi. Il y a certainement un bouton ou un onglet genre Options, Avancé, etc. Peux-tu poster une copie d'écran de ce gestionnaire ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Ven 22 Fév 2013 - 18:57




je dois m'absenter, a plus...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Formatage (page A4)   

Revenir en haut Aller en bas
 
Formatage (page A4)
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 2 sur 3Aller à la page : Précédent  1, 2, 3  Suivant
 Sujets similaires
-
» [Résolu] Formatage sous W7
» [Annulée] Demande de page d'aceuil
» [Annulée] Demande une page HTML
» [résolu] Lien dans image survolée vers page html
» lien vers page php

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: