Mai 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | Calendrier |
|
| | KGF_dll - nouvelles versions | |
|
+6papydall Marc jean_debord Minibug JP06 Klaus 10 participants | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 5 Mai 2022 - 23:18 | |
| A priori, je suggèrerais ceci: - Code:
-
dim ExternalOrigin% : ExternalOrigin% = hex("FF000000") dim origine% ... Userevent:
WParam% = USER_EVENT_WPARAM LParam% = USER_EVENT_LPARAM
origine% = BIN_AND(USER_EVENT_WPARAM,MaskOrigin%) actevent% = BIN_AND(WParam%,MaskOperation%)/65536 if origine%=ExternalOrigine% : ' ici, on a un évènement externe if actevent%=hex("00010000") : ' est-ce la commande pour NORMAL ? nomal 0 end_if ... ici, traiter éventuellement d'autres codes action ... end_if if origine%<>0 then return OFF_USER_EVENT DesactiveProprietes()
SELECT actevent% CASE 3 objevent% = BIN_AND(WParam%,MaskPanoramic%) llevent% = BIN_AND(LParam%,MaskHigh%)/65536 ttevent% = BIN_AND(LParam%,MaskLow%) LEFT objevent%,llevent% : TEXT EditProp%(1,2),STR$(llevent%) : SauvegardeGridCopie(1,2) TOP objevent%,ttevent% : TEXT EditProp%(1,3),STR$(ttevent%) : SauvegardeGridCopie(1,3) CASE 4 objevent% = BIN_AND(WParam%,MaskPanoramic%) wwevent% = BIN_AND(LParam%,MaskHigh%)/65536 hhevent% = BIN_AND(LParam%,MaskLow%) WIDTH objevent%,wwevent% : TEXT EditProp%(1,4),STR$(wwevent%) : SauvegardeGridCopie(1,4) HEIGHT objevent%,hhevent% : TEXT EditProp%(1,5),STR$(hhevent%) : SauvegardeGridCopie(1,5)
END_SELECT ActiveProprietes()
ON_USER_EVENT Userevent RETURN | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Jeu 5 Mai 2022 - 23:58 | |
| Bon ça ne marche pas ! Mais déjà il n'y a pas de plantage ni bug.
Je regarderai demain car là il faut que j'aille me coucher...
Merci Klaus. Bonne nuit et à demain. | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Ven 6 Mai 2022 - 8:04 | |
| Bonjour Klaus, Voici un point les codes enregistrés. Bien sûr les variables, les labels sont déclarés en début de programme et le ON_USER_EVENT aussi dans les 2 codes. J'ai aussi déclaré dans le Constructeur comme tu me l'as indiqué : DIM WParam%, LParam% DIM ExternalOrigine% : ExternalOrigine%=HEX("FF000000") DIM origine%Pour l'Editeur : - Code:
-
UserEvent: MESSAGE "Userevent Editeur"
WParam%=USER_EVENT_WPARAM LParam%=USER_EVENT_LPARAM IF BIN_AND(WParam%,HEX("FF000000"))=HEX("FF000000") : ' est-ce un USER_EVENT envoyé part un programme Panoramic externe ? IF BIN_AND(LParam%,HEX("00FF0000"))=HEX("00010000") : ' est-ce la commande pour NORMAL ? NORMAL 0 : MESSAGE "NORMAL 0" END_IF END_IF RETURN
' ==============================================================================
' ----- BASCULEMENT VERS LE CONSTRUCTEUR ----- SUB BasculeVersConstructeur() DIM_LOCAL chem$ , hnd% , exe$ , res% , wpar%, lpar%
exe$="Constructeur.exe" : hnd%=dll_call1("GetProcessWindowHandle",adr(exe$)) IF hnd%=0 chem$=DIR_CURRENT$+"\Constructeur.exe" : EXECUTE chem$ : PAUSE 200 ELSE wpar%=HEX("FF010000") lpar%=0 res%=DLL_CALL2("SendUserEvent",wpar%,lpar%) END_IF MINIMIZE 0 END_SUB
Et pour le Constructeur : - Code:
-
Userevent:
MESSAGE "Userevent Constructeur"
WParam% = USER_EVENT_WPARAM LParam% = USER_EVENT_LPARAM
origine% = BIN_AND(USER_EVENT_WPARAM,MaskOrigin%) actevent% = BIN_AND(WParam%,MaskOperation%)/65536 IF origine%=ExternalOrigine% : ' ici, on a un évènement externe IF actevent%=hex("00010000") : ' est-ce la commande pour NORMAL ? NORMAL 0 : MESSAGE "NORMAL 0" END_IF ' ici, traiter éventuellement d'autres codes action END_IF IF origine%<>0 THEN RETURN OFF_USER_EVENT DesactiveProprietes()
SELECT actevent% CASE 3 objevent% = BIN_AND(WParam%,MaskPanoramic%) llevent% = BIN_AND(LParam%,MaskHigh%)/65536 ttevent% = BIN_AND(LParam%,MaskLow%) LEFT objevent%,llevent% : TEXT EditProp%(1,2),STR$(llevent%) : SauvegardeGridCopie(1,2) TOP objevent%,ttevent% : TEXT EditProp%(1,3),STR$(ttevent%) : SauvegardeGridCopie(1,3) CASE 4 objevent% = BIN_AND(WParam%,MaskPanoramic%) wwevent% = BIN_AND(LParam%,MaskHigh%)/65536 hhevent% = BIN_AND(LParam%,MaskLow%) WIDTH objevent%,wwevent% : TEXT EditProp%(1,4),STR$(wwevent%) : SauvegardeGridCopie(1,4) HEIGHT objevent%,hhevent% : TEXT EditProp%(1,5),STR$(hhevent%) : SauvegardeGridCopie(1,5)
END_SELECT ActiveProprietes()
ON_USER_EVENT Userevent RETURN
' ==============================================================================
' ----- BASCULEMENT VERS LE CONSTRUCTEUR ----- SUB BasculeVersEditeur()
DIM_LOCAL chem$ , hnd% , exe$ , res% , wpar%, lpar%
exe$="Editeur.exe" : hnd%=DLL_CALL1("GetProcessWindowHandle",ADR(exe$)) IF hnd%=0 chem$=DIR_CURRENT$+"\Editeur.exe" : EXECUTE chem$ : PAUSE 200 ELSE wpar%=HEX("FF010000") lpar%=0 res%=DLL_CALL2("SendUserEvent",wpar%,lpar%) END_IF MINIMIZE 0
END_SUB
J'ai mis des messages pour voir ce qu'il se passe et voilà le résultat : Lorsque l'Editeur et le Constructeur sont ouvert tout les 2 : Si je me positionne sur l' Editeur et je clique sur basculer vers le constructeur c'est la routine UserEvent de l'Editeur qui se déclenche. Si je me positionne sur le Constructeur et je clique sur basculer vers l'Editeur c'est la routine UserEvent du Constructeur qui se déclenche. Cela ne me semble pas normal ! Et aucune des 2 routines ne passent par MESSAGE "NORMAL 0"Voilà pour le moment ou j'en suis. Je te souhaite une bonne journée. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 6 Mai 2022 - 9:49 | |
| Ok. Alors recharge KGF.dll et essaie ceci: programme AAA: - Code:
-
' test_GetCurrentWindowState.bas
label rappeler, tester dim res%, hnd%, titre$, wpar%, lpar% titre$ = "BBB"
caption 0,"AAA" alpha 1 : top 1,10 : left 1,10 : caption 1,"Handle du programme BBB:" edit 2 : top 2,40 : left 2,10 : width 2,100 button 3 : top 3,70 : left 3,10 : caption 3,"Rappeler BBB" on_click 3,rappeler button 4 : top 4,70 : left 4,110 : caption 4,"Tester BBB" on_click 4,tester dll_on "KGF.dll" end rappeler: hnd% = dll_call2("GetWindowByTitle",0,adr(titre$)) text 2,str$(hnd%) res% = dll_call1("ForceWindowToForeground",hnd%) wpar% = hex("FF010000") lpar% = 0 res% = dll_call3("SendUserEventToExternal",hnd%,wpar%,lpar%) return
tester: hnd% = dll_call2("GetWindowByTitle",0,adr(titre$)) text 2,str$(hnd%) res% = dll_call1("GetCurrentWindowState",hnd%) select res% case -1: message "erreur" case 0: message "état normal" case 1: message "état minimisé" case 2: message "état maximisé" end_select return et programme BBB: - Code:
-
' test_GetCurrentWindowState_BBB.bas
label minimiser, maximiser, Userevent
dim res%, actevent%, llevent%, tlevent%, wevent%, hevent%, origine%, WParam%, LParam%
dim m1% : m1% = 0 - 1 dim ExternalOrigin% : ExternalOrigin% = hex("FF000000") dim MaskOrigin% : MaskOrigin% = hex("FF000000") dim MaskOperation% : MaskOperation% = hex("00FF0000") dim MaskHigh% : MaskHigh% = hex("FFFF0000") dim MaskLow% : MaskLow% = hex("0000FFFF") ' dim MaskPanoramic% : MaskPanoramic% = hex("00000000")
caption 0,BBB alpha 2 : top 2,10 : left 2,10 : caption 2,"Handle(0):" edit 1 : top 1,40 : left 1,10 : text 1,str$(handle(0))
button 3 : top 3,80 : left 3,10 : caption 3,"Minimiser" on_click 3,minimiser button 4 : top 4,80 : left 4,110 : caption 4,"Maximiser" on_click 4,maximiser on_user_event Userevent end
minimiser: minimize 0 return
maximiser: maximize 0 return
Userevent:
WParam% = USER_EVENT_WPARAM LParam% = USER_EVENT_LPARAM
origine% = BIN_AND(WParam%,MaskOrigin%) actevent% = BIN_AND(WParam%,MaskOperation%)/65536 if origine%=ExternalOrigin% : ' ici, on a un évènement externe if actevent%=1 : ' est-ce la commande pour NORMAL ? normal 0 return end_if ' ... ici, traiter éventuellement d'autres codes action ' ... end_if if origine%<>0 then return OFF_USER_EVENT ' DesactiveProprietes()
SELECT actevent% CASE 3 objevent% = BIN_AND(WParam%,MaskPanoramic%) llevent% = BIN_AND(LParam%,MaskHigh%)/65536 ttevent% = BIN_AND(LParam%,MaskLow%) LEFT objevent%,llevent% : TEXT EditProp%(1,2),STR$(llevent%) : SauvegardeGridCopie(1,2) TOP objevent%,ttevent% : TEXT EditProp%(1,3),STR$(ttevent%) : SauvegardeGridCopie(1,3) CASE 4 objevent% = BIN_AND(WParam%,MaskPanoramic%) wwevent% = BIN_AND(LParam%,MaskHigh%)/65536 hhevent% = BIN_AND(LParam%,MaskLow%) WIDTH objevent%,wwevent% : TEXT EditProp%(1,4),STR$(wwevent%) : SauvegardeGridCopie(1,4) HEIGHT objevent%,hhevent% : TEXT EditProp%(1,5),STR$(hhevent%) : SauvegardeGridCopie(1,5)
END_SELECT ' ActiveProprietes()
ON_USER_EVENT Userevent RETURN
Le programme BBB est celui qui peut être minimisé, soit par le bouton (utilise la commande MINIMIE de Panoramic) soit par l'icône dans la barre de titre. Le programme AAA rappelle le programme BBB caché, quelque soit le moyen par lequel il a été minimisé. | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Ven 6 Mai 2022 - 10:55 | |
| Bonjour Klaus Bonne nouvelle... Ca fonctionne parfaitement ! Je tenterai me mettre en place tout à l'heure dans mes 2 programmes. Merci Klaus ! | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Ven 6 Mai 2022 - 12:57 | |
| Je viens de reprendre mes 2 codes avec tout ce que tu as indiqué et ça le fonctionne toujours pas. J'ai passé encore 1h à tout modifier. Je n'ai plus le temps je dois y aller. A ce soir pour la suite.... | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Ven 6 Mai 2022 - 19:29 | |
| Bonsoir Klaus Pas encore eu le temps de regarder. Je vais faire ça dans la soirée... En fait pour le moment Il ne se passe rien. Mais en même temps il n'y a pas de bug ! Mais je vais vérifier les paramètres et chaque ligne de code que tu indique. Et ensuite si nécessaire, je te glisserai les codes... J'avoue qu'avec le USER_EVENT c'est un peu plus délicat à installer mais si ça peut marcher ça sera génial ! A tout à l'heure. | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Ven 6 Mai 2022 - 21:34 | |
| Bonsoir Klaus. Je fais enfin un retour ! Bon, la bonne nouvelle c'est que j'ai réussi à mettre en place le système avec mes 2 programmes : Editeur et Constructeur. Ce qui est plus étrange c'est que je dois rajouter un message après la ligne de récupération du handle comme ceci : exe$="Constructeur.exe" hnd%=dll_call1("GetProcessWindowHandle",adr(exe$))
MESSAGE "Handle "+STR$(hnd%)Si je retire ce message la fenêtre minimisée ne réapparait pas. Surement un problème de synchronisation j'imagine... J'ai tenté une pause de 1000ms mais ça ne fonctionne pas. Voilà pour le moment. J'espère que ce retour va te permettre d'avancer dans ce fonctionnement que je trouve génial. Certes, Un peu délicat à mettre en place mais c'est bluffant ! | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 6 Mai 2022 - 23:42 | |
| A la place de - Code:
-
exe$="Constructeur.exe" hnd%=dll_call1("GetProcessWindowHandle",adr(exe$)) pourquoi n'utilises pas: - Code:
-
hnd% = dll_call2("GetWindowByTitle",0,adr(titre$)) La fonction GetProcessWindowHandle est beaucoup plus gourmande en resources machine et a besoin de plus de temps. Je doute que ta pause de 1000 ms soit suffisante. Le premier paramètre de la fonction GetWindowByTitle donne le mode opératoire. 0 signifie qu'on cherche le titre extact. Si tu passes 1 à la place, on cherche le premier process trouvé dont le nom contient la chaîne de caractères passée en critère. A toit de choisir. | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 7 Mai 2022 - 11:31 | |
| Bonjour Klaus, - Citation :
- La fonction GetProcessWindowHandle est beaucoup plus gourmande en resources machine et a besoin de plus de temps
Ben oui j'ai un titre avec la version du programme qui donc évolue avec le temps c'est pour cela que je procédais comme ça. - Citation :
- Si tu passes 1 à la place, on cherche le premier process trouvé dont le nom contient la chaîne de caractères passée en critère
Oui donc là ça change tout ! Je n'avais pas remarqué cette subtilité. Et ça me permet de garder mes titres. C'est parfait ! Encore un GRAND GRAND merci Klaus. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 7 Mai 2022 - 11:45 | |
| YES !!!
Merci pour ta patience et ta persévérance ! | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 7 Mai 2022 - 15:32 | |
| Un problème en appel un autre... Sur le constructeur lorsqu'un projet est ouvert j'ai donc plusieurs Forms autre que le Form 0 d'ouvert. J'utilise la fonction MINIMIZE pour les réduire ou HIDE pour les cacher mais comment procéder lors du rappel ?
Par défaut les noms sont Form_1, Form_2, etc. mais comme les captions peuvent être modifiés ce n'est pas un fonctionnement sûr !Ben non désolé j'ai tout ce qu'il me faut.... C'est dans la routine ON_USER_EVENT... Encore désolé !!! Je n'ai pas encore l'automatisme mais ça va venir... | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 7 Mai 2022 - 18:13 | |
| Tu pourrais même en profiter pour implémenter un arrêt forcè du programe distant - du Constructeur dans ton cas. Dans le programme "maître", là où tu envoies le USER_EVENT, tu mets hex("FF020000") dans wpar%, puis tu l'envoies. Dans le programme recevant le USER_EVENT - le Constructeur dans don cas, tu fais ceci: - Code:
-
Userevent:
WParam% = USER_EVENT_WPARAM LParam% = USER_EVENT_LPARAM
origine% = BIN_AND(WParam%,MaskOrigin%) actevent% = BIN_AND(WParam%,MaskOperation%)/65536 if origine%=ExternalOrigin% : ' ici, on a un évènement externe if actevent%=1 : ' est-ce la commande pour NORMAL ? normal 0 return end_if if actevent%=2 ; ' c'est la demande d'arrêt forcé ' éventuellement effectuer une sauvegarde ici terminate end_if ' ... ici, traiter éventuellement d'autres codes action ' ... end_if if origine%<>0 then return
etc. Il n'y a de limite que ton imagination. Tu peux parfaitement piloter à distance n'importe quel programme Panoramic avec ce mécanisms, à condition de coder les actions correspondantes dans ces programmes. Tu peux aller plus loin: avant d'envoyer le USER_EVENT, tu fais lpar% = handle(0). Tu indiques ainsi "l'expéditeur" de la comande. Et le programme distant peut ainsi répondre en envoyant, à son tout, un USER_EVENT au programme dont il vient de recevoir le handle dans USER_EVENT_LPARAM. Et le programme d'origine recevra ainsi un évènement USER_EVENT (dont le code actevent% est à définir séparémént et à placer dans wpar% selon la formule hex("FFaa0000") avec aa étant ce code action de réponse. Les 16 bits de poids faible de wpar% ainsi que les 32 bits de lpar% sont disponibles pour indiquer la réponse à fournir au programme appelant. Enfin, tu vois qu'il y a de quoi s'amuser... | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 7 Mai 2022 - 18:47 | |
| oui oui effectivement je commence à comprendre ! J'ai déjà quelques idées en tête... Bon pour le moment je suis en train de terminer la mise a jour de la fusion des 2 dossiers Constructeur + Editeur. Je mets les différents paramètres en place pour chaque programmes. Position des fenêtres, ouverture des fichiers, etc. Je suis en train d'unifier tout ça et jongler entre les 2 programmes... Merci pour tout Klaus et si besoin je reviens vers toi. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 8 Mai 2022 - 1:05 | |
| J'ai ajouté une nouvelle fonction à KGF.dll: - Code:
-
res% = dll_call2("CopyPanoramicToPanoramic",org%,dest%)
Cette fonction copie du texte d'une origine à une autre, que ce soit à l'intérieur d'un même programme Panoramic ou d'un programme à un autre. Les deux paramètres peuvent être, indépendemment, d'un des types suivants; handle(memo%) handle(list%) adr(s$) Voici une démo. Saisir quelques lignes dans le mémio à gauche, puis cliquer sur le bouton "Copier"... - Code:
-
' test_CopyPanoramicToPanoramic.bas
label copier
dim res%, s$
full_space 0 memo 1 : top 1,10 : left 1,10 : width 1,200 : height 1,400 : bar_both 1 memo 2 : top 2,10 : left 2,220 : width 2,200 : height 2,400 : bar_both 2 list 3 : top 3,10 : left 3,430 : width 3,200 : height 3,400
button 10 : top 10,430 : left 10,10 : caption 10,"Copier" : on_click 10,copier
dll_on "KGF.dll"
end
copier: res% = dll_call2("CopyPanoramicToPanoramic",handle(1),handle(2)) res% = dll_call2("CopyPanoramicToPanoramic",handle(1),handle(3)) s$ = string$(5000," ") res% = dll_call2("CopyPanoramicToPanoramic",handle(1),adr(s$)) s$ = trim$(s$) message s$ return Maintenant, avec l'envoi d'un USER_EVENT, un programme Panoramic peut signaler le handle d'un MEMO, d'un LIST ou simplement d'une variable sgtring, à un autre programme Panoramic en passant le handle du MEMO dans lpar%. Le rpogramme Panoramic peut alors facilement récupérer le texte da,s un objet MEMO ou LIST local ou même dans une variable string. Voici le moyen ultra-facile de communiquer d'un programme à un autre. | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 8 Mai 2022 - 1:37 | |
| Hummmm alors là c'est que du bonheur ! Je n'ai pas encore tester ton code mais j'ai déjà une idée pour l'utiliser... Le problème c'est que je n'en suis pas encore là mais ça va pas tarder ! Je vais écrire la routine permettant de transformer les objets en code... Et ensuite j'enverrai avec ta commande du constructeur vers l'éditeur le fichier code des objets avec un message indiquant que le code est dans les presse-papier. Il n'y aura plus qu'a se placer dans le code et valider le collage par un CTRL+V. Et hop le tour est joué !!! Mais dis moi c'est pas noël ????!!!!!! | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 8 Mai 2022 - 18:16 | |
| J'ai ajouté une nouvelle fonction: - Code:
-
res% = dll_call3("SelectFileToOpenEX",adr(racine$),adr(filter$),adr(f$)) res%<=0 = erreur ou abandon res%>0 = indice du type de fichier choisi dans le filtre (1, 2, ...) Exemple: - Code:
-
racine$ = dir_current$ : ' ou n'importe quel chemin filte$ = "Fichiers Panoramic (*.bas)|*.bas|fichers BMP (*.bmp)|*.bmp" f$ = string$(255," ") res% = dll_call3("SelectFileToOpenEX",adr(racine$),adr(filter$),adr(f$)) f$ = trim$(f$) e$ = lower$(file_extract_extension$(f$)) if f$="" then ... <=========== ici, on a cliqué sur Abandon if e$="" : ' <========= ici, on n'a pas saisi d'extension select res% case 1: f$ = f$ + ".bas" case 2: f$ = f$ + ".bmp" end_select end_if : ' ici, l'extension manquante a été complétée
| |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 8 Mai 2022 - 18:35 | |
| Heu y a un problème Klaus ! je crois que c'est avec la fonction KGF ou la dll... | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 8 Mai 2022 - 19:32 | |
| As-tu rechargé KGF.dll ? La fonction est nouvelle... | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 8 Mai 2022 - 19:42 | |
| ben oui bien sûr ! | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 8 Mai 2022 - 23:49 | |
| Bon, j'ai pris les grands moyens. J'ai entièrement regénéré KGF.dll et créé un nouveau ZIP que je viens de copier sur mon site. Maintenant, ça marchera. | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Lun 9 Mai 2022 - 8:20 | |
| Bonjour Klaus, Oui cette fois ça marche ! Du coup j'intègre la fonction. Merci pour ta réactivité. Je vais pouvoir développer maintenant la sauvegarde sous forme de code... | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 14 Mai 2022 - 11:24 | |
| Bonjour Klaus ! Je n'avais pas fait attention la première fois mais tu as crée la fonction SelectFileToOpenEX et du coup pourrais tu s'il te plait créer SelectFileToSaveEX ? Car c'est plutôt lors de la sauvegarde que se pose la question du format. Donc avec une boite de dialogue SAVE-DIALOG. Et pendant qu'on y est : - est il possible de déterminer le chemin ou va s'ouvrir la fenêtre de dialogue ? (Jai modifié le DIR_CURRENT$ par le DIR_CHANGE mais cela ne fonctionne pas).- est il possible d'indiquer un nom de fichier qui sera visible dans la fenêtre de dialogue ? (Si le nom est déjà connu comme pour la sauvegarde d'un fichier déjà ouvert) Merci d'avance Klaus. PS : Encore une fois je m'y suis pris à l'envers... Donc pour le chemin c'est bon ! | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 15 Mai 2022 - 0:53 | |
| | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 15 Mai 2022 - 16:40 | |
| J'ai apporté une modification à la fonction existante SelectFileToOpenEX. J'ai ajouté un paramètre pour autoriser la création d'un nouveau dissier: - Code:
-
res% = dll_call4("SelectFileToOpenEX",adr(racine$),adr(filter$),opt%,adr(f$)) avec opt%=1 autoriser la création d'un dossier opt%=0 interdire la créatioin d'un dossier. Pui, j'ai ajouté ja fonction SelectFileToSaveEX: - Code:
-
res% = dll_call4("SelectFileToSaveEX",adr(racine$),adr(filter$),opt%,adr(f$)) Voici la démo avec ces modifications: - Code:
-
' SelectFileToOpenEX.bas
label tester, autretest, savetest dim f$, e$ dim res%, racine$, filter$ save_dialog 1 filter 1,"Fichiers Panoramic (*.bas)|*.bas|fichers BMP (*.bmp)|*.bmp" button 2 : caption 2,"Tester" : on_click 2,tester button 3 : caption 3,"Autre test" : left 3,110 : on_click 3,autretest button 4 : caption 4,"SaveEx test" : left 4,110 : top 4,40 : on_click 4,savetest dll_on "KGF.dll" end
tester: f$ = file_name$(1) if f$="_" then return e$ = lower$(file_extract_extension$(f$)) if e$=".bas" message "un a un fichier Panoramic" return end_if if e$=".bmp" message "un a un fichier bitmap" return end_if message "l'extension est invalide: "+e$ return autretest: racine$ = dir_current$ filter$ = "Fichiers Panoramic (*.bas)|*.bas|fichers BMP (*.bmp)|*.bmp"
f$ = string$(255," ") res% = dll_call4("SelectFileToOpenEX",adr(racine$),adr(filter$),1,adr(f$)) f$ = trim$(f$) if f$="" then return e$ = lower$(file_extract_extension$(f$))
if res%<=0 message "abandon" return end_if if e$="" select res% case 1: f$ = f$ + ".bas" case 2: f$ = f$ + ".bmp" end_select end_if message "ok: "+f$+chr$(13)+chr$(10)+"indice du type = "+str$(res%) return savetest: racine$ = dir_current$ filter$ = "Fichiers Panoramic (*.bas)|*.bas|fichers BMP (*.bmp)|*.bmp"
f$ = string$(255," ") res% = dll_call4("SelectFileToSaveEX",adr(racine$),adr(filter$),1,adr(f$)) f$ = trim$(f$) if f$="" then return e$ = lower$(file_extract_extension$(f$))
if res%<=0 message "abandon" return end_if if e$="" select res% case 1: f$ = f$ + ".bas" case 2: f$ = f$ + ".bmp" end_select end_if message "ok: "+f$+chr$(13)+chr$(10)+"indice du type = "+str$(res%) return | |
| | | Contenu sponsorisé
| Sujet: Re: KGF_dll - nouvelles versions | |
| |
| | | | KGF_dll - nouvelles versions | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |