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 |
|
|
| KGF_dll - nouvelles versions | |
|
+12JL35 Oscaribout bignono Pedro pascal10000 silverman Jicehel papydall Minibug Marc Yannick Klaus 16 participants | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 7 Nov 2020 - 18:03 | |
| @Mark: - Citation :
- Ton lien ci-dessus ne fonctionne pas pour nous
J'ai corrigé dansle post d'origine. Voici, pour rappel, le véritable lien: https://klauspanoramic.000webhostapp.com/attestation-de-deplacement-derogatoire.jpgUtilisable avec le programme: - Code:
-
' FormulaireCivid_PDF.bas
label go dim res%, PDF$, s$ dim TxtPars$(100), IntPars%(100), FloatPars(100) dim i%
dll_on "KGF.dll" full_space 0
alpha 1 : top 1,10 : left 1,10 : caption 1,"Choix de la personne:" combo 2 : top 2,30 : left 2,10 : width 2,300 item_add 2,"Dupond, Martin" item_add 2,"Dupond, Françoise" item_select 2,1 button 10 : top 10,100 : left 10,10 : caption 10,"Go !" : on_click 10,go
memo 100 : top 100,10 : left 100,500 : width 100,300 : height 100,500 : bar_both 100
end
go: i% = item_index(2) select i% case 1: Script_1() case 2: Script_2() end_select res% = dll_call5("PrintFormattedPDF",handle(100),adr(TxtPars$),adr(Intpars%),adr(FloatPars),adr(PDF$)) execute PDF$ return sub Script_1() PDF$ = "Formulaire_0.pdf" TxtPars$(0) = "attestation-de-deplacement-derogatoire.jpg" TxtPars$(1) = item_index$(2) TxtPars$(2) = "23/04/1956" TxtPars$(3) = "Melun (77)" TxtPars$(4) = "82 rue de la République, 91000 Evry" TxtPars$(5) = "Belfort" TxtPars$(6) = date$ txtpars$(7) = time$ commun() end_sub
sub Script_2() PDF$ = "Formulaire_1.pdf" TxtPars$(0) = "attestation-de-deplacement-derogatoire.jpg" TxtPars$(1) = item_index$(2) TxtPars$(2) = "17/11/1962" TxtPars$(3) = "Belfort (90)" TxtPars$(4) = "82 rue de la République, 91000 Evry" TxtPars$(5) = "Belfort" TxtPars$(6) = date$ txtpars$(7) = time$ commun() end_sub
sub commun() clear 100 TxtPars$(1) = item_index$(2) item_add 100,"Background,#0" : ' formulaire vide item_add 100,"Font,Arial,96,BI,0,1" item_add 100,"Pen,0,0,3,0" item_add 100,"Text,1300,1050,#1" : ' nom, prénom item_add 100,"Text,1300,1250,#2" : ' date de naissance item_add 100,"Text,2550,1250,#3" : ' lieu de naissance item_add 100,"Text,1300,1420,#4" : ' adresse item_add 100,"Text,1300,5160,#5" : ' lieu item_add 100,"Text,1300,5360,#6" : ' date item_add 100,"Text,2350,5360,#7" : ' heure end_sub
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 11 Nov 2020 - 22:59 | |
| Bonsoir Klaus, Je cherche des infos et des exemples sur les TrackBar ou ProgressBar que tu avais réalisé. Je n'arrive plus à mettre la main sur les articles ni sur la docde KGF ou j'ai très peu d'infos. Merci d'avance pour ton aide. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 12 Nov 2020 - 0:06 | |
| Les choses eistantes: Dans la doc (section objets), tu as l'objet CircleProgressBar. C'est ce que tu cherches ? Dans la section des fonctions diverses, tu as la fonction SetProgressBarColor.
Les choses en "to-do": Il y a bien une ligne KGFProgressBar dans la section des objets, mais je n'ai pas dû réaliser cela. Le lien pointe vers aure chose. Mais dans ma documentation interne, c'est noté comme "à faire" - donc, ce n'est pas réalisé. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Jeu 12 Nov 2020 - 0:13 | |
| Ok merci Klaus. Je regarderai demain alors. Bonne nuit... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 12 Nov 2020 - 2:18 | |
| Actuellement, je travaille sur une extension de l'impression dans un fichier PDF. J'y ajoute la possibilité de créer des tableaux du genre Excel (sans les calculs, bien sûr puisqu'il ne s'agit que d'une impression !), mais avec toutes les possiblités graphiques (couleurs, colonnes et lignes de largeur et hauteur paramétrables, cadrage dans les cellules, typ d'affichage selon le type de données et encore beaucoup plus... ça avance bien, j'en ai besoin pour un logiciel que je suis en train d"écrire pour moi, et j'en profite pour l'intégrer dans KGF.dll... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 12 Nov 2020 - 9:42 | |
| J'ai trouvé les fonctions que tu cherches, je pense. Il s'agit de l'objet KGFProgressBar qui n'est pas encore documenté, mais les fonctions existent: - Code:
-
PB% = dll_call2("CreateKGFProgressBar",handle(dest%),typ%) avec typ%: 0=Text, 1=HorizontalBar, 2=VerticalBar, 3=Pie, 4=Needle, 5=Ring
PB%= dll_call1("DeleteKGFProgressBar",PB%)
res% = dll_call6("LocateKGFProgressBar",PB%,x%,y%,w%,h%,inner%) avec inner% = rayon du trou dans le cas du type Ring
res% = dll_call3("SetKGFProgressBarLimits",PB%,mini%,maxi%)
res% = dll_call2("SetKGFProgressBarPosition",PB%,position%)
res% = dll_call3("SetKGFProgressBarColors",PB%,couleurFond%,couleurBarre%)
C'est vieux, déjà - ça m'était complètement sorti de la tête ! Mais les fonctions sont bien présentes dans KGF.dll. Voici une démo: - Code:
-
' test_2_ProgressBar_concentriques
dim res%, PBinner%, PBouter%, i%
dll_on "KGF.dll"
PBinner% = dll_call2("CreateKGFProgressBar",handle(0),5) res% = dll_call6("LocateKGFProgressBar",PBinner%,100,100,200,200,0) res% = dll_call3("SetKGFProgressBarLimits",PBinner%,0,255) res% = dll_call3("SetKGFProgressBarColors",PBinner%,hex("00FFFF"),hex("0000FF"))
PBouter% = dll_call2("CreateKGFProgressBar",handle(0),5) res% = dll_call6("LocateKGFProgressBar",PBouter%,80,80,240,240,200) res% = dll_call3("SetKGFProgressBarLimits",PBouter%,0,255) res% = dll_call3("SetKGFProgressBarColors",PBouter%,hex("FFFF00"),hex("FF0000"))
for i%=0 to 255 res% = dll_call2("SetKGFProgressBarPosition",PBinner%,i%) res% = dll_call2("SetKGFProgressBarPosition",PBouter%,256-i%) pause 20 next i% end et une autre: - Code:
-
' test_KGF_ProgressBar.bas
label creer, supprimer, animer, tick, click dim res%, PB%, w%, h%, typ%, pos%, inner%, x% progress_bar 1 : min 1,0 : max 1,255 : top 1,100 : position 1,100 progress_bar 2 : position 2,50 : top 2,140
timer 8 : on_timer 8,tick : timer_off 8 : timer_interval 8,10 combo 9 : top 9,180 : left 9,10 : width 9,90 item_add 9,"Texte seul" item_add 9,"Horizontal" item_add 9,"Vertical" item_add 9,"Camembert" item_add 9,"Aiguille" item_add 9,"Anneau" alpha 91 : top 91,180 : left 91,120 : caption 91,"Anneau: diamètre intérieur:" spin 92 : top 92,180 : left 92,250 : width 92,45 min 92,0 : max 92,199 : position 92,160 picture 93 : top 93,5 : left 93,295 : width 93,210 : height 93,210 : color 93,0,255,255 on_click 93,click button 10 : top 10,210 : left 10,10 : caption 10,"Créer" : on_click 10,creer button 11 : top 11,210 : left 11,110 : caption 11,"Supprimer" : on_click 11,supprimer button 12 : top 12,240 : left 12,10 : caption 12,"Animer" : on_click 12,animer
dll_on "KGF.dll" res% = dll_call3("SetProgressBarColor",handle(1),hex("00FFFF"),hex("0000FF")) res% = dll_call2("SelectComboBoxItem",handle(9),2) end
creer: typ% = item_index(9) - 1 x% = 300 select typ% case 0 w% = 200 h% = 25 inner% = 0 case 1 w% = 200 h% = 25 inner% = 0 case 2 w% = 25 h% = 200 inner% = 0 case 3 w% = 200 h% = 200 inner% = 0 case 4 w% = 200 h% = 100 inner% = 0 case 5 x% = 150 w% = 200 h% = 400 : ' intentionnellement en ellipse pour montrer cela ! inner% = position(92) end_select PB% = dll_call2("CreateKGFProgressBar",handle(0),typ%) res% = dll_call6("LocateKGFProgressBar",PB%,x%,10,w%,h%,inner%) res% = dll_call3("SetKGFProgressBarLimits",PB%,0,255) res% = dll_call3("SetKGFProgressBarColors",PB%,hex("00FFFF"),hex("0000FF")) res% = dll_call2("SetKGFProgressBarPosition",PB%,60) return
supprimer: timer_off 8 PB% = dll_call1("DeleteKGFProgressBar",PB%) return
animer: pos% = 0 res% = dll_call2("SetKGFProgressBarPosition",PB%,pos%) timer_on 8 return tick: timer_off 8 pos% = pos% + 1 if pos%>=256 then return res% = dll_call2("SetKGFProgressBarPosition",PB%,pos%) timer_on 8 return
click: message "Clic dans le picture 93" return
Voilà. Tu as de quoi t'amuser... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 13 Nov 2020 - 11:30 | |
| KGF.dll V9.33 du 11/01/11/2020Nouveautés: - Module PrintPDF: un jeu de fonctions complètes: PrintFormattedPDF, CreatePDFArray, GetListOfPDFArrays, SetPDFArrayRowHeight, SetPDFArrayColumnWidth, SetPDFArrayCellColor, SetPDFArrayCellType, SetPDFArrayFontSize, SetPDFArrayFontName, SetPDFArrayCellFontName, SetPDFArrayCellFontSize, SetPDFArrayCellFontColor, SetPDFArrayCellFontAttributes, SetPDFArrayCellAlignment, GetPDFArrayCellRectangle, CheckPDFArray
Modules modifiés: KGF.dllLa doc sera mise à jour prochainement. On peut mainenant: - créer une édition PDF directe - définir un "script" de définition de l'édition dans objet MEMO de Panoramic (peut être invisible). Chaque ligne de ce srcipt décrit une action et est composée d'un mot-clé suivi de paramètres séparés par des virgules - chosir l'unité de mesure: unités PDF ou millimètres - 1 millimètre vertical = 23,71 unités PDF - 1 millimètre horizontal = 23,61 unités PDF - charger une image de fond - définir 3 listes de données servant de variables, dans des objets LIST de Panoramic. Ces listes contiennent respectivement les valeurs des variables de type chaîne de caractères, valeur entières ou flottantes - utilisation des variables dans le script de création, par le signe # suivi de l'indexe de la variable dans l'objet LIST - placer du texte, des lignes, des formes géométriques prédéfinies et des images à n'importe quel endroit de l page - placer un tableau à n'importe quel endroit de la page Pour les tableaux, on peut:- définir son nom - il sera exclusivement référencé par son nom - on peut définir plusieurs tableaux coexistants simultanément - on peut placer n'importe quel tableau existant à n'importe quel endroit de la page, même plusieurs fois - définir le nombre de lignes et colonnes - chaque céllule a les attributs par défaut suivants; dimensions largeur de 500 unités PDF, hauteur 250 unités PDF fond blanc, écriture noire, police Arial taille 12 Type texte aligné à gauche - on peut changer, soit pour le tableau entier, soit pour un rectangle de cellules:la couleur de fond la hauteur et/ou largeur des cellules la police ainsi que sa taille, couleur et ses attributs graphiques alignement à gauche, à droite ou centré type texte, integer, flottant ou monétaire - on peut déposer dans n'importe quelle cellule adressée par ses coordonnées:du texte (affiché selon le type de cellule, l'alignement et la police) une image, remplissant la cellule (mode stretch) ou non. Malgré la présence d'une image dans une cellule, on peut également y déposer du texte. Ce texte se superposera à l'mage. Si lemode Stretch n'est pas choisi, on peut déposer une image à gauche et du texte à droite de l'image, un peu comme une icône et son libellé. Les tableaux sont traités en deux phases distinctes:1. création d'un tableau. Il est créé en mémoire uniquement, sous forme d'un "objet" tableau. Plusieurs tableaux peuvent aini être créés. 2. impression d'un tableau. On place un tableau dans la page en le référençant par son nom. Voici un premier programme de démo. Il permet deux démos différents: - une première démo très simple affichant un peu de texte et une image (attention: il faut adapter le cehmin du fichier !) - une seconde démo pour afficher un tableau montant les capacités de formattage des tableaux (là encore, il faut adapter le chemin de l'image !). Pour le tableau, on peut choisir le mode unités PDF ou millimètre. Le résultat sera le même, mais vlous verrez les paramètres différents dans le code. Voici le code: - Code:
-
' test_PDF.bas
label go, testunitesPDF, testunitesMM, PDFarray
dim res%, WB%, url$, PDF$, nom$, police$, attrib$, mm%, image1$, image2$ dim TxtPars$(100), IntPars%(100), FloatPars(100)
image1$ = ".\Icones 16x16\Passiflore.jpg" image2$ = "Crane.bmp" : ' petite image pour remplir 1 cellule dll_on "KGF.dll" full_space 0
button 1 : top 1,10 : left 1,330 : caption 1,"Go !" : on_click 1,go button 2 : top 2,10 : left 2,530 : width 2,140 : caption 2,"Définir avec unités PDF" : on_click 2,testunitesPDF button 3 : top 3,10 : left 3,690 : width 3,140 : caption 3,"Définir avec unités mm" : on_click 3,testunitesMM button 4 : top 4,10 : left 4,930 : caption 4,"Créer PDF" : on_click 4,PDFarray
memo 100 : top 1,10 : left 100,10 : width 100,300 : height 100,500 : bar_both 100 ' item_add 100,"Background,"+image1$ : ' Background,nom affichage d'une image de fond sur toute la page ' item_add 100,"Background,#0" : ' Background,nom affichage d'une image de fond sur toute la page item_add 100,"Font,Arial,96,BI,0,1" : ' Font,n,t,a,c,b choisir une police par son nom, la taille, les attributs et sa couleur, le style du fond item_add 100,"Pen,0,0,3,0" : ' Pen,s,m,w,c choisir une plume avec son style, mode, l'épaisseur et la couleur item_add 100,"Text,300,600,Mon texte est ici" : ' Text,x,y,txt,f afficher la valeur texte indice n #n=indice n sans #: txt=valeur string directe item_add 100,"Integer,300,900,317,Entier: %d" : ' Integer,x,y,n,f afficher la valeur entière indice n format f #n=indice n sans #: n=valeur entière directe item_add 100,"Float,300,1200,3.14159,Flottant money: %m" : ' Float,x,y,v,f afficher la valeur flottante indice n #n=indice n sans #: f=valeur flottante directe item_add 100,"Image,300,1500,1200,800,#0" : ' Image,x,y,w,h,nom afficher une image #n=indice sans #: nom=nom du fichier TxtPars$(0) = ".\Icones 16x16\Passiflore.jpg" PDF$ = "testPDF.pdf"
list 101 : top 101,40 : left 101,530 : width 101,300 : height 101,500 list 102 : top 102,40 : left 102,840 : width 102,400 : height 102,500: font_name 102,"Courier" list 103 : hide 103 end
go: res% = dll_call6("PrintFormattedPDF",handle(100),adr(TxtPars$),adr(Intpars%),adr(FloatPars),adr(PDF$),0) : ' en unités PDF message "res%="+str$(res%) execute PDF$ return testunitesPDF: mm% = 0 nom$ = "Tableau_1" res% = dll_call4("CreatePDFArray",adr(nom$),5,10,0) : ' 5 colonnes 10 lignes, unités PDF res% = dll_call6("SetPDFArrayCellColor",adr(nom$),1,5,1,10,hex("FFFF")) police$ = "Arial" attrib$ = "" res% = dll_call2("SetPDFArrayFontName",adr(nom$),adr(police$)) res% = dll_call2("SetPDFArrayFontSize",adr(nom$),12) res% = dll_call6("SetPDFArrayCellFontAttributes",adr(nom$),1,5,1,10,adr(attrib$)) res% = dll_call6("SetPDFArrayCellFontColor",adr(nom$),1,5,1,10,0) res% = dll_call6("SetPDFArrayCellFontColor",adr(nom$),1,5,3,3,hex("FFFFFF"))
res% = dll_call6("SetPDFArrayCellAlignment",adr(nom$),2,2,1,10,1) : ' alignement droite res% = dll_call6("SetPDFArrayCellAlignment",adr(nom$),3,3,1,10,2) : ' centré
res% = dll_call6("SetPDFArrayCellType",adr(nom$),2,2,1,10,1) : ' integer res% = dll_call6("SetPDFArrayCellType",adr(nom$),3,3,1,10,2) : ' float res% = dll_call6("SetPDFArrayCellType",adr(nom$),4,4,1,10,3) : ' money
res% = dll_call6("SetPDFArrayCellFontSize",adr(nom$),1,5,2,3,48) : ' taille de la police
res% = dll_call1("GetListOfPDFArrays",handle(101)) if res%<0 then message "Aucun tableau n'est défini" ' if res%=0 then message "Il y a des tableaux."
' res% = dll_call2("CheckPDFArray",adr(nom$),handle(102)) ' return
res% = dll_call4("SetPDFArrayRowHeight",adr(nom$),3,5,474) : ' lignes 3 à 5 hauteur 20 mm res% = dll_call4("SetPDFArrayColumnWidth",adr(nom$),2,3,1180) : ' colonnes 2 à 3 largeur 50 mm res% = dll_call6("SetPDFArrayCellColor",adr(nom$),1,5,3,5,hex("FF")) : ' lignes 3 à 5 colonnes 1 à 5 rouge res% = dll_call6("SetPDFArrayCellColor",adr(nom$),2,3,1,10,hex("FF0000")) : ' lignes 1 à 10 colonnes 2 à 3 bleu res% = dll_call6("SetPDFArrayCellColor",adr(nom$),3,3,4,4,hex("FF00")) : ' cellule (3,4) vert ' res% = dll_call4("GetToPDFArrayCellRectangle",adr(nom$),3,4,handle(103)) : ' récupérer cooordonnées cellule (3,4) ' message "Cellule (3,4) position relative: ("+item_read$(103,1)+","+item_read$(103,2)+") - ("+item_read$(103,3)+","+item_read$(103,4)+")"
message "Création terminée"
res% = dll_call2("CheckPDFArray",adr(nom$),handle(102))
return testunitesMM: mm% = 1 nom$ = "Tableau_1" res% = dll_call4("CreatePDFArray",adr(nom$),5,10,1) : ' 5 colonnes 10 lignes, unités MM res% = dll_call6("SetPDFArrayCellColor",adr(nom$),1,5,1,10,hex("FFFF")) police$ = "Arial" attrib$ = "" res% = dll_call2("SetPDFArrayFontName",adr(nom$),adr(police$)) res% = dll_call2("SetPDFArrayFontSize",adr(nom$),12) res% = dll_call6("SetPDFArrayCellFontAttributes",adr(nom$),1,5,1,10,adr(attrib$)) res% = dll_call6("SetPDFArrayCellFontColor",adr(nom$),1,5,1,10,0) res% = dll_call6("SetPDFArrayCellFontColor",adr(nom$),1,5,3,3,hex("FFFFFF"))
res% = dll_call6("SetPDFArrayCellAlignment",adr(nom$),2,2,1,10,1) : ' alignement droite res% = dll_call6("SetPDFArrayCellAlignment",adr(nom$),3,3,1,10,2) : ' centré
res% = dll_call6("SetPDFArrayCellType",adr(nom$),2,2,1,10,1) : ' integer res% = dll_call6("SetPDFArrayCellType",adr(nom$),3,3,1,10,2) : ' float res% = dll_call6("SetPDFArrayCellType",adr(nom$),4,4,1,103) : ' money
res% = dll_call6("SetPDFArrayCellFontSize",adr(nom$),1,5,2,3,48) : ' taille de la police
res% = dll_call1("GetListOfPDFArrays",handle(101)) if res%<0 then message "Aucun tableau n'est défini" ' if res%=0 then message "Il y a des tableaux."
' res% = dll_call2("CheckPDFArray",adr(nom$),handle(102)) ' return
res% = dll_call4("SetPDFArrayRowHeight",adr(nom$),3,5,20) : ' lignes 3 à 5 hauteur 20 mm res% = dll_call4("SetPDFArrayColumnWidth",adr(nom$),2,3,50) : ' colonnes 2 à 3 largeur 50 mm res% = dll_call6("SetPDFArrayCellColor",adr(nom$),1,5,3,5,hex("FF")) : ' lignes 3 à 5 colonnes 1 à 5 rouge res% = dll_call6("SetPDFArrayCellColor",adr(nom$),2,3,1,10,hex("FF0000")) : ' lignes 1 à 10 colonnes 2 à 3 bleu res% = dll_call6("SetPDFArrayCellColor",adr(nom$),3,3,4,4,hex("FF00")) : ' cellule (3,4) vert ' res% = dll_call4("GetToPDFArrayCellRectangle",adr(nom$),3,4,handle(103)) : ' récupérer cooordonnées cellule (3,4) ' message "Cellule (3,4) position relative: ("+item_read$(103,1)+","+item_read$(103,2)+") - ("+item_read$(103,3)+","+item_read$(103,4)+")"
message "Création terminée"
res% = dll_call2("CheckPDFArray",adr(nom$),handle(102))
return
PDFarray: if item_index(101)<1 message "Aucun tableau n'est sélectionné" return end_if nom$ = item_index$(101) ' préparer les paramètres du tableau clear 100 TxtPars$(0) = nom$ txtPars$(1) = str$(int((pi*1000))/1000) txtPars$(2) = str$(int((pi*2000))/1000) txtPars$(3) = str$(int((pi*3000))/1000) txtPars$(4) = str$(int((pi*4000))/1000) txtPars$(5) = str$(int((pi*5000))/1000) txtPars$(6) = image2$ item_add 100,"Font,Arial,96,BI,0,1" : ' Font,n,t,a,c,b choisir une police par son nom, la taille, les attributs et sa couleur, le style du fond item_add 100,"Pen,0,0,3,0" : ' Pen,s,m,w,c choisir une plume avec son style, mode, l'épaisseur et la couleur if mm%=0 item_add 100,"Array,300,500,#0" : ' Array,x,y,nom imprimer un tableau par son nom else item_add 100,"Array,13,21,#0" : ' Array,x,y,nom imprimer un tableau par son nom end_if
item_add 100,"ArrayText,#0,1,2,#1" : ' ArrayText,nom,c,r,txt afficher la valeur texte dans le tableau nom dans la cellule (c,r) nom et txt: #n=indice string sans #: nom tableau ou texte à affichier item_add 100,"ArrayText,#0,2,2,#2" : ' ArrayText,nom,c,r,txt afficher la valeur texte dans le tableau nom dans la cellule (c,r) nom et txt: #n=indice string sans #: nom tableau ou texte à affichier item_add 100,"ArrayText,#0,3,2,#3" : ' ArrayText,nom,c,r,txt afficher la valeur texte dans le tableau nom dans la cellule (c,r) nom et txt: #n=indice string sans #: nom tableau ou texte à affichier item_add 100,"ArrayText,#0,4,2,#4" : ' ArrayText,nom,c,r,txt afficher la valeur texte dans le tableau nom dans la cellule (c,r) nom et txt: #n=indice string sans #: nom tableau ou texte à affichier item_add 100,"ArrayText,#0,5,2,#5" : ' ArrayText,nom,c,r,txt afficher la valeur texte dans le tableau nom dans la cellule (c,r) nom et txt: #n=indice string sans #: nom tableau ou texte à affichier
item_add 100,"ArrayText,#0,1,3,#1" : ' ArrayText,nom,c,r,txt afficher la valeur texte dans le tableau nom dans la cellule (c,r) nom et txt: #n=indice string sans #: nom tableau ou texte à affichier item_add 100,"ArrayText,#0,2,3,#2" : ' ArrayText,nom,c,r,txt afficher la valeur texte dans le tableau nom dans la cellule (c,r) nom et txt: #n=indice string sans #: nom tableau ou texte à affichier item_add 100,"ArrayText,#0,3,3,#3" : ' ArrayText,nom,c,r,txt afficher la valeur texte dans le tableau nom dans la cellule (c,r) nom et txt: #n=indice string sans #: nom tableau ou texte à affichier item_add 100,"ArrayText,#0,4,3,#4" : ' ArrayText,nom,c,r,txt afficher la valeur texte dans le tableau nom dans la cellule (c,r) nom et txt: #n=indice string sans #: nom tableau ou texte à affichier item_add 100,"ArrayText,#0,5,3,#5" : ' ArrayText,nom,c,r,txt afficher la valeur texte dans le tableau nom dans la cellule (c,r) nom et txt: #n=indice string sans #: nom tableau ou texte à affichier
item_add 100,"ArrayImage,#0,1,4,1,#6" : ' ArrayImage,nom,x,y,s,img afficher une image dans le tableau nom dans cellule (c,r) nom et img: #n=indice sans #: nom=nom du fichier s=stretch ' impression du tableau res% = dll_call6("PrintFormattedPDF",handle(100),adr(TxtPars$),adr(Intpars%),adr(FloatPars),adr(PDF$),mm%) message "res%="+str$(res%)+" ms utilisées"
' res% = dll_call4("GetPDFArrayCellRectangle",adr(nom$),3,4,handle(103)) : ' récupérer cooordonnées cellule (3,4) ' message "Cellule (3,4) position absolue: ("+item_read$(103,1)+","+item_read$(103,2)+") - ("+item_read$(103,3)+","+item_read$(103,4)+")" execute PDF$ : ' visualisation du tableau imprimé return
Et voici le résultat:
Dernière édition par Klaus le Ven 13 Nov 2020 - 12:45, édité 2 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 13 Nov 2020 - 11:56 | |
| @Minibug: as-tu vu que j'ai pulié plus haut la liste des fonctions de KGFProgressBar ? Ces fonctions existent bien, mais il fait que je fasse la doc, tout comme celle du module PrintPDF... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 13 Nov 2020 - 17:38 | |
| KGF.dll vient d'être renouvellée sur mon site. Raisons: - correction d'un bug dans le module PrintPDF (concernant la commande Brush) - amélioration de la vitesse d'exécution de 20 à 30 % au niveau de la fonction PrintFormattedPDF. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Ven 13 Nov 2020 - 19:37 | |
| Bonsoir Klaus ! Oui désolé je ne t'ai pas répondu. Je me souvenais que tu avais fais quelque chose avec des barres ou des potentiomètres... En fait je cherché autre chose mais j'ai fini par trouver mon bonheur. Merci pour m'avoir rafraîchi la mémoire. Cela dis ces barres seront surement utiles à un moment donné. Surtout si j'envisage l'installateur 'maison' avec les fonctions dont on parlait il y a quelques jours. Il me vient une idée : faire un programme d'installation en Panoramic ! - On a déjà de quoi déterminer les chemins (système, temp, programme...). - On a le gestionnaire de fichiers que tu as montré il y a quelques jours. - On a aussi les ProgressBars. Donc tout est là pour réaliser un programme d'installation ! Bon pour le moment je suis trop pris par GPP mais un jour peut-être... A moins que d'ici là quelqu'un d'autre s'y colle.... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 14 Nov 2020 - 19:36 | |
| Voici d'ailleurs le programme de démo pour KGFProgressBar que j'avais publié à l'époque. Mode d'emploi: sélectionner ke type de barre dans la combo, puis cliquer sur "Créer". Admirer... . Cliquer sur "Supprimer". Sélectionner un autre type etc... - Code:
-
' test_KGF_ProgressBar.bas
label creer, supprimer, animer, tick, click dim res%, PB%, w%, h%, typ%, pos%, inner%, x% progress_bar 1 : min 1,0 : max 1,255 : top 1,100 : position 1,100 progress_bar 2 : position 2,50 : top 2,140
timer 8 : on_timer 8,tick : timer_off 8 : timer_interval 8,10 combo 9 : top 9,180 : left 9,10 : width 9,90 item_add 9,"Texte seul" item_add 9,"Horizontal" item_add 9,"Vertical" item_add 9,"Camembert" item_add 9,"Aiguille" item_add 9,"Anneau" alpha 91 : top 91,180 : left 91,120 : caption 91,"Anneau: diamètre intérieur:" spin 92 : top 92,180 : left 92,250 : width 92,45 min 92,0 : max 92,199 : position 92,160 picture 93 : top 93,5 : left 93,295 : width 93,210 : height 93,210 : color 93,0,255,255 on_click 93,click button 10 : top 10,210 : left 10,10 : caption 10,"Créer" : on_click 10,creer button 11 : top 11,210 : left 11,110 : caption 11,"Supprimer" : on_click 11,supprimer button 12 : top 12,240 : left 12,10 : caption 12,"Animer" : on_click 12,animer
dll_on "KGF.dll" res% = dll_call3("SetProgressBarColor",handle(1),hex("00FFFF"),hex("0000FF")) res% = dll_call2("SelectComboBoxItem",handle(9),2) end
creer: typ% = item_index(9) - 1 x% = 300 select typ% case 0 w% = 200 h% = 25 inner% = 0 case 1 w% = 200 h% = 25 inner% = 0 case 2 w% = 25 h% = 200 inner% = 0 case 3 w% = 200 h% = 200 inner% = 0 case 4 w% = 200 h% = 100 inner% = 0 case 5 x% = 150 w% = 200 h% = 400 : ' intentionnellement en ellipse pour montrer cela ! inner% = position(92) end_select PB% = dll_call2("CreateKGFProgressBar",handle(0),typ%) res% = dll_call6("LocateKGFProgressBar",PB%,x%,10,w%,h%,inner%) res% = dll_call3("SetKGFProgressBarLimits",PB%,0,255) res% = dll_call3("SetKGFProgressBarColors",PB%,hex("00FFFF"),hex("0000FF")) res% = dll_call2("SetKGFProgressBarPosition",PB%,60) return
supprimer: timer_off 8 PB% = dll_call1("DeleteKGFProgressBar",PB%) return
animer: pos% = 0 res% = dll_call2("SetKGFProgressBarPosition",PB%,pos%) timer_on 8 return tick: timer_off 8 pos% = pos% + 1 if pos%>=256 then return res% = dll_call2("SetKGFProgressBarPosition",PB%,pos%) timer_on 8 return
click: message "Clic dans le picture 93" return
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 14 Nov 2020 - 21:19 | |
| Bonsoir Klaus ! Oui tu l'avais déjà publié jeudi et j'avais d'ailleurs regarder et testé les 3 sources... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 17 Nov 2020 - 2:07 | |
| KGF.dll V9.34 du 17/01/11/2020Nouveautés: - nouvelle fonction: BackupPanoramicEditorModules modifiés: KGF.dllLa doc sera mise à jour prochainement. Cette fonction effectue une sauvegarde du contenu de l'ensemble des onglets de PANORAMIC EDITOR. On lui fournit un nom de dossier. S'il n'exisye pas, il sera créé. La fonction copie ensuite le contenu de chaque onglet dans un fichier de ce dossier, avec le nom de fichier apparaissant dans le titre de l'onglet. Voici une démo très simple: - Code:
-
' BackupPanoramicEditor.bas
dim res%, dossier$
dll_on "KGF.dll"
dossier$ = ".\PanoramicEditorBackup" res% = dll_call1("BackupPanoramicEditor",adr(dossier$)) message "Sauvegarde effectuée"
end
Je vous laisse le soin de déclarer un timer avec une intervalle de votre choix (5 secondes, par exemple), et de placer ce code dans ma routine ON_TIMER... Lancez ce programme, réduisez-le et oubliez-le. Vous b'aurez plus jamais de sources perdues suite à un arrêt intempestif de l'editeur... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 17 Nov 2020 - 16:40 | |
| La doc est à jour !
Cela concerne les modules et fonctions suivantes:
objet KGFProgressBar (section Objets): CreateKGFProgressBar, DeleteKGFProgressBar, LocateKGFProgressBar, SetKGFProgressBarLimits, SetKGFProgressBarPosition, SetKGFProgressBarColors
objet PrintPDF (section Objets): PrintFormattedPDF, CreatePDFArray, GetListOfPDFArrays, SetPDFArrayRowHeight, SetPDFArrayColumnWidth, SetPDFArrayCellColor, SetPDFArrayCellType, SetPDFArrayFontSize, SetPDFArrayFontName, SetPDFArrayCellFontName, SetPDFArrayCellFontSize, SetPDFArrayCellFontColor, SetPDFArrayCellFontAttributes, SetPDFArrayCellAlignment, GetPDFArrayCellRectangle, CheckPDFArray
Nouvelle fonction (section fonctions diverses): BackupPanoramicEditor
La documentation de toutes ces 23 fonctions a été rédigée (en 2 langues !) et mise en ligne sous forme de fichier KGF.chm ainsi que sous forme de documentation en ligne. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 20 Nov 2020 - 1:30 | |
| KGF.dll V9.35 du 20/01/11/2020Nouveautés: - nouvelle fonction: PrintKGFGridModules modifiés: KGF.dll KGF.chmLa doc est à jour. Cette petite fonction permet d'imprimer la partie visible d'un KGFGrid, soit dans le presse-papier, soit dans un fichier PDF. La doc de cette fonction est dans la section Objets\KGFGrid\Fonctions affectant le GKFGrid en entier. En voici la démo: - Code:
-
' test_KGFGrid.bas
label UserEvent, PrintClipboard, PrintPDF dim res%, KG%, f1$, Types$(6), v$, f, img$, pdf$ Types$(0) = "Inconnu (traité comme Integer)" Types$(1) = "Chaîne" Types$(2) = "Entier" Types$(3) = "Flottant" Types$(4) = "Booléen" Types$(5) = "Image" Types$(6) = "Mémo" picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1 memo 2 : top 2,10 : left 2,10 : width 2,400 : bar_both 2 button 3 : top 3,10 : left 3,430 : width 3,150 : caption 3,"Print -> Clipboard" : on_click 3,PrintClipboard button 4 : top 4,40 : left 4,430 : width 4,150 : caption 4,"Print -> PDF" : on_click 4,PrintPDF dll_on "KGF.dll"
KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1) : ' ok res% = dll_call2("SetGlobalKGFGridColors",KG%,hex("FFFF")) : ' ok res% = dll_call5("LocateKGFGrid",KG%,10,100,400,300) : ' ok res% = dll_call5("SetGlobalKGFGridDimensions",KG%,15,20,50,25) : ' ok res% = dll_call4("SetKGFGridRowRangeHeight",KG%,2,4,45) : ' ok res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,7,10,20) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,2,4,2,5,2) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,5,7,2,5,1) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,8,9,2,5,3) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,9,9,6,6,3) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,5,8,6,6,4) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,2,4,6,6,5) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,3,3,1,1,6) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,4,2,5,5) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,4,2,5,hex("FF8080")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,2,2,4,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,3,3,2,2,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,3,3,4,4,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,4,4,2,4,hex("8080FF")) : ' ok
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,2,2,1) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,3,3,2,2,2) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,2,2,3) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,3,3,4) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,3,3,6) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,4,4,7) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,3,3,4,4,8) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,4,4,9) : ' ok f1$ = "%d €" res% = dll_call6("SetKGFGridCellRangeFormat",KG%,2,4,2,5,adr(f1$)) : ' ok
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,4,17) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,2,4,0-23) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,2,4,123) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,4,5,5,0-12) : ' ok v$ = "Salut" res% = dll_call6("SetKGFGridCellRangeValue",KG%,5,5,2,4,adr(v$)) : ' ok v$ = "les" res% = dll_call6("SetKGFGridCellRangeValue",KG%,6,6,2,4,adr(v$)) : ' ok v$ = "copains" res% = dll_call6("SetKGFGridCellRangeValue",KG%,7,7,2,4,adr(v$)) : ' ok f = pi res% = dll_call6("SetKGFGridCellRangeValue",KG%,8,8,2,4,adr(f)) : ' ok
img$ = "Android.bmp" res% = dll_call1("LoadAnyImageFile",adr(img$)) res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,6,6,0) : ' ok img$ = "marche_1_1_1_2.jpg" res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,6,6,adr(img$)) : ' ok img$ = "crane.bmp" res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,6,6,adr(img$)) : ' ok
font_names_load 2 res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,1,1,handle(2)) : ' ok clear 2
res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,5,5,2,4,1) : ' ok res% = dll_call6("SetKGFGridCellRangeFontItalic",KG%,5,5,2,4,1) : ' ok
v$ = "Arial Black" res% = dll_call6("SetKGFGridCellRangeFontName",KG%,6,6,2,4,adr(v$)) : ' ok res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,6,6,2,4,12) : ' ok
res% = dll_call6("SetKGFGridCellRangeFontColor",KG%,7,7,2,4,hex("FF0000")) : ' ok
v$ = "Prix" res% = dll_call4("SetKGFGridCellName",KG%,9,2,adr(v$)) : ' ok v$ = "Total" res% = dll_call4("SetKGFGridCellName",KG%,9,3,adr(v$)) : ' ok v$ = "Resultat" res% = dll_call4("SetKGFGridCellName",KG%,9,4,adr(v$)) : ' ok v$ = "Premier" res% = dll_call4("SetKGFGridCellName",KG%,2,2,adr(v$)) : ' ok v$ = "Dernier" res% = dll_call4("SetKGFGridCellName",KG%,4,4,adr(v$)) : ' ok v$ = "Suite" res% = dll_call4("SetKGFGridCellName",KG%,9,5,adr(v$)) : ' ok
f1$ = "V10^CPrix^*;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,3,3,adr(f1$)) : ' ok f1$ = "V2^V2^V2^V4^RS;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,4,4,adr(f1$)) : ' ok f1$ = "cPremier|cDernier|RS;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,5,5,adr(f1$)) : ' ok f1$ = "CTotal^V2^*;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,6,6,adr(f1$)) : ' ok
f = 23.45 res% = dll_call6("SetKGFGridCellRangeValue",KG%,9,9,2,2,adr(f)) : ' ok
message "Les lignes 2 et 3 vont disparaître..." res% = dll_call4("SetKGFGridRowRangeVisible",KG%,2,3,0) : ' ok message "Les lignes 2 et 3 on disparu, et vont réapparaître..." res% = dll_call4("SetKGFGridRowRangeVisible",KG%,2,3,1) : ' ok
message "Les colonnes 4 et 5 vont disparaître..." res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,4,5,0) : ' ok message "Les colonnes 4 et 5 on disparu, et vont réapparaître..." res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,4,5,1) : ' ok
f1$ = "KGFGrid_backup.txt" res% = dll_call2("SaveKGFGridToFile",KG%,adr(f1$)) : ' ok if res%<0 message "Erreur en sauvegarde du KGFGrid" else message "Le KGFGrid est sauvegardé dans "+f1$ end_if
on_user_event UserEvent
message "On va supprimer le KGFGrid..." KG% = dll_call1("DeleteKGFGrid",KG%) message "Supprimé "+str$(KG%) KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1) : ' ok f1$ = "KGFGrid_backup.txt" res% = dll_call2("LoadKGFGridFromFile",KG%,adr(f1$)) message "Recréé à partir de la sauvegarde"
end
UserEvent: UserEvent() return PrintClipboard: PrintClipBoard() return PrintPDF: PrintPDF() return sub UserEvent() dim_local lig%, col%, id%, type%, res$, f if bin_and(user_event_wparam,hex("FF000000"))<>hex("0C000000") then exit_sub if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then exit_sub id% = bin_and(user_event_wparam,hex("0000FFFF")) col% = user_event_lparam/65536 lig% = bin_and(user_event_lparam,hex("0000FFFF")) delete 1 picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1 clear 2 type% = dll_call3("GetKGFGridCellType",KG%,lig%,col%) : ' ok select type% case 0: ' Inconnu res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 1: ' Chaîne res$ = string$(255," ") res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(res$)) : ' ok res$ = trim$(res$) case 2: ' Entier res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 3: ' flottant res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(f)) : ' ok res$ = str$(f) case 4: ' Booleen res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 5: ' Image res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok clipboard_paste 1 case 6: ' Mémo res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,handle(2)) : ' ok end_select message "clic dans KGFGrid ID="+str$(id%)+" en ligne "+str$(lig%)+" colonne "+str$(col%)+chr$(13)+chr$(10)+"Type="+Types$(type%)+" valeur="+res$ if type%=4 res% = dll_call6("SetKGFGridCellRangeValue",KG%,lig%,lig%,col%,col%,1-res%) : ' ok end_if end_sub
sub PrintClipBoard() pdf$ = "" res% = dll_call3("PrintKGFGrid",KG%,0,adr(pdf$)) message "La grille est copiée dans le presse-papier" end_sub
sub PrintPDF() pdf$ = "test_LGFGrid.pdf" res% = dll_call3("PrintKGFGrid",KG%,1,adr(pdf$)) message "La grille est copiée dans "+pdf$ end_sub
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 20 Nov 2020 - 15:41 | |
| KGF.dll V9.35 du 20/01/11/2020 Nouveautés: - nouvelle fonction: PrintPartialKGFGridModules modifiés: KGF.dll KGF.chmCette fontiion permet d'imprimer un rectangle de cellules, soit dans un fichier PDF, soit dans le presse-papier. Ces cellules n'ont pas besoin d'être visibles à 'écran pour cette opération. Mar contre, les cllules d'une ligne ou d'une colonne ne seront pas imprimées. Voici a démo étendue: - Code:
-
' test_KGFGrid.bas
label UserEvent, PrintClipboard, PrintPDF, PrintPartialClipboard, PrintPartialPDF dim res%, KG%, f1$, Types$(6), v$, f, img$, pdf$ Types$(0) = "Inconnu (traité comme Integer)" Types$(1) = "Chaîne" Types$(2) = "Entier" Types$(3) = "Flottant" Types$(4) = "Booléen" Types$(5) = "Image" Types$(6) = "Mémo" picture 1 : top 1,200 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1 memo 2 : top 2,10 : left 2,10 : width 2,400 : bar_both 2 button 3 : top 3,10 : left 3,430 : width 3,150 : caption 3,"Print -> Clipboard" : on_click 3,PrintClipboard button 4 : top 4,40 : left 4,430 : width 4,150 : caption 4,"Print -> PDF" : on_click 4,PrintPDF button 5 : top 5,70 : left 5,430 : width 5,150 : caption 5,"Print partiel-> Clipboard" : on_click 5,PrintPartialClipboard button 6 : top 6,100 : left 6,430 : width 6,150 : caption 6,"Print partiel-> PDF" : on_click 6,PrintPartialPDF dll_on "KGF.dll"
KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1) : ' ok res% = dll_call2("SetGlobalKGFGridColors",KG%,hex("FFFF")) : ' ok res% = dll_call5("LocateKGFGrid",KG%,10,100,400,300) : ' ok res% = dll_call5("SetGlobalKGFGridDimensions",KG%,15,20,50,25) : ' ok res% = dll_call4("SetKGFGridRowRangeHeight",KG%,2,4,45) : ' ok res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,7,10,20) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,2,4,2,5,2) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,5,7,2,5,1) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,8,9,2,5,3) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,9,9,6,6,3) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,5,8,6,6,4) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,2,4,6,6,5) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,3,3,1,1,6) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,4,2,5,5) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,4,2,5,hex("FF8080")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,2,2,4,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,3,3,2,2,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,3,3,4,4,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,4,4,2,4,hex("8080FF")) : ' ok
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,2,2,1) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,3,3,2,2,2) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,2,2,3) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,3,3,4) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,3,3,6) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,4,4,7) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,3,3,4,4,8) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,4,4,9) : ' ok f1$ = "%d €" res% = dll_call6("SetKGFGridCellRangeFormat",KG%,2,4,2,5,adr(f1$)) : ' ok
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,4,17) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,2,4,0-23) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,2,4,123) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,4,5,5,0-12) : ' ok v$ = "Salut" res% = dll_call6("SetKGFGridCellRangeValue",KG%,5,5,2,4,adr(v$)) : ' ok v$ = "les" res% = dll_call6("SetKGFGridCellRangeValue",KG%,6,6,2,4,adr(v$)) : ' ok v$ = "copains" res% = dll_call6("SetKGFGridCellRangeValue",KG%,7,7,2,4,adr(v$)) : ' ok f = pi res% = dll_call6("SetKGFGridCellRangeValue",KG%,8,8,2,4,adr(f)) : ' ok
img$ = "Android.bmp" res% = dll_call1("LoadAnyImageFile",adr(img$)) res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,6,6,0) : ' ok img$ = "marche_1_1_1_2.jpg" res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,6,6,adr(img$)) : ' ok img$ = "crane.bmp" res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,6,6,adr(img$)) : ' ok
font_names_load 2 res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,1,1,handle(2)) : ' ok clear 2
res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,5,5,2,4,1) : ' ok res% = dll_call6("SetKGFGridCellRangeFontItalic",KG%,5,5,2,4,1) : ' ok
v$ = "Arial Black" res% = dll_call6("SetKGFGridCellRangeFontName",KG%,6,6,2,4,adr(v$)) : ' ok res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,6,6,2,4,12) : ' ok
res% = dll_call6("SetKGFGridCellRangeFontColor",KG%,7,7,2,4,hex("FF0000")) : ' ok
v$ = "Prix" res% = dll_call4("SetKGFGridCellName",KG%,9,2,adr(v$)) : ' ok v$ = "Total" res% = dll_call4("SetKGFGridCellName",KG%,9,3,adr(v$)) : ' ok v$ = "Resultat" res% = dll_call4("SetKGFGridCellName",KG%,9,4,adr(v$)) : ' ok v$ = "Premier" res% = dll_call4("SetKGFGridCellName",KG%,2,2,adr(v$)) : ' ok v$ = "Dernier" res% = dll_call4("SetKGFGridCellName",KG%,4,4,adr(v$)) : ' ok v$ = "Suite" res% = dll_call4("SetKGFGridCellName",KG%,9,5,adr(v$)) : ' ok
f1$ = "V10^CPrix^*;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,3,3,adr(f1$)) : ' ok f1$ = "V2^V2^V2^V4^RS;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,4,4,adr(f1$)) : ' ok f1$ = "cPremier|cDernier|RS;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,5,5,adr(f1$)) : ' ok f1$ = "CTotal^V2^*;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,6,6,adr(f1$)) : ' ok
f = 23.45 res% = dll_call6("SetKGFGridCellRangeValue",KG%,9,9,2,2,adr(f)) : ' ok
message "Les lignes 2 et 3 vont disparaître..." res% = dll_call4("SetKGFGridRowRangeVisible",KG%,2,3,0) : ' ok message "Les lignes 2 et 3 on disparu, et vont réapparaître..." res% = dll_call4("SetKGFGridRowRangeVisible",KG%,2,3,1) : ' ok
message "Les colonnes 4 et 5 vont disparaître..." res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,4,5,0) : ' ok message "Les colonnes 4 et 5 on disparu, et vont réapparaître..." res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,4,5,1) : ' ok
f1$ = "KGFGrid_backup.txt" res% = dll_call2("SaveKGFGridToFile",KG%,adr(f1$)) : ' ok if res%<0 message "Erreur en sauvegarde du KGFGrid" else message "Le KGFGrid est sauvegardé dans "+f1$ end_if
message "On va supprimer le KGFGrid..." KG% = dll_call1("DeleteKGFGrid",KG%) message "Supprimé "+str$(KG%) KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1) : ' ok f1$ = "KGFGrid_backup.txt" res% = dll_call2("LoadKGFGridFromFile",KG%,adr(f1$)) message "Recréé à partir de la sauvegarde"
on_user_event UserEvent
end
UserEvent: UserEvent() return PrintClipboard: PrintClipBoard() return PrintPDF: PrintPDF() return PrintPartialClipboard: PrintPartialClipBoard() return PrintPartialPDF: PrintPartialPDF() return sub UserEvent() dim_local lig%, col%, id%, type%, res$, f if bin_and(user_event_wparam,hex("FF000000"))<>hex("0C000000") then exit_sub if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then exit_sub id% = bin_and(user_event_wparam,hex("0000FFFF")) col% = user_event_lparam/65536 lig% = bin_and(user_event_lparam,hex("0000FFFF")) delete 1 picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1 clear 2 type% = dll_call3("GetKGFGridCellType",KG%,lig%,col%) : ' ok select type% case 0: ' Inconnu res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 1: ' Chaîne res$ = string$(255," ") res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(res$)) : ' ok res$ = trim$(res$) case 2: ' Entier res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 3: ' flottant res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(f)) : ' ok res$ = str$(f) case 4: ' Booleen res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 5: ' Image res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok clipboard_paste 1 case 6: ' Mémo res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,handle(2)) : ' ok end_select message "clic dans KGFGrid ID="+str$(id%)+" en ligne "+str$(lig%)+" colonne "+str$(col%)+chr$(13)+chr$(10)+"Type="+Types$(type%)+" valeur="+res$ if type%=4 res% = dll_call6("SetKGFGridCellRangeValue",KG%,lig%,lig%,col%,col%,1-res%) : ' ok end_if end_sub
sub PrintClipBoard() pdf$ = "" res% = dll_call3("PrintKGFGrid",KG%,0,adr(pdf$)) message "La grille est copiée dans le presse-papier" end_sub
sub PrintPDF() pdf$ = "test_LGFGrid.pdf" res% = dll_call3("PrintKGFGrid",KG%,1,adr(pdf$)) message "La grille est copiée dans "+pdf$ end_sub
sub PrintPartialClipBoard() res% = dll_call6("PrintPartialKGFGrid",KG%,0,3,7,2,4) message "La grille est copiée dans le presse-papier" end_sub
sub PrintPartialPDF() pdf$ = "test_LGFGrid.pdf" res% = dll_call6("PrintPartialKGFGrid",KG%,adr(pdf$),3,7,2,4) message "La grille est copiée dans "+pdf$ end_sub
Ce programme affiche ceci (à condition d'adapter les chemins des images !): et l'impression en PDF du rectangle de cellules de colonne 3 à 7 et lignes 2 à 4 donne ceci: Ceci est réalisé par les lignes - Code:
-
pdf$ = "test_LGFGrid.pdf" res% = dll_call6("PrintPartialKGFGrid",KG%,adr(pdf$),3,7,2,4) Facile, non ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2020 - 1:36 | |
| KGF.dll V9.37 du 2/01/11/2020Nouveautés: - nouvelle fonction: ImageStackActionModules modifiés: KGF.dll KGF.chmLa nouvelle fonction est documentée dans la section "Gestion des images". Cette fonction gère une "pile" d'images en mémoire. On peut ainsi facilement réaliser des opérations du genre "undo" pour révénir à un état antérieur dans un logiciel de dessin graphique ou de retouche photo. Mais on peut aussi s'en servir comme mémoire temporaire d'une collection d'images, sachant qu'on peut également récupére n'importe lauelle parmi ces images sans modifier la pile pour autant. En voici une démo. Elle travaille avec 3 images quelconques. Comme d'habitude, il faudra placer vos propres chemins et noms de fichiers à la place des miens): - Code:
-
' test_Panoramic_Image.bas
label suivant, effacer, precedent
dim res%, index%, f$
height 0,600 button 1 : top 1,10 : left 1,10 : width 1,130 : caption 1,"Image suivante" : on_click 1,suivant button 2 : top 2,10 : left 2,left(1)+width(1)+10 : caption 2,"Effacer" : on_click 2,effacer button 3 : top 3,10 : left 3,left(2)+width(2)+10 : width 3,130 : caption 3,"Image précédente" : on_click 3,precedent
image 13 picture 14 : top 14,40 : width 14,400 : height 14,400 : stretch_on 14 alpha 15 : top 15,460 : left 15,10 index% = 0 dll_on "KGF.dll" end
suivant: if index%=3 then return index% = index% + 1 select index% case 1: f$ = "crane.bmp" case 2: f$ = "Android.bmp" case 3: f$ = "Save.bmp" end_select file_load 13,f$ file_load 14,f$ res% = dll_call2("ImageStackAction",1,object_internal(13)) caption 15,"Image "+str$(res%) message str$(res%)+" images dans la pile" return effacer: color 14,255,255,255 caption 15," " return
precedent: if index%=0 then return index% = index% - 1 res% = dll_call2("ImageStackAction",2,object_internal(13)) clipboard_paste 14 caption 15,"Image "+str$(res%+1) message str$(res%)+" images dans la pile" return
end
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2020 - 23:46 | |
| KGF.dll V9.38 du 22/01/11/2020Nouveautés: - nouvelle fonction: CopyObjectByHandleModules modifiés: KGF.dll KGF.chmLa nouvelle fonction est documentée dans la section "Gestion des images". Elle copie dans le presse-papier l'image complète de l'objet spécifié par un handle passé en paramètre. Cet objet peut être un objet Panoramic (disposant d'un handle, bien sûr), une form quelconque, une fenêtre ou un objet d'une application externe, ou finalement la valeur 0 (zéro) signfiant le bureau complet, avec toutes les fenêtres visibles. Voici une démo: - Code:
-
' test-CopyObjectByHandle.bas
dim res%, hnd%
dll_on "KGF.dll"
picture 1 : full_space 1 : stretch_on 1 top 0,100 : left 0,200
' le handle 0 signifie "bureau entier" ' on peut mettre le handle de n'importe quel objet, form, autre application etc. ' copier l'image de l'écran entier res% = dll_call1("CopyObjectByHandle",0) clipboard_paste 1 display
top 0,200 : left 0,400 ' recopier l'image de l'écran entier, avec le contenu de la précédente étape res% = dll_call1("CopyObjectByHandle",0) clipboard_paste 1
end
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 30 Nov 2020 - 20:39 | |
| KGF.dll V9.39 du 30/01/11/2020Nouveautés: - nouvelle fonction: GetPrinterCount - GetPrinterNames: correction d'un bug, retour possible dans MEMO, COMBO ou LIST - nouvelles fonctions: WBPrint, WB_PrintModules modifiés: KGF.dllLa doc suivra. Pour le moment, voici une doc succinte: - Code:
-
nPrinter% = dll_call0("GetPrinterCount") res% = dll_call2("WBPrint',clip%,dest%) res% = dll_call3("WB_PRINT",WB%,clip%,dest%) avec les paramètres: clip%: 0=imprimer sur imprimante par défaut 1=imprimer sur l'imprimante no. dest% 2 = imprimer dans presse-papier Outre la correction d'un bug dans la fonction GetPrinterNames, cette fonction peut maintenant retourner la liste des imprimantes, au choix, dans un MEMO, dans un LIST ou dans un COMBO. Il suffit de passer le handle de l'objet ciblé, et la fonction fera la différence toute seule. N'oublions pas que cette fonction retourne, non pas le nomrbe d'imprimantes, mais le numéro de l'imprimante dans la liste qui est l'imprimante par défaut. Avec tout cela, j'ai ajouté des fonctions permettant d'imprimer directement le contenu d'un WebBrowser, sous forme d'une image de style capture d'écran. L'image est toujours tronqué si la page est plus grande que l'affichage physique de l'écran le permet - là, on n'y peut ruen. Par contre, même si leWebBrowser affiché est plus petit que l'écran, et même s'il est tout petit, l'image imprimée sera tout de même celle qui serait affichée si le WebBrowser occupait tout l'écran ! Voici la démo. Elle charge la page du formum Panoramic dans un tout petit WebBrowser, et un message signale que le chargement est terminé. On a alors accès à une combo contenant la liste des imprimantes installées, et l'imprimante par défaut est sélectionnée. 3 boutons permettent d'imprimer soit, directement sur l'imprimante par défaut, sur l'imprimante qu'on aura sélectionnée dans la combo, soit dans le presse-papier. Dans ce dernier cas, l'image est ensuite chargé dans un picture de la form 0. Voici le code: - Code:
-
' test-PrintImageOfWebBrowser.bas
label imprimer1, imprimer2, imprimer3 dim res%, WB%, url$, dest%, clip%, i%, n%
width 0,800 combo 3 : top 3,10 : left 3,10 : width 3,150 button 1 : top 1,10 : left 1,170 : width 1,150 : caption 1,"Imprimer par défaut" : on_click 1,imprimer1 button 4 : top 4,10 : left 4,330 : width 4,150 : caption 4,"Imprimer sélection" : on_click 4,imprimer2 button 5 : top 5,10 : left 5,490 : width 5,150 : caption 5,"Imprimer presse-papier" : on_click 5,imprimer3 picture 2 : top 2,40 : left 2,10 : width 2,400 : height 2,300 : stretch_on 2
form 300 : top 300,50 : left 300,left(0)+width(0)+20 dll_on "KGF.dll"
' res% = dll_call0("GetDefaultPrinterIndex") res% = dll_call1("GetPrinterNames",handle(3)) item_select 3,res%
WB% = dll_call1("WB_Create",handle(300)) res% = dll_call5("WB_Locate",WB%,0,0,width_client(300),height_client(300)) url$ = "https://panoramic.1fr1.net/" res% = dll_call2("WB_Url",WB%,adr(url$)) to_foreground 0 message "La page est chargée."
end
imprimer1: : ' 0=imprimante par défaut res% = dll_call3("WB_Print",WB%,0,0) if dest%=0 then clipboard_paste 2 message str$(res%) return
imprimer2: clip% = 1 : ' 1=imprimante avec indexe dest% res% = dll_call3("WB_Print",WB%,1,item_index(3)) if dest%=0 then clipboard_paste 2 message str$(res%) return
imprimer3: : ' 2 = presse-papier res% = dll_call3("WB_Print",WB%,2,0) if dest%=0 then clipboard_paste 2 message str$(res%) return
| |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Lun 30 Nov 2020 - 21:24 | |
| C’est génial ! Merci Klaus !
J’ai réalisé quelques tests, tous couronnés de succès !
J’ai effectué quelques impressions vers une imprimante classique et vers un PDF (Print to PDF). Rien à dire, c’est du grand Art !
| |
| | | Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Re: KGF_dll - nouvelles versions Lun 30 Nov 2020 - 22:12 | |
| Merci Klaus pour ton travail. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 1 Déc 2020 - 0:21 | |
| Merci, les amis ! Content que cela vous plaise.
La doc suivra au cours de la semaine, simultanément avec la doc d'un nouveau gros morceau qui est déjà présent dans la distribution de ce 20 Novembre, mais pour lequel une bonne documentation est indispensable. Mais chut... je ne dévoile rien aujourd'hui ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 2 Déc 2020 - 0:27 | |
| J'ai fait une petite correction à la fonction WB_Print: Elle imprime maintenant la page complète , même les parties non visibles, si la page est plus hauite que large (mode portrait). Exemple: la page d'accueil du forum. J'ai remanié le programme de démo pour qu'on puisse coller l'URL dans un EDIT, puis lun bouton "Charger" charge cette URL dans le WebBrowser. Par défaut, c'est la page d'accueil du forum. Voici le code remanié (mais il faut télécharger KGF.dll à nouveau !): - Code:
-
' test-PrintImageOfWebBrowser.bas
label charger, imprimer1, imprimer2, imprimer3 dim res%, WB%, url$, clip%, i%, n%
width 0,800 combo 3 : top 3,10 : left 3,10 : width 3,150 alpha 6 : top 6,15 : left 6,left(3)+width(3)+30 : caption 6,"URL:" edit 7 : top 7,10 : left 7,left(6)+40 : width 7,500 button 8 : top 8,40 : left 8,420 : width 8,150 : caption 8,"Charger URL" : on_click 8,charger button 1 : top 1,100 : left 1,420 : width 1,150 : caption 1,"Imprimer par défaut" : on_click 1,imprimer1 button 4 : top 4,130 : left 4,420 : width 4,150 : caption 4,"Imprimer sélection" : on_click 4,imprimer2 button 5 : top 5,160 : left 5,420 : width 5,150 : caption 5,"Imprimer presse-papier" : on_click 5,imprimer3 picture 2 : top 2,40 : left 2,10 : width 2,400 : height 2,300 : stretch_on 2 text 7,"https://panoramic.1fr1.net/" : ' potrait form 300 : top 300,50 : left 300,left(0)+width(0)+20 dll_on "KGF.dll"
' res% = dll_call0("GetDefaultPrinterIndex") res% = dll_call1("GetPrinterNames",handle(3)) item_select 3,res%
WB% = dll_call1("WB_Create",handle(300)) res% = dll_call5("WB_Locate",WB%,0,0,width_client(300),height_client(300)) end
charger: url$ = text$(7) res% = dll_call2("WB_Url",WB%,adr(url$)) to_foreground 0 message "La page est chargée." return
imprimer1: : ' 0=imprimante par défaut res% = dll_call3("WB_Print",WB%,0,0) message str$(res%) return
imprimer2: clip% = 1 : ' 1=imprimante avec indexe choisie res% = dll_call3("WB_Print",WB%,1,item_index(3)) message str$(res%) return
imprimer3: : ' 2 = presse-papier res% = dll_call3("WB_Print",WB%,2,0) clipboard_paste 2 message str$(res%) return
Voici le résultat (avec "Imprimer presse-papier): Je travaille sur le mode paysage... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 4 Déc 2020 - 15:10 | |
| KGF.dll V9.40 du 04/01/14/2020Nouveautés: - extension de la fonctino WB_PRINT: paramétrer les marges de la page, choix entre "tout imprimer sur une même page" ou "imprimer sans déformations sur des pages multiples"Modules modifiés: KGF.dll KGF.chmLa fonction WB_Print "mûrit". Elle est parfaitement opérationnelle sur toutes les pages en mode portrait (la quasi-totalité des pages Web). Les pages en mode paysage ne sont pas gérées pour le moment. Voici le programme de démo adapté, avec choix des marges et du mode d'impression: - Code:
-
' test-PrintImageOfWebBrowser.bas
label charger, imprimer1, imprimer2, imprimer3 dim res%, WB%, url$, clip%, i%, n%
width 0,800 combo 3 : top 3,10 : left 3,10 : width 3,150 alpha 6 : top 6,15 : left 6,left(3)+width(3)+30 : caption 6,"URL:" edit 7 : top 7,10 : left 7,left(6)+40 : width 7,500 button 8 : top 8,40 : left 8,420 : width 8,150 : caption 8,"Charger URL" : on_click 8,charger
alpha 9 : top 9,105 : left 9,420 : caption 9,"Marges:" spin 10 : top 10,100 : left 10,460 : width 10,60 : min 10,0 : max 10,1000 : position 10,100 check 11 : top 11,105 : left 11,560 : caption 11,"Mode Best-Fit" button 1 : top 1,130 : left 1,420 : width 1,150 : caption 1,"Imprimer par défaut" : on_click 1,imprimer1 button 4 : top 4,160 : left 4,420 : width 4,150 : caption 4,"Imprimer sélection" : on_click 4,imprimer2 button 5 : top 5,190 : left 5,420 : width 5,150 : caption 5,"Imprimer presse-papier" : on_click 5,imprimer3
picture 2 : top 2,40 : left 2,10 : width 2,400 : height 2,300 : stretch_on 2 text 7,"https://panoramic.1fr1.net/" : ' portrait form 300 : top 300,50 : left 300,left(0)+width(0)+20 dll_on "KGF.dll"
' res% = dll_call0("GetDefaultPrinterIndex") res% = dll_call1("GetPrinterNames",handle(3)) item_select 3,res%
WB% = dll_call1("WB_Create",handle(300)) res% = dll_call5("WB_Locate",WB%,0,0,width_client(300),height_client(300)) end
charger: url$ = text$(7) res% = dll_call2("WB_Url",WB%,adr(url$)) to_foreground 0 message "La page est chargée." return
imprimer1: : ' 0=imprimante par défaut res% = dll_call5("WB_Print",WB%,0,0,checked(11),position(10)) message str$(res%) return
imprimer2: clip% = 1 : ' 1=imprimante avec indexe choisie res% = dll_call5("WB_Print",WB%,1,item_index(3),checked(11),position(10)) message str$(res%) return
imprimer3: : ' 2 = presse-papier res% = dll_call5("WB_Print",WB%,2,0,0,0) clipboard_paste 2 message str$(res%) return
Je vous laisse découvrir le résultat... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 5 Déc 2020 - 13:59 | |
| KGF.dll V9.41 du 05/12/2020Nouveautés: - WB_Print: impression correcte d'une page en mode paysageModules modifiés: KGF.dll KGF.chmLa fonction est maintenant complète. Bien sûr, je réagirai rapidement si un bug était découvert. Voici le programme de démo adéquat: - Code:
-
' test-PrintImageOfWebBrowser.bas
label charger, imprimer1, imprimer2, imprimer3 dim res%, WB%, url$, clip%, i%, n%
width 0,800 combo 3 : top 3,10 : left 3,10 : width 3,150 alpha 6 : top 6,15 : left 6,left(3)+width(3)+30 : caption 6,"URL:" combo 7 : top 7,10 : left 7,left(6)+40 : width 7,500 button 8 : top 8,40 : left 8,420 : width 8,150 : caption 8,"Charger URL" : on_click 8,charger
alpha 9 : top 9,105 : left 9,420 : caption 9,"Marges:" spin 10 : top 10,100 : left 10,460 : width 10,60 : min 10,0 : max 10,1000 : position 10,100 check 11 : top 11,105 : left 11,560 : caption 11,"Mode Best-Fit" button 1 : top 1,130 : left 1,420 : width 1,150 : caption 1,"Imprimer par défaut" : on_click 1,imprimer1 button 4 : top 4,160 : left 4,420 : width 4,150 : caption 4,"Imprimer sélection" : on_click 4,imprimer2 button 5 : top 5,190 : left 5,420 : width 5,150 : caption 5,"Imprimer presse-papier" : on_click 5,imprimer3
picture 2 : top 2,40 : left 2,10 : width 2,400 : height 2,300 : stretch_on 2 item_add 7,"https://panoramic.1fr1.net/" : ' potrait item_add 7,"https://klauspanoramic.000webhostapp.com/" : ' paysage item_select 7,1 form 300 : top 300,50 : left 300,left(0)+width(0)+20 dll_on "KGF.dll"
' res% = dll_call0("GetDefaultPrinterIndex") res% = dll_call1("GetPrinterNames",handle(3)) item_select 3,res%
WB% = dll_call1("WB_Create",handle(300)) res% = dll_call5("WB_Locate",WB%,0,0,width_client(300),height_client(300)) end
charger: url$ = text$(7) res% = dll_call2("WB_Url",WB%,adr(url$)) to_foreground 0 message "La page est chargée." return
imprimer1: : ' 0=imprimante par défaut res% = dll_call5("WB_Print",WB%,0,0,checked(11),position(10)) message str$(res%) return
imprimer2: clip% = 1 : ' 1=imprimante avec indexe choisie res% = dll_call5("WB_Print",WB%,1,item_index(3),checked(11),position(10)) message str$(res%) return
imprimer3: : ' 2 = presse-papier res% = dll_call5("WB_Print",WB%,2,0,0,0) clipboard_paste 2 message str$(res%) return
Une combo donne 2 URLs à charger: - page d'accueil du formu Panoramic, mode portait, imprimé sur 2 pages - page d'accueil de mon site, mode paysage, imprimé sur 1 page Ca fait un joli complément pour le WebBrowser, non ? Voici ce que ça donne avec le site du forum en 2 pages: Page 1: Page 2: Mon site: | |
| | | Contenu sponsorisé
| Sujet: Re: KGF_dll - nouvelles versions | |
| |
| | | | KGF_dll - nouvelles versions | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |