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
» Gestion d'un système client-serveur.
KGF_dll - nouvelles versions - Page 37 Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
KGF_dll - nouvelles versions - Page 37 Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
KGF_dll - nouvelles versions - Page 37 Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
KGF_dll - nouvelles versions - Page 37 Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
KGF_dll - nouvelles versions - Page 37 Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
KGF_dll - nouvelles versions - Page 37 Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
KGF_dll - nouvelles versions - Page 37 Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
KGF_dll - nouvelles versions - Page 37 Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
KGF_dll - nouvelles versions - Page 37 Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
KGF_dll - nouvelles versions - Page 37 Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
KGF_dll - nouvelles versions - Page 37 Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
KGF_dll - nouvelles versions - Page 37 Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
KGF_dll - nouvelles versions - Page 37 Emptypar leclode Lun 6 Mai 2024 - 13:59

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

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

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%
Pack Home Cinéma Magnat Monitor : Ampli DENON ...
Voir le deal
1190 €

 

 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 ... 36, 37, 38, 39, 40  Suivant
AuteurMessage
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyLun 17 Aoû 2020 - 19:17

Salut Yannick,

Content de te voir !
Pour l'inspiration ça reviendra bien un jour ou l'autre... Laughing
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyMer 19 Aoû 2020 - 15:07

KGF.dll V9.27 du 18/08/2020

Nouveautés:
- nouvel objet: PlayerControl
- nouvelles fonctions: CreateMultiPlayerControl, DeleteMultiPlayerControl, SetMultiPlayerControlIndex
- MultiPlayer: gérer PlayerControl si type VLC et PlayerControl est affecté au player
- KGF.ilb: nouvelles icônes 371 à 381 (pour PlayerControl)


Modules modifiés:
KGF.dll
KGF.chm


La doc est à jour.

Ce nouvel objet PlayerControl est un "complément" pour l'objet MediaPlayer en mode MultiPlayer, si le type VLC est choisi. Le type WindowsMediaPlayer affiche des commandes de contrôle (start/stop, volume, chargement video, ..). Par contre, le type VLC n'affiche que la partie visualisation, mais il n'y a aucun contrôle.

C'est là que le nouvel objet intervient. Il crée une barre d'outils avec tout ce qu'il faut pour exploiter le player. Cet objet est étroitement associé à un player VLC lorsz de sa créationet s'affiche toujours juste en-dessous de la fenêtre de visualisation du player, quelque soit sa taille ou sa position.

Voici l'aspect visuel:
KGF_dll - nouvelles versions - Page 37 Player10

Toutes les actions sont gérées en interne par la DLL - plus aucune interaction avec Panoramic n'est nécessaire.

Les icônes utilisées par défaut proviennent de la librairie interne (KGF.ilb), à laquelle j'ai ajouté les icônes nécessaires (de 371 à 381 (11 nouvelles icônes). Bien sûr, chaque bouton séparément peut recevoir une ic$one personnalisée provenant d'une autre ImageLibrary fournie par le programme.

Voici une démo:
Code:
' test_PlayerControl.bas

label close0, zoom, move

dim res%, MP%, MPC%

dll_on "KGF.dll"

width 0,800 : height 0,600
button 1 : top 1,10 : left 1,10 : caption 1,"Agrandir" : on_click 1,zoom
button 2 : top 2,10 : left 2,left(1)+width(1) : caption 2,"Déplacer" : on_click 2,move

on_close 0,close0

res% = dll_call1("SelectMultiPlayerType",2)
MP% = dll_call5("CreateMultiPlayer",handle(0),100,250,300,200)
' MPC% = dll_call3("CreateMultiPlayerControl",MP%,handle(0),0-1)
MPC% = dll_call2("CreateMultiPlayerControl",MP%,0-1)

end

close0:
  ' détruire simplement le MultiPlayerControm
  ' MPC% = dll_call1("DeleteMultiPlayerControl",MPC%)
  ' détruire le MultiPlayer VLC détruit AUTOMATIQUEMENT le MultiPlayerControl associé !
  res% = dll_call1("DeleteMultiPlayer",MP%)
  return

zoom:
  res% = dll_call5("ResizeMultiPlayer",MP%,40,10,600,400)
  return
 
move:
  res% = dll_call3("MoveMultiPlayer",MP%,40,40)
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyMer 19 Aoû 2020 - 16:55

Bonjour Klaus !
Je suis désolé, je n’ai pas réussi à faire fonctionner la fonction CreateMultiPlayerControl.
J’ai un message d’erreur (voir copie d’écran ci-dessus) avec ton source de démonstration.
Mes essais ont été faits sous Windows 10 64 bits et Windows 7 64 bits.
SelectMultiPlayerType est bien en type 2
Pour MP%, la fonction me renvoie bien une valeur : 62924604.
Quand le programme arrive sur la fonction CreateMultiPlayerControl, un message d'erreur s'affiche.
Copie d'écran:
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyMer 19 Aoû 2020 - 17:15

On dirait que tu as encore la version précédente de la DLL. Fais marcher ceci:
Code:
dim res%, vers$
vers$ = string$(25,"  ")
dll_on "KGF.dll"
res% = DLL_call1("KGFdllVersion",adr(version$))
message version$
end

Chez moi, ça donne ceci:
KGF_dll - nouvelles versions - Page 37 Aa141

EDIT

Oups... je viens de me rendre compte que le upload vers mon site n'a pas marché. Je le refais en ce moment.
Sur mon Webdav, dossier "KGF DLL", la DLL est à jour...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyMer 19 Aoû 2020 - 17:29

C'est fait. Sur mon site, KGF.dll est à jour. Désolé pour ce décalage.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyMer 19 Aoû 2020 - 18:54

Merci Klaus, c’est téléchargé !

Maintenant j’ai la version KGF :
KGF_dll - nouvelles versions - Page 37 Kgf212

Plus de message d’erreur mais la fonction CreateMultiPlayerControl n’affiche pas le nouveau playeurControl pour un type 2.

scratch Il y a probablement quelque chose que je n’ai pas compris. Embarassed

Voici une copie d’écran obtenue en exécutant ton source de démonstration seul (WMP et VLC inactifs):
Spoiler:
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyMer 19 Aoû 2020 - 21:07

Là, tu es en type 1, clairement. C'est le WindowsWebBrowser qui s'affiche ainsi.

Est-ce que tu as l'application VLC ? Si ce n'est pas le cas, pas la peine d'aller plus loin...

Il faut que tgu aies quelque part libvlc.dll installé - c'est la DLL qui contient le coeur du player VLC.exe. C'est cette DLL qui est utilisée par KGF.dll pour le MediaPlayer en type 2, et elle vient avec l'installation de VLC 'Video Lan Player). C'est un freeware, largement utilisé.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyMer 19 Aoû 2020 - 22:27

Klaus a écrit:
Là, tu es en type 1, clairement. C'est le WindowsWebBrowser qui s'affiche ainsi.
Oui, tout à fait d'accord avec toi, mais c'est bien le type 2 qui est passé en paramètre à la fonction SelectMultiPlayerType.

Klaus a écrit:
Est-ce que tu as l'application VLC ?
Oui, bien sûr !
Quant à la DLL libvlc.dll, elle est dans le répertoire d’installation de VLC 64 bits, donc dans Programmes et non pas Program Files :
KGF_dll - nouvelles versions - Page 37 Kgf115

Je vais faire un essai avec une version 32 bits... et je reviens te donner le résultat.


EDIT : avec VLC en 32 bits, ça fonctionne !

Donc :
avec VLC 32 bits => OK !Very Happy
avec VLC 64 bits => pas bon Crying or Very sad
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyMer 19 Aoû 2020 - 23:24

Citation :
avec VLC 32 bits => OK !Very Happy
avec VLC 64 bits => pas bon

Eh oui - Panoramic est en mode 32 bits. Et donc, KGF.dll est nécessairement en 32 bis également, et ne peut utiliser que les DLLs en 32 bits. Impossible, techniquement, de mélanger 32 et 64 bits. C'est ce que MicroSoft appelle le "bitness" - le nombre de bits doit être identique à travers tous les compsants d'un projet. C'est bien la raison pour laquelle Windows a une double arborescence pour les programmes, mais également pour les DLLs.

J'aurais dû y penser - désolé. Mais enfin, je suis content que ça tourne, et merci pour tes efforts !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyMer 19 Aoû 2020 - 23:35

Ah, mince !
Il reste la possibilité d’installer VLC en 32 bits sur Windows 64 bits.

En tout cas, merci pour tout, ta générosité et ton dévouement !
Bonne continuation !
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyMer 19 Aoû 2020 - 23:47

Citation :
Il reste la possibilité d’installer VLC en 32 bits sur Windows 64 bits.
Oui, ça marche sans problèmes. C'est ce que j'ai fait chez moi. Je suis en W10 64 bits aussi.

En fait, cela donne deux possibilités:
- avec PlayerControl, tu as un video player puissant, réalisable en quelques lignes Panoramic
- sans PlayerControl, tu as un visualiseur de vidéos dans lequel tu charges une vidéo à l'aide des fonctions KGF.dll, mais sur laquelle l'utilisateur ne peut pas intervenir (sauf su tu prévois en Panoramic des boutons et réglages pour gérer le visualiseur). C'est un moyen idéal de visualiser des publicités, des clips d'information ou tout autre document video qui doit s'afficher automatiquement alors que l'application elle-même traite autre chose. Des tutoriels, par exemple.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptySam 31 Oct 2020 - 10:21

KGF.dll V9.28 du 31/10/2020

Nouveautés:
- nouvelle fonction: IsUniqueInstance
- WB_CopyToMemo: actuellement il y a un bug - NE PAS UTILISER !


Modules modifiés:
KGF.dll
KGF.chm


La doc est à jour.

La fonction est documentée dans la section "Fonctions diverses" (dernière fonction de la liste).

La nouvelle fonction IsUniqueInstance permet de s'assurer qu'on programme n'est pas lancé en double. Ekke retourne la valeur 1 si aucune autre instance n'est active, ou 0 s'il y a déjà au moins une instance active du même programme. Après avoir réçu un résultat 1, toute nouvelle instance du même programme obtiendra une valeur de 0 et devrait donc impératiement s'arrêter, comme dans la démo ci-après:
Code:
' test-IsUniqueInstance.bas

dim res%

dll_on "KGF.dll"

res% = dll_call0("IsUniqueInstance")
if res%=1
  message "On est seul"
else
  message "On n'est pas seul"
terminate
end_if

end

Pour tester, il faut faire ceci:
- créer l'exécutable de ce code (menu Fichiers de l'éditeur)
- lancer ce code dans l'éditeur (par Run ou l'icône éclair)
==> on obtient le message "On est seul"
- puis lancer l'exécutable généré en double-cliquant sur le fichier dans l'explorateur
==> on obtient le messane "On n'est pas seul", puis le programme se termine
- arrêter le programme lancé par l'éditeur
- relancer l'exécutable généré en double-cliquant sur le fichier dans l'explorateur
==> on obtient le messane "On est pas seul"
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyDim 1 Nov 2020 - 12:50

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

Nouveautés:
- nouvelle fonction: RightClickForIconListBox

Modules modifiés:
KGF.dll
KGF.chm


La doc est à jour.

Cette fonction permet d'interdire ou d'autoriser le clic droit dans un objet IconListBox. Par défaut, le clic droit est refusé.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyMar 3 Nov 2020 - 1:56

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

Nouveautés:
- nouvelle fonction: UnblockIconListBox

Modules modifiés:
KGF.dll
KGF.chm


La doc est à jour.

Utilisation:
Juste avant le RETURN de la routine USER_EVENT d'une IconListBox, ajouter la ligne suivante:
Code:
res% = sll_call1("UnblockIconListBox",ILB%)
où ILB% représente l'identifiant de l'objet IconListBox.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyMer 4 Nov 2020 - 17:05

KGF.dll V9.31 du 04/01/11/2020

Nouveautés:
- nouveau module: gestion de DLLs de ressources

Modules modifiés:
KGF.dll
KGF.chm


La doc est à jour.

Une DLL de ressource est une DLL ne cotenant que des ressources (fichiers suelconues: exécutables, DLLs, textes, images, videos, fichiers de données, ...). Elle n'a pas besoin d'être montée par DLL_ON pour pouvoir l'utiliser, mais est gérée directement par KGF.dll.

Voici un utiltaire de création/maintenance des DLLs de ressoures:
Code:
' Gerer_ApplicationHost.bas

label creervide, connecter, deconnecter, lister, changeapp, Chercherfichier, ajouterapp
label supprimerapp, extraireapp, choisirfichier, Chercherdll
label help0, help12, help13, help14, help15, help16, help21
label help31, help33, help34, help35, help36, help38, help39, help40
label help101

dim res%, host$, applic$, fichier$, caret%, appcars$, s$, crlf$

full_space 0
caption 0,"Gestionnaire des DLLs de ressources"

alpha 11 : top 11,95 : left 11,220 : caption 11,"DLL de ressources:"
edit  12 : top 12,110 : left 12,220 : width 12,600
button 13 : top 13,110 : left 13,820 : width 13,30 : caption 13,"..." : on_click 13,Chercherdll

button 14 : top 14,110 : left 14,850 : width 14,200 : caption 14,"Créer une DLL vide" : on_click 14,creervide
button 15 : top 15,140 : left 15,850 : width 15,200 : caption 15,"Connecter à la DLL" : on_click 15,connecter

button 16 : top 16,210 : left 16,220 : width 16,200 : caption 16,"Déconnecter la DLL" : on_click 16,deconnecter
button 21 : top 21,240 : left 21,220 : width 21,200 : caption 21,"Liste des ressources" : on_click 21,lister

alpha 30 : top 30,290 : left 30,220 : caption 30,"Ressource:"
edit  31 : top 31,310 : left 31,220 : width 31,200  : on_change 31,changeapp
alpha 32 : top 32,290 : left 32,430 : caption 32,"Fichier EXE:"
edit  33 : top 33,310 : left 33,430 : width 33,600
button 34 : top 34,310 : left 34,1030 : width 34,30 : caption 34,"..." : on_click 34,Chercherfichier
button 35 : top 35,310 : left 35,1060 : width 35,200 : caption 35,"Ajouter la ressource" : on_click 35,ajouterapp

button 36 : top 36,350 : left 36,220 : width 36,200 : caption 36,"Supprimer la ressource sélectonnée" : on_click 36,supprimerapp

alpha 37 : top 37,390 : left 37,220 : caption 37,"Fichier EXE:"
edit  38 : top 38,410 : left 38,220 : width 38,600
button 39 : top 39,410 : left 39,820 : width 39,30 : caption 39,"..." : on_click 39,choisirfichier
button 40 : top 40,410 : left 40,850 : width 40,200 : caption 40,"Extraire la ressource sélectonnée" : on_click 40,extraireapp

                                                                                           
alpha 100 : top 100,55 : left 100,10 : caption 100,"Ressources disponibles:"
' memo 101 : top 101,70 : left 101,10 : width 101,200 : height 101,400 : bar_both 101
list 101 : top 101,70 : left 101,10 : width 101,200 : height 101,400

alpha 200 : top 200,460 : left 200,220 : font_size 200,16
on_mouse_move 0,help0
on_mouse_move 12,help12
on_mouse_move 13,help13
on_mouse_move 14,help14
on_mouse_move 15,help15
on_mouse_move 16,help16
on_mouse_move 21,help21
on_mouse_move 31,help31
on_mouse_move 33,help33
on_mouse_move 34,help34
on_mouse_move 35,help35
on_mouse_move 36,help36
on_mouse_move 38,help38
on_mouse_move 39,help39
on_mouse_move 40,help40
on_mouse_move 101,help101

open_dialog 300 : filter 300,"Fichiers DLL|*.dll"
open_dialog 301

dll_on "KGF.dll"
appcars$ = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"
host$ = "ResourceHost.dll"
crlf$ = chr$(13) + chr$(10)
text 12,host$
res% = dll_call2("GetFullResourceHostName",handle(12),adr(host$))
end

creervide:
  if text$(12)=""
    message "Erreur: le nom de la DLL ressources manque"
    return
  end_if
  host$ = text$(12)  : ' "ResourceHost.dll"
  if file_exists(host$)=1 then file_delete host$
  res% = dll_call1("CreateNewResourceHost",adr(host$))
  if res%=0
    clear 101
    message "Ok"
  else
    message "Erreur"
  end_if
  return

connecter:
  host$ = text$(12)  : ' "ResourceHost.dll"
  res% = dll_call1("ConnectResourceHost",adr(host$))
  if res%=0
    res% = dll_call1("GetResourceListFromHost",handle(101))
    message "Ok"
  else
    clear 101
    message "Erreur"
  end_if
  return

deconnecter:
  res% = dll_call0("DisconnectResourceHost")
  if res%=0
    clear 101
    message "Ok"
  else
    message "Erreur"
  end_if
  return
 
lister:
  res% = dll_call1("GetResourceListFromHost",handle(101))
  if res%>=0
    message "Ok: "+str$(res%)+" ressources trouvées"
  else
    message "Erreur"
  end_if
  return
 
changeapp:
  caret% = caret_position(31)
  off_change 31
  s$ = text$(31)
  if s$<>""
    if instr(appcars$,mid$(s$,caret%,1))=0
      if caret%<=1
        s$ = mid$(s$,caret%+1,400)
      else
        s$ = left$(s$,caret%-1)+mid$(s$,caret%+1,400)
      end_if
      if caret%>0 then caret% = caret% - 1
    end_if
  end_if
  text 31,upper$(s$)
  caret_position 31,caret%
  on_change 31,changeapp
  return

chercherfichier:
  fichier$ = file_name$(301)
  if fichier$="_" then return
  if file_exists(fichier$)=0
    message "Erreur: fichier inexistant"
    return
  end_if
  text 33,fichier$
  return 
 
choisirfichier:
  fichier$ = file_name$(301)
  if fichier$="_" then return
  if file_exists(fichier$)=1
    if message_confirmation_yes_no("Fichier existant. Voulez_vous le remplacer ?")<>1 then return
  end_if
  text 38,fichier$
  return 
 
Chercherdll:
  fichier$ = file_name$(300)
  if fichier$="_" then return
  text 12,fichier$
  host$ = fichier$
  return
   
ajouterapp:
  applic$ = text$(31)
  fichier$ = text$(33)
  if applic$=""
    message "Erreur: le nom de la ressource manque"
    return
  end_if
  if fichier$=""
    message "Erreur: le nom du fichier de la ressource manque"
    return
  end_if
  res% = dll_call2("AddResourceToHost",adr(applic$),adr(fichier$))
  if res%>=0
    res% = dll_call1("GetResourceListFromHost",handle(101))
    message "Ok"
  else
    message "Erreur"
  end_if
  return
 
supprimerapp:
  if item_index(101)=0
    message "Erreur: aucune ressource n'est sélectionnée"
    return
  end_if
  s$ = item_index$(101)
  res% = dll_call1("RemoveResourceFromHost",adr(s$))
  if res%=0
    res% = dll_call1("GetResourceListFromHost",handle(101))
    message "Ok"
  else
    message "Erreur"
  end_if
  return 
 
extraireapp:
  if item_index(101)=0
    message "Erreur: aucune ressource n'est sélectionnée"
    return
  end_if
  s$ = item_index$(101)
  fichier$ = text$(38)
  if file_exists(fichier$) then file_delete fichier$
  res% = dll_call2("ExtractResourceFromHost",adr(s$),adr(fichier$))
  if res%=0
    message "Ok"
  else
    message "Erreur"
  end_if
  return
 
help0:
  caption 200,""
  return
help12:
  s$ = "Nom et chemin complet de la DLL de ressources."+crlf$+crlf$+"Utiliser le bouton <...> pour choisir la DLL."+crlf$
  s$ = s$ + "Le contenu de ce champ sera utilisé pour créer une nouvelle DLL ou connecter une DLL existante."
  caption 200,s$
  return
help13:
  caption 200,"Choisir un fichier DLL existant ou l'emplacement d'une DLL à créer."
  return
help14:
  s$ = "Créer une nouvelle DLL de resources vide (sans ressources)"+crlf$
  s$ = s$ + "Le nom et l'emplacement de la DLL à créer sont dans le champ à gauche de ce bouton."
  caption 200,s$
  return 
help15:
  s$ = "Connecter une DLL de resources existante."+crlf$
  s$ = s$ + "Le nom et l'emplacement de la DLL à connecter sont dans le champ à gauche de ce bouton."
  caption 200,s$
  return 
help16: 
  caption 200,"Déconnecter la DLL actuellement connectée."
  return 
help21:
  caption 200,"Afficher la liste des ressources disponibles dans la DLL actuellement connectée."
  return 
help31:
  s$ = "Nom de la ressource."+crlf$+crlf$+"Ce nom sert à identifier la ressource."+crlf$
  s$ = s$ + "Seules les lettres majuscules et minuscules sont autorisées, ainsi que le signe <_>."
  caption 200,s$
  return 
help33:
  s$ = "Nom et chemin complet du fichuer à ajouter en tant que ressources."+crlf$+crlf$
  s$ = s$ + "Utiliser le bouton <...> pour choisir le fichier."+crlf$
  s$ = s$ + "Le contenu de ce champ désigne le fichier qui sera utilisé pour l'ajout."+crlf$+crlf$
  s$ = s$ + "Si la ressource n'existe pas encore dans la DLL, elle sera ajoutée."+crlf$
  s$ = s$ + "Si la ressource existe déjà dans la DLL, elle sera remplacée."
  caption 200,s$
  return 
help34:
  caption 200,"Choisir un fichier existant à utiliser en tant que ressoure."
  return 
help35:
  s$ = "Ajouter un fichier e tant que ressource."+crlf$+crlf$
  s$ = s$ + "Le contenu du champ à gauche désigne le fichier qui sera utilisé pour l'ajout."+crlf$+crlf$
  s$ = s$ + "Si la ressource n'existe pas encore dans la DLL, elle sera ajoutée."+crlf$
  s$ = s$ + "Si la ressource existe déjà dans la DLL, elle sera remplacée."
  caption 200,s$
  return 
help36:
  caption 200,"Supprimer la ressource sélectionnée dans la liste des ressources." 
  return 
help38:
  s$ = "Nom et chemin du fichier pour l'extraction d'une ressource."+crlf$+crlf$
  s$ = s$ + "Utiliser le bouton <...> pour choisir le fichier."+crlf$
  s$ = s$ + "La ressource sélectionnée dans la liste des ressources sera extraite dans ce fichier."+crlf$
  caption 200,s$
  return 
help39:
  caption 200,"Choisir le nom et l'emplacement du fichier dans lequel la ressource sélectionnée sera extraite."
  return 
help40:
  s$ = "Extraire une ressource dans un fichier."+crlf$+crlf$
  s$ = s$ + "La ressource extraite est celle qui est sélectionnée dans la liste des ressources."+crlf$
  s$ = s$ + "ATTENTION: il faut veiller à donner la bonne extension au fichier, sinon il ne sera pas utilisable !"
  caption 200,s$
  return 
help101:
  caption 200,"Liste des ressources disponibles."+crlf$+crlf$+"Un clic dans cette liste sélectionne la ressource pour extraction ou suppression."
  return

Déplacez le curseur dans la fenêtre. Chaque objet affiche alors automatqiuement un texte d'aide.
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 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyMer 4 Nov 2020 - 20:22

C'est un peu trop abstrait pour moi les DLLs de ressources.

Est ce que tu pourrais expliquer un peu plus ou donner des exemples pour mieux comprendre...
J'avoue que là, j'ai bien essayé ton programme mais je n'ai pas trop su quoi faire ! scratch scratch
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyJeu 5 Nov 2020 - 0:58

C'est un des multiples moyens de regrouper un un seul fichier, tous les fichiers d'une application.

Par exemple, pour faire une installation un peu complexe:
On place tous les fichiers dans une DLL de ressources, y compris l'exécutable de l'application, mais PAS KGF.dll.
Puis on fait un petit programme Panoramic ui n'a qu'un seul objectif: créer éventuellement les dossiers et sous-dossiers nécessaires, puis extraire chaque ressource directement dans le dossier approprié. Installation automatique et sans faille.

Un autre exemple: créer un moyen de sauvegarde des fichiers de données d'une application ayant de multiples fichiers:
On place tous ces fichiers dans une DLL de ressources. A chaque sauvegarde, par la fonction AddResourceToHost, les fichiers actuels emplacent automatiquement la version plus ancienne contenue dans la DLL. La restauration est possible bien sûr en block, mais également fichier par fichier, ce qui est moins évident avec d'autres moyens de sauvgarde tels que ZIP, par exemple.

Un dernier exemple: créer une journalisation, comme l'archivation de versions différentes d'un programme:
Chaque version est placée dans la DLL de ressources avec un nom différant. On pourra alors à tout moment extraireune version spécifique.

Bref, dans tous les cas où de multiples fichiers de toute nature doivent être archivés mais être accessibles individuellement, à tout moment. Je pense que ça pourrait être particulièrement intéressant pour GPP: imagine une seule DLL de ressources par "projet": à l'ouverture, on extait tout, à la fermeture, on sauvegarde tout et on "purge" la place sur disque... un seul fichier à trimbaler par projet.

Bien sûr, il y a un "hic": les noms des ressources sont composés de lettres majuscules et minuscules et le caractère "_". Pas de caractères spéciaux, donc. Mais il est aisé d'imaginer un fichier texte "index" (qui pourrait se nommer index.txt par exemple) et qui serait systématiquement inclus comme première ressource dans chacune de ces DLLs. Chaque ligne pourrait être conçue comme suit:
NomDeLa Ressource=...chemin..._NomDuFichier.extention
permettant ainsi de savoir exactement où les fichiers sont à placer. En chargeant cette ressource au début dans un LIST ou un DLIST, on l'aura toujours sous la main...

L'idée général est d'avoir un contenant unique facile à manipuler (copier, transporter, iinstaller, ...) mais PAS accessible en lecture par le premier fouineur venu. Il faut en effet avoir certaines connaissances comme l'usage d'outils comme ResHacker par exemple pour lire ce qu'il y a dedans. Et encore...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Oscaribout




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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyJeu 5 Nov 2020 - 1:05

C'est formidable le génie que tu as.

Je me demande si tu ne serais pas avec JJN4, mais peut-être pas sur Mars, mais sur Venus! Very Happy
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyJeu 5 Nov 2020 - 1:07

Oups... j'ai oublié qu'un nom de ressource peut également contenir des chiffres !

