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 | |
|
+12JL35 Oscaribout bignono Pedro pascal10000 silverman Jicehel papydall Minibug Marc Yannick Klaus 16 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 Dim 7 Juil 2019 - 23:56 | |
| @papydall: - Citation :
- A propos de la doc, les % (à part celui de dest%) sont à remplacer par des dollars $
Non, c'est bien "%". Il faut passer une valeur entière, bien sûr, car Panoramic ne sait pas passer un string directement via DLL_CALLx. Comme valeur entière, on a le choix: adr(s$) handle(memo%) object_internal(memo%) handle(list%)Dans tous ces cas, le contenu est pris par la DLL comme chaîne de caractères. Ceci est la nouvelle façon de passer des chaînes de caractères à KGF.dll (en d'en recevoir également, d'ailleurs). Pour ce qui est de l'autre problème, je n'ai effectivement pas encore réalisé une fonction permettant de soumettre une nouvelle URL à un browser ainsi créé. Actuellement, il faut le supprimer et le recréer avec la nouvelle URL. Je vais regarder cela. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 8 Juil 2019 - 1:06 | |
| @Papydall: J'ai rem.dl sur mon site internet (téléchargeable par ma signature). Ellle contient une nouvelle fonction (pas encore documentée, encore en évolution, mais qui devrait résoudre ton problème): - Code:
-
res% = dll_call3("BrowserNavigate",hnd%, act%, par%) Il faut passer act% comme 1 (naviguer vers une URL), et par% comme adr(url$). Comme dans cet exemple: - Code:
-
dim res%, url$ url$ = "Google.fr" res% = dll_call3("BrowserNavigate",hnd%, 1, adr(url$)) avec hnd% étant le handle retourné par BrowserCreate. Dis-moi ce ue tu en penses. J'ai prévu d'autres actions: page précédente, page suivante, page d'accueil, arrêter chargement de la page en cours, etc | |
| | | papydall
Nombre de messages : 7009 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: KGF_dll - nouvelles versions Lun 8 Juil 2019 - 1:10 | |
| | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 8 Juil 2019 - 1:19 | |
| Oui, j'ai bien compris ! Essaye, après un premier lancement par BrowserCreate et sa première URL, depasser à la suivante par BrowserNavigate comme indiqué ci-dessus, sans arrêter le browser. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 8 Juil 2019 - 11:28 | |
| @Papydall: Si tu télécharges KGF.dll maintenant, à partir de mon site, tu as 3 nouveaux codes actions pour la fonction BrowserNavigate: 2 = naviguer vers la page d'accueil 3 = naviguer vers la page précédente 4 = naviguer vers la page suivante Dans les 3 cas, le 3ème paramètre est ignoré. Le code action 1 reste inchangé: 1 = naviguer vers l'URL dont l'adresse est indiquée dans le 3ème paramètre
| |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 8 Juil 2019 - 18:08 | |
| @Papydall: correction d'un petit bug dans BrowserCreate et BrowserNavigate (à 18h07). A recharger... EDIT 9/7/2019 à 0:46:nouvelle correction. Voici ce qui marche chez moi, maintenant: - Code:
-
' Mappy.bas
label lancer, arreter, google, home, prec, suiv
dim res%, WB%, Browser$, NomBrowser$, Options$, url$, ID%, hnd%, x%, y% dim google$
google$ = "google.fr"
dll_on "KGF.dll" full_space 0 panel 1 : top 1,30 : left 1,200 : width 1,800 : height 1,600 button 10 : top 10,10 : left 10,10 : caption 10,"Start" : on_click 10,lancer button 11 : top 11,35 : left 11,10 : caption 11,"End" : on_click 11,arreter button 12 : top 12,70 : left 12,10 : caption 12,"Google" : on_click 12,google button 13 : top 13,95 : left 13,10 : caption 13,"Accueil" : on_click 13,home button 14 : top 14,120 : left 14,10 : caption 14,"Précédant" : on_click 14,prec button 15 : top 15,145 : left 15,10 : caption 15,"Suivant" : on_click 15,suiv combo 20 : top 20,10 : left 20,200 item_add 20,"Opera" : ' première fenêtre enfant est l'affichage seul item_add 20,"Opera Kiosk" : ' première fenêtre enfant est l'affichage seul item_add 20,"Firefox" : ' pas de fenêtre enfant item_add 20,"Firefox Kiosk" : ' pas de fenêtre enfant item_add 20,"Pale Moon" : ' pas de fenêtre enfant item_add 20,"Pale Moon Kiosk" : ' pas de fenêtre enfant item_add 20,"Chrome" : ' première fenêtre enfant est l'affichage seul item_add 20,"Chrome Kiosk" : ' première fenêtre enfant est l'affichage seul item_add 20,"Edge (inactif)" res% = dll_call2("SelectComboBoxItem",handle(20),3)
end
lancer: select item_index(20) case 1: ' Opera Options$ = "" url$ = "https://fr.mappy.com/#/0/M2/THome/N151.12061,6.11309,2.3527,48.8543/Z11/" Browser$ = "opera" NomBrowser$ = "Mappy -" case 2: ' Opera Options$ = "" url$ = "https://fr.mappy.com/#/0/M2/THome/N151.12061,6.11309,2.3527,48.8543/Z11/" Browser$ = "operakiosk" NomBrowser$ = "Mappy -" case 3: ' Firefox ' pour Firefox: (créer au préalable le profile UtilisateurKGF" avec l'URL "config=profiles" Options$ = " -P "+chr$(34)+"UtilisateurKGF"+chr$(34)+" -no-remote" url$ = "https://fr.mappy.com/#/0/M2/THome/N151.12061,6.11309,2.3527,48.8543/Z11/" Browser$ = "firefox" NomBrowser$ = "Mappy -" case 4: ' Firefox Kiosk ' pour Firefox: (créer au préalable le profile UtilisateurKGF" avec l'URL "config=profiles" Options$ = " -P "+chr$(34)+"UtilisateurKGF"+chr$(34)+" -no-remote" url$ = "https://fr.mappy.com/#/0/M2/THome/N151.12061,6.11309,2.3527,48.8543/Z11/" Browser$ = "firefoxkiosk" NomBrowser$ = "Mappy -" case 5: ' Pale Moon Options$ = "" url$ = "https://fr.mappy.com/#/0/M2/THome/N151.12061,6.11309,2.3527,48.8543/Z11/" Browser$ = "palemoon" NomBrowser$ = "Mappy -" case 6: ' Pale Moon Kiosk Options$ = "" url$ = "https://fr.mappy.com/#/0/M2/THome/N151.12061,6.11309,2.3527,48.8543/Z11/" Browser$ = "palemoonkiosk" NomBrowser$ = "Mappy -" case 7: ' Chrome Options$ = "-incognito --new-window" url$ = "https://fr.mappy.com/#/0/M2/THome/N151.12061,6.11309,2.3527,48.8543/Z11/" Browser$ = "chrome" NomBrowser$ = "Mappy -" case 8: ' Chrome Kiosk Options$ = "-incognito --new-window" url$ = "https://fr.mappy.com/#/0/M2/THome/N151.12061,6.11309,2.3527,48.8543/Z11/" Browser$ = "chromekiosk" NomBrowser$ = "Mappy -" case 9: ' Edge message "Désolé - Edge n'est pas utilisable ici !" return Options$ = "" url$ = "" Browser$ = "microsoft-edge:https://fr.mappy.com/#/0/M2/THome/N151.12061,6.11309,2.3527,48.8543/Z11/" NomBrowser$ = "MicrosoftEdge" end_select ID% = dll_call5("BrowserCreate",handle(1),adr(Browser$),adr(NomBrowser$),adr(Options$),adr(url$)) return arreter: ID% = dll_call1("BrowserDelete",ID%) return google: res% = dll_call3("BrowserNavigate",ID%,1,adr(google$)) return home: res% = dll_call3("BrowserNavigate",ID%,2,0) return prec: res% = dll_call3("BrowserNavigate",ID%,3,0) return suiv: res% = dll_call3("BrowserNavigate",ID%,4,0) return end
Choisir un des types de browser dans la combo, puis cliquer sur "Start". Attendre que le browser soit capturé dans le panel et affiche la page de mappy. Puis, essayer "Google". La page d'accueil de Google.fr s'affichera. Les boutons "Précédant" et "Suivant" permettront de basculer entre les deux pages. Le bouton "Accueil" appellera la page d'accueil définie dans le browser. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 21 Juil 2019 - 12:19 | |
| Nouvelle version: KGF.dll V9.02 du 21/07/2019
Nouveautés: - objet IconListBox: correction d'un big lors d'un clic dans uune zone "blanche" de l'objet
Modules modifiés: KGF.dll
La doc et les sources sont inchangées.
Cette version corrige le plantage avec le message "index out of limits" en cliquant sur une ligne ne contenant pas d'élément défini. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 3 Nov 2019 - 11:04 | |
| Nouvelle version: KGF.dll V9.03 du 03/11/2019
Nouveautés: - fonction SearchStringInFastTextFile: suppression du CR LF en excédent
Modules modifiés: KGF.dll
La doc et les sources sont inchangées. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 29 Juin 2020 - 14:43 | |
| Nouvelle version: KGF.dll V9.04 du 29/06/2020Nouveautés: - nouvel objet KMenu avec des fonctions de gestionModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Voici une démo: - Code:
-
' test_KMenu.bas
label montrer, user
dim res%, KM1%, KM2%, tit$, font$, s$, id$, ident%, row%
dll_on "KGF.dll"
' *** menu principal ' création du menu avec sa police et sa taille tit$ = "Mon menu" font$ = "Arial" KM1% = dll_call5("CreateKMenu",17, handle(0), adr(tit$), adr(font$), 12)
' définition des couleurs res% = dll_call6("KMenuColors",KM1%,hex("FFFFFF"),hex("FFFFFF"),hex("383D41"),hex("A5A5A5"),hex("FF0000"))
' création de 3 lignes s$ = "Aaaaaaaaaaa" id$ = "opt1" res% = dll_call3("KMenuAddRow",KM1%, adr(s$), adr(id$))
s$ = "Bbbbbb bbbbb" id$ = "opt2" res% = dll_call3("KMenuAddRow",KM1%, adr(s$), adr(id$))
s$ = "Ccccccccc ccc ccccccccc" id$ = "opt3" res% = dll_call3("KMenuAddRow",KM1%, adr(s$), adr(id$))
' *** sousmenu attaché à la ligne 2 du menu principal ' création du menu tit$ = "Mon sousmenu" font$ = "Arial" KM2% = dll_call5("CreateKMenu",15, handle(0), adr(tit$), adr(font$), 12)
' définition des couleurs res% = dll_call6("KMenuColors",KM2%,hex("FFFFFF"),hex("FFFFFF"),hex("383D41"),hex("A5A5A5"),hex("FF0000"))
' création de 4 lignes s$ = "1111111" id$ = "opt31" res% = dll_call3("KMenuAddRow",KM2%, adr(s$), adr(id$))
s$ = "22222" id$ = "opt32" res% = dll_call3("KMenuAddRow",KM2%, adr(s$), adr(id$))
s$ = "3333333333333" id$ = "opt33" res% = dll_call3("KMenuAddRow",KM2%, adr(s$), adr(id$)) s$ = "44444444" id$ = "opt34" res% = dll_call3("KMenuAddRow",KM2%, adr(s$), adr(id$))
' attacher le sousmenu à la ligne 2 du menu principal res% = dll_call3("KMenuAttach",KM2%,KM1%,2)
button 1 : caption 1,"Montrer" : on_click 1,montrer
on_user_event user
end
montrer: ' afficher et activer le menu principal res% = dll_call4("KMenuShow", KM1%, 50, 80, 1)
' voici comment cacher un menu affiché (4 paramètre est zéro, le reste est ignoré) ' res% = dll_call4("KMenuShow", KM1%, 0, 0, 0) ' message "Show="+str$(res%)
return
user: if user_event_wparam<>hex("0F010000") then return : ' ignorer ici ce qui n'est pas issu d'un KMenu ' évènement généré par un clic dans une ligne terminale d'un menu (non attachée à un sousmenu) id$ = string$(255," ") ' l'identifiant du menu est dans les 16 bits de valeur forte de LPARAM ident% = user_event_lparam/65536 ' le numéro de ligne est dans les 16 bits de valeur faible de LPARAM row% = bin_and(user_event_lparam,65535) ' chercher l'identifiant de la ligne (c'est un texte !) res% = dll_call3("KMenuGetID",Ident%, Row%, adr(id$)) id$ = trim$(id$) message "USerEvent: WParam="+hex$(user_event_wparam)+" LParam="+hex$(user_event_lparam)+" ID="+id$ return
end
| |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 29 Juin 2020 - 21:04 | |
| Nouvelle version: KGF.dll V9.05 du 29/06/2020
Nouveautés: - SearchStringList: légère accélération de la recherche sur un fichier trié en mode 2
Modules modifiés: KGF.dll KGF.chm
La doc et les sources sont à jour. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 30 Juin 2020 - 12:58 | |
| Nouvelle version: KGF.dll V9.06 du 30/06/2020Nouveautés: - KMenu: possibilité d'avoir des lignes cochables - nouvelle fonction KMenuGetMark - KMenuLoad et KMenuAddRow: ajout de 2 paramètres (pour gérer cette nouvelle possibilité)Modules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Voici le programme de démo adapté à cette version: - Code:
-
' test_KMenu.bas
label montrer, user
dim res%, KM1%, KM2%, tit$, font$, s$, s1$, id$, ident%, row%
dll_on "KGF.dll"
' *** menu principal ' création du menu avec sa police et sa taille tit$ = "Mon menu" font$ = "Arial" KM1% = dll_call5("CreateKMenu",17, handle(0), adr(tit$), adr(font$), 12)
' définition des couleurs res% = dll_call6("KMenuColors",KM1%,hex("FFFFFF"),hex("FFFFFF"),hex("383D41"),hex("A5A5A5"),hex("FF0000"))
' création de 3 lignes s$ = "Aaaaaaaaaaa" id$ = "opt1" res% = dll_call5("KMenuAddRow",KM1%, adr(s$), adr(id$),0,0)
s$ = "Bbbbbb bbbbb" id$ = "opt2" res% = dll_call5("KMenuAddRow",KM1%, adr(s$), adr(id$),0,0)
s$ = "Ccccccccc ccc ccccccccc" id$ = "opt3" res% = dll_call5("KMenuAddRow",KM1%, adr(s$), adr(id$),1,1)
' *** sousmenu attaché à la ligne 2 du menu principal ' création du menu tit$ = "Mon sousmenu" font$ = "Arial" KM2% = dll_call5("CreateKMenu",15, handle(0), adr(tit$), adr(font$), 12)
' définition des couleurs res% = dll_call6("KMenuColors",KM2%,hex("FFFFFF"),hex("FFFFFF"),hex("383D41"),hex("A5A5A5"),hex("FF0000"))
' création de 4 lignes s$ = "1111111" id$ = "opt31" res% = dll_call5("KMenuAddRow",KM2%, adr(s$), adr(id$),0,0)
s$ = "22222" id$ = "opt32" res% = dll_call5("KMenuAddRow",KM2%, adr(s$), adr(id$),0,0)
s$ = "3333333333333" id$ = "opt33" res% = dll_call5("KMenuAddRow",KM2%, adr(s$), adr(id$),1,1) s$ = "44444444" id$ = "opt34" res% = dll_call5("KMenuAddRow",KM2%, adr(s$), adr(id$),0,0)
' attacher le sousmenu à la ligne 2 du menu principal res% = dll_call3("KMenuAttach",KM2%,KM1%,2)
button 1 : caption 1,"Montrer" : on_click 1,montrer
on_user_event user
end
montrer: ' afficher et activer le menu principal res% = dll_call4("KMenuShow", KM1%, 50, 80, 1)
' voici comment cacher un menu affiché (4 paramètre est zéro, le reste est ignoré) ' res% = dll_call4("KMenuShow", KM1%, 0, 0, 0) ' message "Show="+str$(res%)
return
user: s$ = "" if user_event_wparam=hex("0F010000") then s$ = "Clic" : ' ligne non cochable if user_event_wparam=hex("0F020000") then s$ = "Coche" : ' ligne cochable if s$="" then return : ' aucun des deux cas ' évènement généré par un clic dans une ligne terminale d'un menu (non attachée à un sousmenu) id$ = string$(255," ") ' l'identifiant du menu est dans les 16 bits de valeur forte de LPARAM ident% = user_event_lparam/65536 ' le numéro de ligne est dans les 16 bits de valeur faible de LPARAM row% = bin_and(user_event_lparam,65535) ' chercher l'identifiant de la ligne (c'est un texte !) res% = dll_call3("KMenuGetID",Ident%, Row%, adr(id$)) id$ = trim$(id$) s1$ = "Menu 1 ligne 3: " res% = dll_call2("KMenuGetMark",KM1%,3) select res% case 0: s1$ = s1$ + "non cochable" case 1: s1$ = s1$ + "cochable non coché" case 2: s1$ = s1$ + "cochable coché" end_select s1$ = s1$ + " Menu 2 ligne 3: " res% = dll_call2("KMenuGetMark",KM2%,3) select res% case 0: s1$ = s1$ + "non cochable" case 1: s1$ = s1$ + "cochable non coché" case 2: s1$ = s1$ + "cochable coché" end_select message "USerEvent "+s$+ ": WParam="+hex$(user_event_wparam)+" LParam="+hex$(user_event_lparam)+" ID="+id$+chr$(13)+chr$(10)+s1$ return
end
Remarque: la 3ème ligne du menu principal est cochable et cochée par défaut. la 3ème ligne du sousmenu est cochable et chochée par defaut. Un clic dans une ligne cochable inverse son état: cochée ==> non cochée ==> cochée ... Ce clic génère également un USER_EVENT différent que celui d'un clic dans une ligne terminale non cochable, mais les informations retournées sont les mêmes. Voici une capture: ATTENTION !
Pour ceux parmi vous qui veulent essayer, prenez KGF.dll sur mon WebDav, dossier "KGF dll". Sur mon site, le lien de téléchargement conduit vers une version qui a encore un bug. C'est corrigé sur le WebDav et le site internet va suivre, mais pour le moment, l'accès est bloqué. Désolé. | |
| | | Pedro
Nombre de messages : 1561 Date d'inscription : 19/01/2014
| Sujet: Commande SearchStringList. Mar 30 Juin 2020 - 16:07 | |
| Bonjour.
@Klaus.
Voici le résultat de mes tests effectués sur 1.000 recherches, avec la fonction SearchStringList, et la dernière version de kgf.dll.
37.579 sec si mode%=0 0.188 sec si mode%=1 0.156 sec si mode%=2
La différence de temps est vraiment énorme !
Un 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 Mar 30 Juin 2020 - 16:09 | |
| Merci, Pedro. Heureux que cela remplisse son rôle ! | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 1 Juil 2020 - 10:49 | |
| Nouvelle version: KGF.dll V9.07 du 01/07/2020Nouveautés: - KMenu: possibilité d'avoir des lignes actives et inactives - nouvelle fonction KMenuEnable - KMenuLoad et KMenuAddRow: ajout de 2 paramètres (pour gérer cette nouvelle possibilité)Modules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour, sur le site et sur le WebDav. Voici le programme de démo adapté à cette version: - Code:
-
' test_KMenu.bas
label montrer, user
dim res%, KM1%, KM2%, tit$, font$, s$, s1$, id$, ident%, row%
dll_on "KGF.dll"
' *** menu principal ' création du menu avec sa police et sa taille tit$ = "Mon menu" font$ = "Arial" KM1% = dll_call5("CreateKMenu",17, handle(0), adr(tit$), adr(font$), 12)
' définition des couleurs res% = dll_call6("KMenuColors",KM1%,hex("FFFFFF"),hex("FFFFFF"),hex("383D41"),hex("A5A5A5"),hex("FF0000"))
' création de 3 lignes s$ = "Aaaaaaaaaaa" id$ = "opt1" res% = dll_call6("KMenuAddRow",KM1%, adr(s$), adr(id$),0,0,1)
s$ = "Bbbbbb bbbbb" id$ = "opt2" res% = dll_call6("KMenuAddRow",KM1%, adr(s$), adr(id$),0,0,0)
s$ = "Ccccccccc ccc ccccccccc" id$ = "opt3" res% = dll_call6("KMenuAddRow",KM1%, adr(s$), adr(id$),1,1,0)
' *** sousmenu attaché à la ligne 2 du menu principal ' création du menu tit$ = "Mon sousmenu" font$ = "Arial" KM2% = dll_call5("CreateKMenu",15, handle(0), adr(tit$), adr(font$), 12)
' définition des couleurs res% = dll_call6("KMenuColors",KM2%,hex("FFFFFF"),hex("FFFFFF"),hex("383D41"),hex("A5A5A5"),hex("FF0000"))
' création de 4 lignes s$ = "1111111" id$ = "opt31" res% = dll_call6("KMenuAddRow",KM2%, adr(s$), adr(id$),0,0,0)
s$ = "22222" id$ = "opt32" res% = dll_call6("KMenuAddRow",KM2%, adr(s$), adr(id$),0,0,1)
s$ = "3333333333333" id$ = "opt33" res% = dll_call6("KMenuAddRow",KM2%, adr(s$), adr(id$),1,1,0) s$ = "44444444" id$ = "opt34" res% = dll_call6("KMenuAddRow",KM2%, adr(s$), adr(id$),0,0,0)
' attacher le sousmenu à la ligne 2 du menu principal res% = dll_call3("KMenuAttach",KM2%,KM1%,2)
button 1 : caption 1,"Montrer" : on_click 1,montrer
on_user_event user
end
montrer: ' afficher et activer le menu principal res% = dll_call4("KMenuShow", KM1%, 50, 80, 1)
' voici comment cacher un menu affiché (4 paramètre est zéro, le reste est ignoré) ' res% = dll_call4("KMenuShow", KM1%, 0, 0, 0) ' message "Show="+str$(res%)
return
user: s$ = "" if user_event_wparam=hex("0F010000") then s$ = "Clic" : ' ligne non cochable if user_event_wparam=hex("0F020000") then s$ = "Coche" : ' ligne cochable if s$="" then return : ' aucun des deux cas ' évènement généré par un clic dans une ligne terminale d'un menu (non attachée à un sousmenu) id$ = string$(255," ") ' l'identifiant du menu est dans les 16 bits de valeur forte de LPARAM ident% = user_event_lparam/65536 ' le numéro de ligne est dans les 16 bits de valeur faible de LPARAM row% = bin_and(user_event_lparam,65535) ' chercher l'identifiant de la ligne (c'est un texte !) res% = dll_call3("KMenuGetID",Ident%, Row%, adr(id$)) id$ = trim$(id$) s1$ = "Menu 1 ligne 3: " res% = dll_call2("KMenuGetMark",KM1%,3) select res% case 0: s1$ = s1$ + "non cochable" case 1: s1$ = s1$ + "cochable non coché" case 2: s1$ = s1$ + "cochable coché" end_select s1$ = s1$ + " Menu 2 ligne 3: " res% = dll_call2("KMenuGetMark",KM2%,3) select res% case 0: s1$ = s1$ + "non cochable" case 1: s1$ = s1$ + "cochable non coché" case 2: s1$ = s1$ + "cochable coché" end_select message "USerEvent "+s$+ ": WParam="+hex$(user_event_wparam)+" LParam="+hex$(user_event_lparam)+" ID="+id$+chr$(13)+chr$(10)+s1$ return
end
| |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 2 Juil 2020 - 15:08 | |
| Nouvelle version: KGF.dll V9.08 du 01/02/2020Nouveautés: - KMenu: lors de la ferleture d'un menu, il se replie rapidement du bas vers le haut, jusqu'à disparition - KMenuColor: une valeur de -1 dans n'importe quel paramètre de couleur préserve cette couleur. Elle ne sera pas changé lors de cet appel.Modules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour, sur le site et sur le WebDav. Voici le programme de démo: - Code:
-
' test_KMenu.bas
label montrer, user
dim res%, KM1%, KM2%, tit$, font$, s$, s1$, id$, ident%, row%
dll_on "KGF.dll"
' *** menu principal ' création du menu avec sa police et sa taille tit$ = "Mon menu" font$ = "Arial" KM1% = dll_call5("CreateKMenu",17, handle(0), adr(tit$), adr(font$), 12)
' définition des couleurs res% = dll_call6("KMenuColors",KM1%,hex("FFFFFF"),hex("FFFFFF"),hex("383D41"),hex("A5A5A5"),hex("FF0000"))
' création de 3 lignes s$ = "Aaaaaaaaaaa" id$ = "opt1" res% = dll_call6("KMenuAddRow",KM1%, adr(s$), adr(id$),0,0,1)
s$ = "Bbbbbb bbbbb" id$ = "opt2" res% = dll_call6("KMenuAddRow",KM1%, adr(s$), adr(id$),0,0,0)
s$ = "Ccccccccc ccc ccccccccc" id$ = "opt3" res% = dll_call6("KMenuAddRow",KM1%, adr(s$), adr(id$),1,1,0)
' *** sousmenu attaché à la ligne 2 du menu principal ' création du menu tit$ = "Mon sousmenu" font$ = "Arial" KM2% = dll_call5("CreateKMenu",15, handle(0), adr(tit$), adr(font$), 12)
' définition des couleurs res% = dll_call6("KMenuColors",KM2%,hex("FFFFFF"),hex("FFFFFF"),hex("383D41"),hex("A5A5A5"),hex("FF0000"))
' création de 4 lignes s$ = "1111111" id$ = "opt31" res% = dll_call6("KMenuAddRow",KM2%, adr(s$), adr(id$),0,0,0)
s$ = "22222" id$ = "opt32" res% = dll_call6("KMenuAddRow",KM2%, adr(s$), adr(id$),0,0,1)
s$ = "3333333333333" id$ = "opt33" res% = dll_call6("KMenuAddRow",KM2%, adr(s$), adr(id$),1,1,0) s$ = "44444444" id$ = "opt34" res% = dll_call6("KMenuAddRow",KM2%, adr(s$), adr(id$),0,0,0)
' attacher le sousmenu à la ligne 2 du menu principal res% = dll_call3("KMenuAttach",KM2%,KM1%,2)
button 1 : caption 1,"Montrer" : on_click 1,montrer
on_user_event user
end
montrer: ' afficher et activer le menu principal res% = dll_call4("KMenuShow", KM1%, 50, 80, 1)
' voici comment cacher un menu affiché (4 paramètre est zéro, le reste est ignoré) ' res% = dll_call4("KMenuShow", KM1%, 0, 0, 0) ' message "Show="+str$(res%)
return
user: s$ = "" if user_event_wparam=hex("0F010000") then s$ = "Clic" : ' ligne non cochable if user_event_wparam=hex("0F020000") then s$ = "Coche" : ' ligne cochable if s$="" then return : ' aucun des deux cas ' évènement généré par un clic dans une ligne terminale d'un menu (non attachée à un sousmenu) id$ = string$(255," ") ' l'identifiant du menu est dans les 16 bits de valeur forte de LPARAM ident% = user_event_lparam/65536 ' le numéro de ligne est dans les 16 bits de valeur faible de LPARAM row% = bin_and(user_event_lparam,65535) ' chercher l'identifiant de la ligne (c'est un texte !) res% = dll_call3("KMenuGetID",Ident%, Row%, adr(id$)) id$ = trim$(id$) s1$ = "Menu 1 ligne 3: " res% = dll_call2("KMenuGetMark",KM1%,3) select res% case 0: s1$ = s1$ + "non cochable" case 1: s1$ = s1$ + "cochable non coché" case 2: s1$ = s1$ + "cochable coché" end_select s1$ = s1$ + " Menu 2 ligne 3: " res% = dll_call2("KMenuGetMark",KM2%,3) select res% case 0: s1$ = s1$ + "non cochable" case 1: s1$ = s1$ + "cochable non coché" case 2: s1$ = s1$ + "cochable coché" end_select message "USerEvent "+s$+ ": WParam="+hex$(user_event_wparam)+" LParam="+hex$(user_event_lparam)+" ID="+id$+chr$(13)+chr$(10)+s1$ return
end
| |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 6 Juil 2020 - 15:01 | |
| Nouvelle version: KGF.dll V9.09 du 06/02/2020Nouveautés: - nouvelle fonction: EvaluateExpressionModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour, sur le site et sur le WebDav. Cette fonction permet d'évaluer une expression numérique, en utilisant des constantes, des variables, des opérateurs, des parenthèses et des fonctions intrinsèques. Cette fonction est documentée dans la section des fonctions diverses (c'est la dernière de la liste). Voici une démo: - Code:
-
' test_EvaluateExpression.bas
label calc
dim res%, eval, form$, s$
alpha 1 : top 1,10 : left 1,10 : caption 1,"Formule:" alpha 2 : top 2,35 : left 2,10 : caption 2,"Variables:" alpha 3 : top 3,35 : left 3,270 : caption 3,"Valeurs:"
edit 11 : top 11,10 : left 11,60 : width 11,400 memo 12 : top 12,50 : left 12,10 : width 12,250 : height 12,300 : bar_both 12 memo 13 : top 13,50 : left 13,270 : width 13,250 : height 13,300 : bar_both 13
button 21 : top 21,380 : left 21,10 : width 21,510 : caption 21,"Calculer" : on_click 21,calc
dll_on "KGF.dll"
end
calc: form$ = text$(11) s$ = string$(20," ") res% = dll_call4("EvaluateExpression",adr(form$),handle(12),handle(13),adr(eval)) if res%=0 message form$+" = "+str$(eval) else message "Erreur" end_if return Rentrez, par exemple, les valeurs suivantes: Formule: 10+QTE*PUVariables: QTE PUValeurs: 17 3Cliquez sur "Calculer" et le résultat sera 61. | |
| | | Marc
Nombre de messages : 2397 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Lun 6 Juil 2020 - 16:55 | |
| Merci Klaus ! Excellent ! Bien qu’en France ce soit la virgule qui soit utilisée comme séparateur dans les nombres décimaux, si ce n’est pas trop compliqué, peux-tu autoriser l’utilisation du "point" au lieu - ou en plus - de la "virgule" ?
Bonne continuation ! | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 6 Juil 2020 - 17:12 | |
| C'est fait. La fonction accepte le point ou la virgule, indifféremment. | |
| | | Marc
Nombre de messages : 2397 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Lun 6 Juil 2020 - 19:10 | |
| Merci Klaus de ta réactivité, mais il semble y avoir un bug. Le point et la virgule provoquent un message ''erreur". Les entiers fonctionnent.
EDIT :
Changement de sujet, je me permets une suggestion d’amélioration de KMenu de KGF.
Pour exemple, je reprends ton source du 2 juillet 2020 à 15h08.
Après avoir déplacé la fenêtre principale (FORM 0) au centre de l’écran par exemple, lorsque je clique sur le bouton Montrer, la position du curseur de la souris n’est pas réactualisée en fonction du nouvel emplacement de la fenêtre principale : le curseur fait un bond en dehors du FORM 0 pour se retrouver en haut à gauche de l’écran, à l’emplacement qu’il devait cibler avant le déplacement de la fenêtre. Suggestion : Ajouter un calcul pour que la souris "bondisse" sur la nouvelle position ?
N’hésite pas à me demander des copies d’écran si mon explication est trop ambiguë.
Merci pour tout et bonne continuation ! | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 6 Juil 2020 - 21:22 | |
| Pour KMenu, ton explication est clairen et je vais corriger cela. Merci pour ce retour. Pour la fonction EvaluateExpression et la virgule, il faut évidemment recharger KGF.dll. Je pense que tu n'a pas fait cela. D'ailleurs, je viens d'ajouter une nouvelle fonctionnalité à cette dernière fonction, et en rechargeant KGF.dll, tu auras également accès à cela: Aussi bien dans le texte de la formule que dans les valeurs des paramètres,, on peut maintenant placer une construction du type - Code:
-
dim MaVariableFlottante, formule$ ... formule$ = "2*#"+str$(adr(MaVariableFlottante)) : ' le résultat est le double de la valeur de MaVariableFlottante item_add 12,"MonTest" item_add 13,"#"+str$(adr(MaVariableFlottante)) : ' l'utilsation de la variable MonTest donne le contenu de la variable MaVariableFlottante
EDIT 21:37 le 6/7/2020Dans la foulée, je viens de corriger le problème de positionnement dans KMenu. Il faut bien sûr recharger KGF.dll... Evidemment, il n'est pas possible de saisir ce codage interactivement, puisqu'un ne connait pas les adresses des variables. Mais dans un programme, onn peut parfaitement placer ces lignes ou similaires car au lancement du programme, ce dernier connaît les adresses. Le programme de démo ci-après a été modifié de sorte à placer PI dans la variable "test", et l'adresse de cette varlable dans la formule. Le calcul donne donc directement la valeur de PI. Et si l'on remplace la formule par "test*2", par exemple, on obtient le double de PI. - Code:
-
' test_EvaluateExpression.bas
label calc
dim res%, eval, form$, s$, test
alpha 1 : top 1,10 : left 1,10 : caption 1,"Formule:" alpha 2 : top 2,35 : left 2,10 : caption 2,"Variables:" alpha 3 : top 3,35 : left 3,270 : caption 3,"Valeurs:"
edit 11 : top 11,10 : left 11,60 : width 11,400 memo 12 : top 12,50 : left 12,10 : width 12,250 : height 12,300 : bar_both 12 memo 13 : top 13,50 : left 13,270 : width 13,250 : height 13,300 : bar_both 13
button 21 : top 21,380 : left 21,10 : width 21,510 : caption 21,"Calculer" : on_click 21,calc
dll_on "KGF.dll"
text 11,"#"+str$(adr(test)) item_add 12,"test" item_add 13,"#"+str$(adr(test))
end
calc: test = pi form$ = text$(11) s$ = string$(20," ") res% = dll_call4("EvaluateExpression",adr(form$),handle(12),handle(13),adr(eval)) if res%=0 message form$+" = "+str$(eval) else message "Erreur" end_if return | |
| | | Marc
Nombre de messages : 2397 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Lun 6 Juil 2020 - 23:43 | |
| Merci Klaus ! 1) KMenuLe saut de la souris est correct. Super ! Mes nouveaux tests me conduisent à deux remarques : - J’ai créé un sous-menu avec 6 rubriques. Seules les 3 premières s’affichent. La fenêtre d'affichage du sous-menu semble limitée à 80 pixels de hauteur. J’ai repris ton source-exemple du 2 juillet 2020 à 15h08 : j’ai le même problème. Sur les quatre lignes qui composent le sous-menu attaché à la ligne 2 du menu principal, seules 3 lignes s’affichent. Il manque une petite partie de la troisième ligne et la quatrième est absente. Testé sous Windows 7 et 10. - Spoiler:
- Le sous-menu reste affiché : je clique sur la ligne 2 du menu, après avoir consulté les options du sous-menu, je décide de ne rien choisir et je sors la souris des menus. Le sous-menu reste affiché. - Spoiler:
2) EvaluateExpression - Citation :
- il faut évidemment recharger KGF.dll. Je pense que tu n'a pas fait cela.
Si, pas de problème, j’avais bien re-téléchargé KGF. Pour les nouveaux essais, j’ai paré au plus court et j’ai repris ton source-exemple du 06/07/2020 à 15h01. Quand j’affecte un nombre décimal dans le MEMO 13 "Valeurs", que ce soit avec une virgule ou un point, j’ai maintenant un message d’erreur. Dans ta première version, la virgule fonctionnait bien mais pas le point. - Spoiler:
Je ferai de plus amples essais plus tard... Encore merci pour tout et bonne continuation ! | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 7 Juil 2020 - 0:08 | |
| Pour le poit/virgule dans EvaluateExpression, je ne vois pas où est le problème. Le point: La virgule: Pour le menu, je vais approfondir la question. EDIT 00:28 le 7/7/2020J'ai corrigé le problème de dimension des sous-menus qui s'ouvrent - toutes les lignes s'affichent maiintenant comme il faut. J'ai constaté le problème de persistance des menus dans certains cas lorsqu'on quitte sans clquer - j'y travaille. | |
| | | Marc
Nombre de messages : 2397 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Mar 7 Juil 2020 - 0:45 | |
| Je suis désolé, mais ça ne fonctionne pas chez moi. Je viens de changer d'ordinateur pour lever le doute et donc re-télécharger KGF : sous Windows 10, j'ai le même message d'erreur que ce soit le point ou la virgule. La version KGF téléchargée à l'instant est datée du 06/07/2020 à 21h31. J'ai ajouté dans le caption 0, la version extraite de KGF : Virgule : Point : Je ne vois pas quelle erreur je fais. J'approfondirai demain. Bonne nuit à tous ! | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 7 Juil 2020 - 1:01 | |
| - Citation :
- EDIT 21:37 le 6/7/2020
Ben oui, je l'ai mise en ligne juste quelques minutes plus tard... Essaie avec la version actuelle que je viens de mettre en ligne: KGF.dll est datée du 7/7/2020 à 0:24, et KGF.zip est daté du 7/7/2020 à 0:25. | |
| | | Marc
Nombre de messages : 2397 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Mar 7 Juil 2020 - 6:32 | |
| Bonjour Klaus ! Ces quelques heures de sommeil passées ne m’ont pas permis de percer le mystère de EvaluateExpression. Depuis l’historique de mes téléchargements j’ai repris et réessayé méthodiquement les différents KGF : Celui créé le 06/07/2020 à 13h25 : virgule: OK ; point: Erreur Celui créé le 06/07/2020 à 17h08 : virgule: Erreur ; point: Erreur Celui créé le 06/07/2020 à 21h31 : virgule: Erreur ; point: Erreur Celui créé le 07/07/2020 à 00h24 : virgule: Erreur ; point: Erreur EDIT : Je viens de télécharger Panoramic_Editor pour remplacer le couple EliP + Make_Exe.exe : ça ne fonctionne toujours pas chez moi. | |
| | | 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
| |
| |
| |