| KGF_dll - nouvelles versions | |
|
+12JL35 Oscaribout bignono Pedro pascal10000 silverman Jicehel papydall Minibug Marc Yannick Klaus 16 participants |
|
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 2 Avr 2018 - 21:16 | |
| Ben...oui ! Ce n'est pas un Filtre (il y a la commande FILTER de Panoramic, pour cela). C'est une extension par défaut. Si tu saisis manuellement un nom de fichier sans extension, c'est cette extension qui sera mise d'office. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 3 Avr 2018 - 0:46 | |
| On peut faire ça aussi, maintenant: - Code:
-
label montrer dim res%
grid 1 button 2 : top 2,top(1)+height(1)+10 : caption 2,"Montrer" : on_click 2,montrer display
dll_on "KGF.dll" end
montrer: res% = dll_call3("ObjectPropertyInspector",handle_application,object_internal(1),1) res% = dll_call3("LocateObjectPropertyInspector",handle(0),left(1)+width(1),top(1)) to_foreground 0 return
Essayez de jouer avec - c'est bluffant ! La doc suivra, mais le code de démo est limpide. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mar 3 Avr 2018 - 7:31 | |
| Effectivement... c'est bluffant ! | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 11 Avr 2018 - 18:25 | |
| Bonsoir Klaus ! Actuellement sur mon explorateur proposé sur un autre post j'ai une seule LISTBOX tree%, mais j'aimerai savoir comment gérer les évènements sur 2 LISTBOX en même temps ! J'aimerai scinder l'affichage en 2 avec : - A gauche la LISTBOX qui devient tree1% et qui n'affiche que les dossiers si clic sur un dossier alors on affiche le contenu du dossier avec les dossiers à gauche et les fichiers à droite. - Et à droite la LISTBOX qui devient tree2% et qui n'affiche que les fichiers si clic sur un fichier on sort du programme. Mais comment gérer cela ? Voila la partie du code événement actuel avec un seul LIST_BOX : - Spoiler:
- Code:
-
evenement: IF BIN_AND(USER_EVENT_WPARAM,HEX("FF000000"))=HEX("0A000000") IF BIN_AND(USER_EVENT_WPARAM,HEX("00FF0000"))<>HEX("00010000") THEN RETURN index%=BIN_AND(USER_EVENT_WPARAM,HEX("0000FFFF")) t$=string$(50," ") : res%=dll_call3("GetItemOfIconListBox",tree%,index%,adr(t$)) : t$=trim$(t$) ' lorsque l'on clique sur un fichier on quitte l'explorateur IF RIGHT$(t$,3)="bas" OR RIGHT$(t$,3)="ppa" THEN MESSAGE t$ : TERMINATE ' Si on clique sur un dossier on réinit l'affichage IF index%<=doss% res%=dll_call1("ClearIconListBox",tree%) IF RIGHT$(DIR_CURRENT$,1)="" t$=DIR_CURRENT$+t$ ELSE t$=DIR_CURRENT$+chr$(92)+t$ END_IF affichage(t$) END_IF END_IF RETURN
Pour retrouver le code dans son intégralité regarde iciMerci pour ton aide. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 11 Avr 2018 - 18:45 | |
| Fausse alerte Klaus, je viens de trouver ! J'ai procédé comme ceci : - Spoiler:
- Code:
-
evenement:
' Evénement relatif à l'explorateur de fichiers IF BIN_AND(USER_EVENT_WPARAM,HEX("FF000000"))=HEX("0A000000") IF BIN_AND(USER_EVENT_WPARAM,HEX("00FF0000"))<>HEX("00010000") THEN RETURN index%=BIN_AND(USER_EVENT_WPARAM,HEX("0000FFFF"))
IF USER_EVENT_LPARAM=tree1% t$=string$(50," ") : res%=dll_call3("GetItemOfIconListBox",tree1%,index%,adr(t$)) : t$=trim$(t$) IF index%<=doss% res%=dll_call1("ClearIconListBox",tree1%) : res%=dll_call1("ClearIconListBox",tree2%) IF RIGHT$(DIR_CURRENT$,1)="\" : t$=DIR_CURRENT$+t$ : ELSE : t$=DIR_CURRENT$+chr$(92)+t$ : END_IF affichage(t$) END_IF END_IF IF USER_EVENT_LPARAM=tree2% t$=string$(50," ") : res%=dll_call3("GetItemOfIconListBox",tree2%,index%,adr(t$)) : t$=trim$(t$) IF RIGHT$(t$,3)="bas" OR RIGHT$(t$,3)="ppa" THEN MESSAGE t$ : TERMINATE END_IF END_IF RETURN
J'ai bien ce qu'il faut faire non ? | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 11 Avr 2018 - 18:47 | |
| La variable système USER_EVENT_LPARAM contient l'identifiant le l'objet, tel que retourné par CreateIconListBox. Il te suffit donc de faire quelques IFs ou une boucle pour comparer USER_EVENT_LPARAM avec les différentes variables tree% (pour le moment, tu n'en as qu'une, mais si je comprends bien, tu vas en avoir 2. Donc, tu les identifies comme ça. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 11 Avr 2018 - 18:48 | |
| On se croise et recroise... Oui, c'est bien. Tu as trouvé. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 11 Avr 2018 - 19:03 | |
| - Citation :
- On se croise et recroise...
Par contre j'ai un sérieux problème au chargement du programme. En testant plusieurs fois d'affilé le programme je me retrouve avec le message suivant au démarrage du programme : Est ce qu'il n'y a pas un problème de libération de mémoire avec KGF comme tu m'avais expliqué une fois ? C'est quand même étrange non ? Et ce problème est récurant avec ce code. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 11 Avr 2018 - 20:41 | |
| Non, pas lorsque le problème se situe au niveau du démarrage...
Place des messages juste avant chaque appel DLL concerné, et un autre immédiatement après en affichant la valeur de res%. Ainsi, tu identifieras le moment précis et la fonction en cause dans le problème. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 11 Avr 2018 - 21:33 | |
| Bon, je n'ai pas eu besoin de faire tout cela ! J'ai passé MALEWAREBYTE et j'ai redémarré le PC sans avoir trouvé de choses critiques. Mais là je sais pas pourquoi, j'ai plus de plantage et même sur l'éditeur tout semble ok. C'est quand même très surprenant... Enfin bref tout à l'air OK ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 11 Avr 2018 - 21:38 | |
| Ah, les mystères de l'informatique ! Enfin - tout est bien qui finit bien ! | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Ven 13 Avr 2018 - 23:48 | |
| Klaus, au secours ! J'ai voulu a installer la ListBox sur un PANEL et non dans un form comme dans ton exemple. Et là ça ne fonctionne plus ! Est ce une limitation ou bien un bug ? Quand je dis ça ne fonctionne plus c'est qu'il n'y a plus de détection des événements. Voila un exemple du code pour mieux comprendre... PAN_explo% est le PANEL que j'utilise au lieu de la form 0 de ton exemple. Y a t-il quelque chose que j'ai loupé ? - Code:
-
IL%=DLL_CALL2("CreateImageList",15,15) t$="D:\BASIC\GPP2\ilb\explo.ilb" res%=DLL_CALL2("LoadImageList",IL%,adr(t$))
res%=dll_call1("SetMainFormHandle",handle(PAN_explo%))
tree1%=DLL_CALL3("CreateIconListBox",handle(PAN_explo%),IL%,1) res%=DLL_CALL5("LocateIconListBox",tree1%,5,45,290,(HEIGHT_CLIENT(PAN_explo%)-50))
tree2%=DLL_CALL3("CreateIconListBox",handle(PAN_explo%),IL%,1) res%=DLL_CALL5("LocateIconListBox",tree2%,300,45,295,(HEIGHT_CLIENT(PAN_explo%)-50))
| |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 14 Avr 2018 - 1:14 | |
| Normal... - Code:
-
res%=dll_call1("SetMainFormHandle",handle(PAN_explo%)) PAN_explo% n'est pas la form 0. Or, seule la form 0 est capable de recevoir les USER_EVENT. D'ailleurs, la syntaxe ON_USER_EVENT ne permet même pas de spécifier l'objet (0 dans ce cas) - c'est implicite. KGF.dll a une variable interne dans laquelle il stocke le handle de la form 0. Normalement, l'appel de cette fonction est inutile car on tente d'identifier le handle automatiquement. Au cas où la détection automatique échoue, il est bon d'utliser cette formule pour donner le handle de la form 0. Mais uniquement la form 0, car si j'envoie un USER_EVENT à un PANEL, il va l'ignorer superbement. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 14 Avr 2018 - 1:19 | |
| Ah mince, c'est ennuyeux...
Bon bah là ça remet pas mal de choses en question ! En tout cas, merci pour ta réponse, je vais voir comment faire... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 14 Avr 2018 - 1:23 | |
| Pourquoi ça remettrait des choses en question ? Ca ne concerne que la réception du USER_EVENT. Tu peux parfaitement placer tes objets IconListBox dans un panel: - Code:
-
tree1%=DLL_CALL3("CreateIconListBox",handle(PAN_explo%),IL%,1) et même dans des panels différents ! | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| |
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 14 Avr 2018 - 1:49 | |
| Pour tout programme Panoramic, il y a toujours une form 0 qui est la fenêtre de base, techniquement parlant. Même si elle est rendue invisible ! Les autres fenêtres ont des numéros d'objets quelconques, mais aucune, je dis bien aucune, ne peut recevoir des USER_EVENT. Seule la form 0 en est capable, même si elle ne contient aucun objet et est invisible !
Place tes IconListBox dans les panels que tu veux, peu importe dans quelle form ces panels de trouvent. Tu donnes toujours le handle des panels concernés à la fonction CreateIconListBox. Mais tu donnes le handle de la form 0 à la fonction SetMainFormHandle, c'est impératif.
Maintenant, si ça ne marche pas de cette façon, alors c'est un bug. Crée un petit code qui met cela en évidence et je corrigerai. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 14 Avr 2018 - 2:21 | |
| OK Klaus j'ai compris ! Je suis comme toi... je comprends vite mais il faut m'expliquer longtemps. (voir post il y a quelques jours) J'ai repris le code et maintenant tout fonctionne parfaitement. Désolé pour le dérangement mais c'est vrai que je n'avais pas compris la subtilité de SetMainFormHandle avec USER_EVENT. je voyais l'obligation de l'objet rattaché à la form 0 et du coup c'était contraignant... Mais en fait il en est rien, et comme d'habitude ton système est 'ouvert' et il fonctionne parfaitement. Encore merci pour toutes ses explications. Bon cette fois je te souhaite une bonne nuit. A+ | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 14 Avr 2018 - 2:42 | |
| Bonne nuit - elle le sera, puisqu'il n'y a plus l'aiguillon du bug potentiel ! Tant mieux ! | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 14 Avr 2018 - 9:53 | |
| Bonjour Klaus,
Pour la ComboBox et la ListBox, je me rends compte à l"usage qu'il serait pratique de pouvoir changer la taille de la police. Ou bien faire en sorte qu'elle s'adapte à la taille des icônes... Du coup crois tu pouvoir le rajouter avec même peut être la possibilité de changer la police elle-même ?
Il semble aussi y avoir un problème avec la fonction res%=dll_call2("OptionsForIconComboBox",ICB%,multi%) qui me renvoie une erreur lors de son utilisation... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 14 Avr 2018 - 21:16 | |
| - Citation :
- Du coup crois tu pouvoir le rajouter avec même peut être la possibilité de changer la police elle-même ?
Oui. Je vais faire mieux: comme pour l'objet KGFGrid, je vais permettre de gérer nom, taille et couleur de la police ainsi que les attributs graphiques. - Citation :
- Il semble aussi y avoir un problème avec la fonction res%=dll_call2("OptionsForIconComboBox",ICB%,multi%)
qui me renvoie une erreur lors de son utilisation... Peux-tu poster un petit code mettant le problème en évidence ? Je ne rencontre aucune difficulté... | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 14 Avr 2018 - 21:34 | |
| Bien sûr. le voila ! C'était surtout pour faire un test puisque je l'ai bien intégré avec la ListBoxet que cela fonctionne sur le même principe... - Code:
-
' test_IconComboBox.bas
label evenement
dim res%, ICB%, IL%, ilb$ , no%, t$, WParam%, LParam%, index%, UserICB%
' Il s'agit de la liste des 32 icônes des objets Panoramic en 15X15 ilb$="D:\BASIC\GPP2\ilb\objets.ilb"
DLL_ON "KGF.dll"
IL%=dll_call2("CreateImageList",15,15) res%=dll_call2("LoadImageList",IL%,adr(ilb$))
ICB%=dll_call3("CreateIconComboBox",handle(0),IL%,1) res%=dll_call5("LocateIconComboBox",ICB%,5,5,400,0)
FOR no%=1 TO 32 t$=STR$(no%) : res%=dll_call6("AddItemToIconComboBox",ICB%,adr(t$),no%,0,0,0) NEXT no%
res%=dll_call4("SetColorsForIconComboBox",ICB%,HEX("3C3C3C"),HEX("FFFFFF"),HEX("FF0000"))
' C'est ici que ça bug ! res%=dll_call2("OptionsForIconComboBox",ICB%,0)
ON_USER_EVENT evenement END
evenement: IF BIN_AND(USER_EVENT_WPARAM,HEX("FF000000"))=HEX("09000000") IF BIN_AND(USER_EVENT_WPARAM,HEX("00FF0000"))<>HEX("00010000") THEN RETURN index%=BIN_AND(USER_EVENT_WPARAM,HEX("0000FFFF")) t$=STRING$(50," ") res%=dll_call3("GetItemOfIconComboBox",ICB%,index%,adr(t$)) t$=TRIM$(t$) MESSAGE "clic sur la ligne "+str$(index%)+" "+t$ END_IF RETURN
| |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 15 Avr 2018 - 0:06 | |
| Ah oui, j'ai compris... cette fonction n'existe tout simplement pas !
Pour la IconListBox, elle permet de gérer le mode "sélection multiple" de lignes dans laliste. Or, ceci n'a aucun sens pour une Combo, et c'est pour cette raison que cette fonction n'eest pas implémentée.
Donc, supprime simplement cette ligne, c'est tout. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 15 Avr 2018 - 10:43 | |
| Ce qui m'a induit en erreur c'est qu'elle est présentée dans la doc... Étant curieux, je voulais voir ce que cela donné au résultat. Et donc le voila le résultat ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 15 Avr 2018 - 13:43 | |
| - Citation :
- elle est présentée dans la doc
Oups... je v ais vérifier, et retirer cela de la doc ! | |
|
| |
Contenu sponsorisé
| Sujet: Re: KGF_dll - nouvelles versions | |
| |
|
| |
| KGF_dll - nouvelles versions | |
|