Voici la version adapté de l'outil de maintenance des DLLs de ressources:
Code:
' Gerer_ApplicationHost.bas

label creervide, connecter, deconnecter, lister, changeapp, Chercherfichier, ajouterapp
label supprimerapp, extraireapp, choisirfichier, Chercherdll
label help0, help12, help13, help14, help15, help16, help21
label help31, help33, help34, help35, help36, help38, help39, help40
label help101

dim res%, host$, applic$, fichier$, caret%, appcars$, s$, crlf$

full_space 0
caption 0,"Gestionnaire des DLLs de ressources"

alpha 11 : top 11,95 : left 11,220 : caption 11,"DLL de ressources:"
edit  12 : top 12,110 : left 12,220 : width 12,600
button 13 : top 13,110 : left 13,820 : width 13,30 : caption 13,"..." : on_click 13,Chercherdll

button 14 : top 14,110 : left 14,850 : width 14,200 : caption 14,"Créer une DLL vide" : on_click 14,creervide
button 15 : top 15,140 : left 15,850 : width 15,200 : caption 15,"Connecter à la DLL" : on_click 15,connecter

button 16 : top 16,210 : left 16,220 : width 16,200 : caption 16,"Déconnecter la DLL" : on_click 16,deconnecter
button 21 : top 21,240 : left 21,220 : width 21,200 : caption 21,"Liste des ressources" : on_click 21,lister

alpha 30 : top 30,290 : left 30,220 : caption 30,"Ressource:"
edit  31 : top 31,310 : left 31,220 : width 31,200  : on_change 31,changeapp
alpha 32 : top 32,290 : left 32,430 : caption 32,"Fichier EXE:"
edit  33 : top 33,310 : left 33,430 : width 33,600
button 34 : top 34,310 : left 34,1030 : width 34,30 : caption 34,"..." : on_click 34,Chercherfichier
button 35 : top 35,310 : left 35,1060 : width 35,200 : caption 35,"Ajouter la ressource" : on_click 35,ajouterapp

button 36 : top 36,350 : left 36,220 : width 36,200 : caption 36,"Supprimer la ressource sélectonnée" : on_click 36,supprimerapp

alpha 37 : top 37,390 : left 37,220 : caption 37,"Fichier EXE:"
edit  38 : top 38,410 : left 38,220 : width 38,600
button 39 : top 39,410 : left 39,820 : width 39,30 : caption 39,"..." : on_click 39,choisirfichier
button 40 : top 40,410 : left 40,850 : width 40,200 : caption 40,"Extraire la ressource sélectonnée" : on_click 40,extraireapp

                                                                                            
alpha 100 : top 100,55 : left 100,10 : caption 100,"Ressources disponibles:"
' memo 101 : top 101,70 : left 101,10 : width 101,200 : height 101,400 : bar_both 101
list 101 : top 101,70 : left 101,10 : width 101,200 : height 101,400

alpha 200 : top 200,460 : left 200,220 : font_size 200,16
on_mouse_move 0,help0
on_mouse_move 12,help12
on_mouse_move 13,help13
on_mouse_move 14,help14
on_mouse_move 15,help15
on_mouse_move 16,help16
on_mouse_move 21,help21
on_mouse_move 31,help31
on_mouse_move 33,help33
on_mouse_move 34,help34
on_mouse_move 35,help35
on_mouse_move 36,help36
on_mouse_move 38,help38
on_mouse_move 39,help39
on_mouse_move 40,help40
on_mouse_move 101,help101

open_dialog 300 : filter 300,"Fichiers DLL|*.dll"
open_dialog 301

dll_on "KGF.dll"
appcars$ = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789"
host$ = "ResourceHost.dll"
crlf$ = chr$(13) + chr$(10)
text 12,host$
res% = dll_call2("GetFullResourceHostName",handle(12),adr(host$))
end

creervide:
  if text$(12)=""
    message "Erreur: le nom de la DLL ressources manque"
    return
  end_if
  host$ = text$(12)   : ' "ResourceHost.dll"
  if file_exists(host$)=1 then file_delete host$
  res% = dll_call1("CreateNewResourceHost",adr(host$))
  if res%=0
    clear 101
    message "Ok"
  else
    message "Erreur"
  end_if
  return

connecter:
  host$ = text$(12)   : ' "ResourceHost.dll"
  res% = dll_call1("ConnectResourceHost",adr(host$))
  if res%=0
    res% = dll_call1("GetResourceListFromHost",handle(101))
    message "Ok"
  else
    clear 101
    message "Erreur"
  end_if
  return

deconnecter:
  res% = dll_call0("DisconnectResourceHost")
  if res%=0
    clear 101
    message "Ok"
  else
    message "Erreur"
  end_if
  return
  
lister:
  res% = dll_call1("GetResourceListFromHost",handle(101))
  if res%>=0
    message "Ok: "+str$(res%)+" ressources trouvées"
  else
    message "Erreur"
  end_if
  return
  
changeapp:
  caret% = caret_position(31)
  off_change 31
  s$ = text$(31)
  if s$<>""
    if instr(appcars$,mid$(s$,caret%,1))=0
      if caret%<=1
        s$ = mid$(s$,caret%+1,400)
      else
        s$ = left$(s$,caret%-1)+mid$(s$,caret%+1,400)
      end_if
      if caret%>0 then caret% = caret% - 1
    end_if
  end_if
  text 31,upper$(s$)
  caret_position 31,caret%
  on_change 31,changeapp
  return

