FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
KGF_dll - nouvelles versions - Page 38 Emptypar papydall Aujourd'hui à 16:57

» PANORAMIC V 1
KGF_dll - nouvelles versions - Page 38 Emptypar papydall Aujourd'hui à 3:22

» select intégrés [résolu]
KGF_dll - nouvelles versions - Page 38 Emptypar jjn4 Hier à 17:00

» number_mouse_up
KGF_dll - nouvelles versions - Page 38 Emptypar jjn4 Hier à 11:59

» Aide de PANORAMIC
KGF_dll - nouvelles versions - Page 38 Emptypar jjn4 Hier à 11:16

» trop de fichiers en cours
KGF_dll - nouvelles versions - Page 38 Emptypar lepetitmarocain Hier à 10:43

» Je teste PANORAMIC V 1 beta 1
KGF_dll - nouvelles versions - Page 38 Emptypar papydall Hier à 4:17

» bouton dans autre form que 0
KGF_dll - nouvelles versions - Page 38 Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
KGF_dll - nouvelles versions - Page 38 Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
KGF_dll - nouvelles versions - Page 38 Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
KGF_dll - nouvelles versions - Page 38 Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
KGF_dll - nouvelles versions - Page 38 Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
KGF_dll - nouvelles versions - Page 38 Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
KGF_dll - nouvelles versions - Page 38 Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
KGF_dll - nouvelles versions - Page 38 Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -39%
Ordinateur portable ASUS Chromebook Vibe CX34 Flip
Voir le deal
399 €

 

 KGF_dll - nouvelles versions

Aller en bas 
+12
JL35
Oscaribout
bignono
Pedro
pascal10000
silverman
Jicehel
papydall
Minibug
Marc
Yannick
Klaus
16 participants
Aller à la page : Précédent  1 ... 20 ... 37, 38, 39, 40  Suivant
AuteurMessage
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptySam 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.jpg

Utilisable 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


Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyMer 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. Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyJeu 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é.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyJeu 12 Nov 2020 - 0:13

Ok merci Klaus.

Je regarderai demain alors.
Bonne nuit... Sleep Sleep
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyJeu 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...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyJeu 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...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyVen 13 Nov 2020 - 11:30

KGF.dll V9.33 du 11/01/11/2020

Nouveauté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.dll

La 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:
KGF_dll - nouvelles versions - Page 38 Aa145


Dernière édition par Klaus le Ven 13 Nov 2020 - 12:45, édité 2 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyVen 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...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyVen 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyVen 13 Nov 2020 - 19:37

Bonsoir Klaus !

Oui désolé je ne t'ai pas répondu. Embarassed

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....
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptySam 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... Very Happy Very Happy Very Happy . 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


 
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptySam 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... Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyMar 17 Nov 2020 - 2:07

KGF.dll V9.34 du 17/01/11/2020

Nouveautés:
- nouvelle fonction: BackupPanoramicEditor

Modules modifiés:
KGF.dll

La 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...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyMar 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyVen 20 Nov 2020 - 1:30

KGF.dll V9.35 du 20/01/11/2020

Nouveautés:
- nouvelle fonction: PrintKGFGrid

Modules modifiés:
KGF.dll
KGF.chm


La 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyVen 20 Nov 2020 - 15:41

KGF.dll V9.35 du 20/01/11/2020

Nouveautés:
- nouvelle fonction: PrintPartialKGFGrid

Modules modifiés:
KGF.dll
KGF.chm


Cette 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 !):
KGF_dll - nouvelles versions - Page 38 Aa146

et l'impression en PDF du rectangle de cellules de colonne 3 à 7 et lignes 2 à 4 donne ceci:
KGF_dll - nouvelles versions - Page 38 Aa218

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 ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyDim 22 Nov 2020 - 1:36

KGF.dll V9.37 du 2/01/11/2020

Nouveautés:
- nouvelle fonction: ImageStackAction

Modules modifiés:
KGF.dll
KGF.chm


La 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

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyDim 22 Nov 2020 - 23:46

KGF.dll V9.38 du 22/01/11/2020

Nouveautés:
- nouvelle fonction: CopyObjectByHandle

Modules modifiés:
KGF.dll
KGF.chm


La 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyLun 30 Nov 2020 - 20:39

KGF.dll V9.39 du 30/01/11/2020

Nouveautés:
- nouvelle fonction: GetPrinterCount
- GetPrinterNames: correction d'un bug, retour possible dans MEMO, COMBO ou LIST
- nouvelles fonctions: WBPrint, WB_Print


Modules modifiés:
KGF.dll

La 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2392
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyLun 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 !

Revenir en haut Aller en bas
Oscaribout




Nombre de messages : 471
Date d'inscription : 29/12/2016

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyLun 30 Nov 2020 - 22:12

Merci Klaus pour ton travail. cheers
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyMar 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 !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyMer 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):
KGF_dll - nouvelles versions - Page 38 Aa147

Je travaille sur le mode paysage...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptyVen 4 Déc 2020 - 15:10

KGF.dll V9.40 du 04/01/14/2020

Nouveauté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.chm


La 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...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 EmptySam 5 Déc 2020 - 13:59

KGF.dll V9.41 du 05/12/2020

Nouveautés:
- WB_Print: impression correcte d'une page en mode paysage

Modules modifiés:
KGF.dll
KGF.chm


La 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:
KGF_dll - nouvelles versions - Page 38 Aa148

Page 2:
KGF_dll - nouvelles versions - Page 38 Aa219

Mon site:
KGF_dll - nouvelles versions - Page 38 Aa311
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





KGF_dll - nouvelles versions - Page 38 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 38 Empty

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 38 sur 40Aller à la page : Précédent  1 ... 20 ... 37, 38, 39, 40  Suivant
 Sujets similaires
-
» KGF_dll - nouvelles versions
» Nouvelles versions
» Synedit_Editor - nouvelles versions
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions

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