chercherfichier:
  fichier$ = file_name$(301)
  if fichier$="_" then return
  if file_exists(fichier$)=0
    message "Erreur: fichier inexistant"
    return
   end_if
   text 33,fichier$
   return  
  
choisirfichier:
  fichier$ = file_name$(301)
  if fichier$="_" then return
  if file_exists(fichier$)=1
    if message_confirmation_yes_no("Fichier existant. Voulez_vous le remplacer ?")<>1 then return
   end_if
   text 38,fichier$
   return  
  
Chercherdll:
  fichier$ = file_name$(300)
  if fichier$="_" then return
  text 12,fichier$
  host$ = fichier$
  return
    
ajouterapp:
  applic$ = text$(31)
  fichier$ = text$(33)
  if applic$=""
    message "Erreur: le nom de la ressource manque"
    return
  end_if
  if fichier$=""
    message "Erreur: le nom du fichier de la ressource manque"
    return
  end_if
  res% = dll_call2("AddResourceToHost",adr(applic$),adr(fichier$))
  if res%>=0
    res% = dll_call1("GetResourceListFromHost",handle(101))
    message "Ok"
  else
    message "Erreur"
  end_if
  return
  
supprimerapp:
  if item_index(101)=0
    message "Erreur: aucune ressource n'est sélectionnée"
    return
  end_if
  s$ = item_index$(101)
  res% = dll_call1("RemoveResourceFromHost",adr(s$))
  if res%=0
    res% = dll_call1("GetResourceListFromHost",handle(101))
    message "Ok"
  else
    message "Erreur"
  end_if
  return  
  
extraireapp:
  if item_index(101)=0
    message "Erreur: aucune ressource n'est sélectionnée"
    return
  end_if
  s$ = item_index$(101)
  fichier$ = text$(38)
  if file_exists(fichier$) then file_delete fichier$
  res% = dll_call2("ExtractResourceFromHost",adr(s$),adr(fichier$))
  if res%=0
    message "Ok"
  else
    message "Erreur"
  end_if
  return
  
help0:
  caption 200,""
  return
help12:
  s$ = "Nom et chemin complet de la DLL de ressources."+crlf$+crlf$+"Utiliser le bouton <...> pour choisir la DLL."+crlf$
  s$ = s$ + "Le contenu de ce champ sera utilisé pour créer une nouvelle DLL ou connecter une DLL existante."
  caption 200,s$
  return
help13:
  caption 200,"Choisir un fichier DLL existant ou l'emplacement d'une DLL à créer."
  return
help14:
  s$ = "Créer une nouvelle DLL de resources vide (sans ressources)"+crlf$
  s$ = s$ + "Le nom et l'emplacement de la DLL à créer sont dans le champ à gauche de ce bouton."
  caption 200,s$
  return  
help15:
  s$ = "Connecter une DLL de resources existante."+crlf$
  s$ = s$ + "Le nom et l'emplacement de la DLL à connecter sont dans le champ à gauche de ce bouton."
  caption 200,s$
  return  
help16:  
  caption 200,"Déconnecter la DLL actuellement connectée."
  return  
help21:
  caption 200,"Afficher la liste des ressources disponibles dans la DLL actuellement connectée."
  return  
help31:
  s$ = "Nom de la ressource."+crlf$+crlf$+"Ce nom sert à identifier la ressource."+crlf$
  s$ = s$ + "Seules les lettres majuscules et minuscules sont autorisées, ainsi que le signe <_>."
  caption 200,s$
  return  
help33:
  s$ = "Nom et chemin complet du fichuer à ajouter en tant que ressources."+crlf$+crlf$
  s$ = s$ + "Utiliser le bouton <...> pour choisir le fichier."+crlf$
  s$ = s$ + "Le contenu de ce champ désigne le fichier qui sera utilisé pour l'ajout."+crlf$+crlf$
  s$ = s$ + "Si la ressource n'existe pas encore dans la DLL, elle sera ajoutée."+crlf$
  s$ = s$ + "Si la ressource existe déjà dans la DLL, elle sera remplacée."
  caption 200,s$
  return  
help34:
  caption 200,"Choisir un fichier existant à utiliser en tant que ressoure."
  return  
help35:
  s$ = "Ajouter un fichier e tant que ressource."+crlf$+crlf$
  s$ = s$ + "Le contenu du champ à gauche désigne le fichier qui sera utilisé pour l'ajout."+crlf$+crlf$
  s$ = s$ + "Si la ressource n'existe pas encore dans la DLL, elle sera ajoutée."+crlf$
  s$ = s$ + "Si la ressource existe déjà dans la DLL, elle sera remplacée."
  caption 200,s$
  return  
help36:
  caption 200,"Supprimer la ressource sélectionnée dans la liste des ressources."  
  return  
help38:
  s$ = "Nom et chemin du fichier pour l'extraction d'une ressource."+crlf$+crlf$
  s$ = s$ + "Utiliser le bouton <...> pour choisir le fichier."+crlf$
  s$ = s$ + "La ressource sélectionnée dans la liste des ressources sera extraite dans ce fichier."+crlf$
  caption 200,s$
  return  
help39:
  caption 200,"Choisir le nom et l'emplacement du fichier dans lequel la ressource sélectionnée sera extraite."
  return  
help40:
  s$ = "Extraire une ressource dans un fichier."+crlf$+crlf$
  s$ = s$ + "La ressource extraite est celle qui est sélectionnée dans la liste des ressources."+crlf$
  s$ = s$ + "ATTENTION: il faut veiller à donner la bonne extension au fichier, sinon il ne sera pas utilisable !"
  caption 200,s$
  return  
help101:
  caption 200,"Liste des ressources disponibles."+crlf$+crlf$+"Un clic dans cette liste sélectionne la ressource pour extraction ou suppression."
  return

P.S.
Mars, Venus ??? Trop hostile, tout ça ! Moi, je suis comme Colluche: je me sens bien quand mes pieds touchent bien par terre !
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 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptyJeu 5 Nov 2020 - 7:04

Bonjour Klaus,

Merci pour toutes ces explications.

J'avais bien saisie l'idée générale du truc mais là c'est beaucoup plus clair. geek
Maintenant il ne reste plus qu'a tester la mise en place de ces fonctions...

Concernant les fichiers du projet dans GPP j'utilise les fonctions ARCHIVE pour le moment.
Peut être que je modifierai tout cela par la suite. Je pense plutôt l'utiliser dans l'installation du programme.

Pour le moment, j'essaie d'avancer pour proposer une version fonctionnelle de GPP2 en mode éditeur. Wink

Encore merci pour toutes ces précisions Klaus !
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptySam 7 Nov 2020 - 2:26

KGF.dll V9.32 du 06/01/11/2020
Nouveautés:
- nouveau module: imprimer directement dans un fichier PDF

Modules modifiés:
KGF.dll
KGF.chm


La doc est à jour.

On peut maintenant créer des éditions directement dans un fichier PDF. c=Cela se fait par un script passé à une seule fonction qui s'occupe de tout. Et comme le script est dans un mémo ou un list, il peut provenir d'un fichier préenregistré, mais il peut également être créé directement per un programme Panoramic. Et j'ai mis à disposition un moyen de passer UN NOMBRE NON LIMITE de paramères texte et des valeurs entières et flottantes. Et on peut utiliser une large gamme de formats pour la mise en page de ces valeurs. On peut dessiner des formes, des lignes dans tous les sens, inclure des images, avoir une image de fond - bref, remplir un formulaire prédéfini contenu dans un fichier JPG scanné par exemple devient très facile !

Voici une brève démo:
Code:
' test_PDF.bas

label go
dim res%, WB%, url$, PDF$
dim TxtPars$(100), IntPars%(100), FloatPars(100)

dll_on "KGF.dll"
full_space 0


button 1 : top 1,10 : left 1,330 : caption 1,"Go !" : on_click 1,go

memo 100 : top 1,10 : left 100,10 : width 100,300 : height 100,500 : bar_both 100
' item_add 100,"Background,.\Icones 16x16\Passiflore.jpg"    : ' 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"

end

go:
  res% = dll_call5("PrintFormattedPDF",handle(100),adr(TxtPars$),adr(Intpars%),adr(FloatPars),adr(PDF$))
  message "res%="+str$(res%)
  execute PDF$
  return
En commentaires, il y a le code pour afficher une image de fond. Et, bien entendu, il faut adapter les chemins ves les fichiers image selon votre configuration.

Aucune DLL externe, pas de contrôle active-x - rien que du pur code Delphi dans KGF.dll, sans ressources externes.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Oscaribout




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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptySam 7 Nov 2020 - 3:29

Bravo Klaus, je prends.
Merci
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptySam 7 Nov 2020 - 11:23

Merci, Oscaribout !

Voici une application concrète de l'impression dans un PDF:
le remplissage du formulaire dérogatoire COVID-19

Voici le formulaire vierge, scanné en JPG:
https://klauspanoramic.000webhostapp.com/attestation-de-deplacement-derogatoire.jpg

Et voici le code diu programme (faudra adapter les données personnelles, bien sûr !):
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
' item_add 100,"Background,.\Icones 16x16\Passiflore.jpg"     : ' 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"

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




Dernière édition par Klaus le Sam 7 Nov 2020 - 18:01, édité 1 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptySam 7 Nov 2020 - 12:33

Encore et toujours Bravo et Merci Klaus !

Oscaribout a écrit:
...je prends.

Je me suis servi aussi !
J’ai fait quelques premiers tests avec succès ! cheers

Voilà qui ouvre une grande porte vers le monde de l’impression.

Ton lien ci-dessus ne fonctionne pas pour nous, j’ai donc pris provisoirement ce lien : https://klauspanoramic.000webhostapp.com/attestation-de-deplacement-derogatoire.jpg
Spoiler:

Voici le rendu d'un de mes essais :
Spoiler:


Bonne continuation !
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 37 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 37 EmptySam 7 Nov 2020 - 13:08

Tu peux même scanner ta signature sur un document quelconque, avec un logiciel comme photofiltre, tu extraits l'image de la signature et la déposes dans un fichier du genre MaSignature.jpg. Ensuite, tu peux l'inclure dans ton édition PDF via la commande script
Code:
Image,x,y,w,h,nom
avec x,y=coordonnées du coin en haut à gauche de l'image dans le PDF
w,h=dmensions du rectangle visé dans le PDF
nom=chaîne de caractères avec le nom relatif ou absolu, ou #n avec n=iindice dans le tableau des chaînes de caractères.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





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

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 37 sur 40Aller à la page : Précédent  1 ... 20 ... 36, 37, 38, 39, 40  Suivant
 Sujets similaires
-
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions
» Synedit_Editor - nouvelles versions
» version instantanée PANORAMIC V 0.9.25i6 du 14/12/2013

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