Novembre 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 | | Calendrier |
|
|
| KGF_dll - nouvelles versions | |
|
+12JL35 Oscaribout bignono Pedro pascal10000 silverman Jicehel papydall Minibug Marc Yannick Klaus 16 participants | |
Auteur | Message |
---|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Jeu 4 Jan 2018 - 8:55 | |
| Bonjour Klaus ! Je viens de tester la dernière version... Il reste encore un problème sur la sélection multiple. Lorsque que l'on tire sur les bords du cadre d'un des objets pour les déplacer, l’icône ne suis pas sur tous les objets et apparaît à plusieurs endroits simultanément et hors des objets. Bonne journée et bon courage... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 4 Jan 2018 - 9:24 | |
| Ah, la multi-sélection... je l'avais oubliée, cellle-là ! Je vais réparer cela aussi ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 4 Jan 2018 - 10:57 | |
| Nouvelle version: KGF.dll V8.27 du 05/01/2018
Nouveautés: - Designer: correction du problème du ObjectMover en multi-sélection
Modules modifiés: KGF.dll
La doc est inchangée. Les sources seront à jour prochainement.
Il y a une vraie incompatibilité entre le traitement fait par Designer et celui de ObjectMover, concernant les déplacements. Alors que le premier signale les déplacements à faire au programme Panoramic qui a alors la responsabilité de les effectuer, ce dernier les effectue en interne, sans intervention du programme Panoramic. C'est pour cette raison qu'en multi-sélection, seul l'ObjectMover de l'objet accroché se déplaçait, par un mouvement par Designer, car le programme Panoramic ne pouvait pas connaître les positions des autres ObjectMover.
J'ai donc désactivé la création des ObjectMover en mode multi-sélection - cela n'a aucun sens. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 4 Jan 2018 - 14:43 | |
| Nouvelle version: KGF.dll V8.28 du 05/01/2018Nouveautés: - DesignerFunction: nouveau code action 7 - Designer: gérer les ObjectMover en multi-sélectionModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. En multi-sélection, la position des objets sélectionnés est gérée par le programme Panoramic. J'ai donc trouvé un moyen d'actualiser la position du ObjectMover associé à chaque objet sélectionné, par un nouveau code action à la fonction DesignerFunction. L'appel avec ce code fonction doit être placé dans la boucle de traitement pour l'ensemble des objets sélectionné. Voici le programme démo qui montre cela: - Code:
-
' pb_designer.bas
label click, fin, CT, desel, chg, change, aligner, dump
dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%, typ%
full_space 0 : width 0,width(0) - 200 button 1 : width 1,100 : caption 1,"Container_tab" : on_click 1,CT button 2 : width 2,100 : caption 2,"Stop" : on_click 2,fin : left 2,100 combo 3 : width 3,150 : left 3,210 item_add 3,"Cadre intérieur" item_add 3,"Cadre extérieur" combo 4 : width 4,150 : left 4,370 : on_click 4,chg item_add 4,"Un objet seul" item_add 4,"Sélection d'objets" alpha 5 : left 5,540 : caption 5,"Largeur de grille magnétique:" spin 6 : left 6,690 : width 6,40 : min 6,1 : max 6,20 : position 6,1 combo 7 : left 7,750 : width 7,180 item_add 7,"Aucun alignement" item_add 7,"Alignement à gauche" item_add 7,"Alignement en haut" item_add 7,"Alignement à droite" item_add 7,"Alignement en bas" item_add 7,"Alignement en largeur" item_add 7,"Alignement en hauteur" item_add 7,"Alignement en largeur et hauteur" text 7,item_read$(7,1) button 8 : left 8,940 : caption 8,"Aligner" : on_click 8,aligner
' les 3 objets suivants pourront être déplacés et/ou redimensionnés memo 10 : top 10,40 : on_click 10,click alpha 11 : top 11,40 : left 11,200 : caption 11,"Libellé" : on_click 11,click button 12 : top 12,70 : left 12,200 : caption 12,"Test" : on_click 12,click picture 13 : top 13,400 : left 13,400 : on_click 13,click
container 30 : top 30,150 : left 30,10 : caption 30,"Mon container" width 30,300 : height 30,200 : on_click 30,click list 31 : parent 31,30 : top 31,20 : left 31,10 : on_click 31,click item_add 31,"Cliquer ici"
container_tab 40 : top 40,40 : left 40,320 : width 40,400 : height 40,300 tab 41 : parent 41,40 : caption 41,"Premier onglet" tab 42 : parent 42,40 : caption 42,"Deuxième onglet" tab 43 : parent 43,40 : caption 43,"Troisième onglet"
alpha 44 : parent 44,41 : top 44,20 : left 44,20 : caption 44,"AAAA" : on_click 44,click alpha 45 : parent 45,42 : top 45,20 : left 45,20 : caption 45,"BBBB" : on_click 45,click alpha 46 : parent 46,43 : top 46,20 : left 46,20 : caption 46,"CCCC" : on_click 46,click
form 100 : left 100,width(0)+1 : height 100,height(0) : width 100,200 caption 100,"Objets sélectionnés" list 101 : parent 101,100 : full_space 101 : on_click 101,desel memo 102 : top 102,400 : left 102,20 : width 102,300 : height 102,100 bar_both 102 on_change 102,change : ' hide 102
dll_on "KGF.dll" res% = dll_call2("SelectComboBoxItem",handle(3),2) res% = dll_call2("SelectComboBoxItem",handle(4),1) selmode% = item_index(4)
' gosub dump
end dump: memo 177 : full_space 177 : bar_both 177 left 12,1234 top 12,2345 width 12,432 height 12,321 res% = dll_call3("DumpPanoramic",handle(177),object_internal(13),150) ' item_add 177,"handle=$"+hex$(handle(13))+"="+str$(handle(13)) return
change: for i%=1 to count(102) s$ = trim$(item_read$(102,i%)) if s$="" then return p% = instr(s$,",") obj% = val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") left obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") top obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") width obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) height obj%,val(s$) res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%) next i% return
CT: obj% = 40 parent% = parent(40) select item_index(4) case 1: res% = dll_call5("RegisterObjectForDesigner",40,handle(parent%),handle(102),object_internal(40), item_index(3)-1) case 2: res% = dll_call6("DesignerFunction",1,40,handle(parent%),handle(102),object_internal(40), item_index(3)-1) end_select res% = dll_call6("DesignerFunction",3,40,handle(101),handle(102),0,0) res% = dll_call6("DesignerFunction",5,40,handle(101),handle(102),0,position(6)) return
click: ' res% = dll_call1("TestKGF",object_internal(number_click)) ' return
obj% = number_click parent% = parent(obj%) select item_index(4) case 1: res% = dll_call5("RegisterObjectForDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) case 2: res% = dll_call6("DesignerFunction",1,obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) end_select res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) ' res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6)) return
fin: select item_index(4) case 1: res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer l'objet capturé case 2: res% = dll_call6("DesignerFunction",0,0,0,0,0,0) end_select res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return
desel: s$ = item_read$(101,item_index(101)) n% = val(s$) res% = dll_call6("DesignerFunction",2,obj%,handle(parent%),handle(102),n%,0) res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return
chg: select selmode% case 1: res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer l'objet capturé case 2: res% = dll_call6("DesignerFunction",0,0,0,0,0,0) end_select res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) selmode% = item_index(4) return aligner: res% = dll_call6("DesignerFunction",6,obj%,handle(101),handle(102),0,item_index(7)-1) return
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Jeu 4 Jan 2018 - 19:44 | |
| Au secours Klaus ! La sélection multiple pose un problème... 1. Je commence par sélectionner le choix multique des objets dans la liste en haut. 2. Je sélectionne avec la touche CTRL plusieurs objets. 3 Je les déplace en mettant ma souris sur un des cadres jaune et je tire. 4 Ensuite je fais la même chose mais avec le bouton icône de déplacement. 5 Je fait un alignement à gauche Et en reproduisant les étapes 3.4.5 on arrive à avoir les bizarreries... A partir de là rien ne va plus... - plusieurs processus Panoramic sont lancés. - Les boutons icônes se baladent sur l'écran. - Et les objets changent de tailles. Edit: si clic sur stop, les boutons icônes restent visible. Ensuite si on clic sur ces icônes les objets changent de taille. Aie aie aie... Hum... je crains qu'il y est comme un problème... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 4 Jan 2018 - 19:53 | |
| C'est bien comme ça que j'ai testé: - Citation :
- 1. Je commence par sélectionner le choix multique des objets dans la liste en haut.
2. Je sélectionne avec la touche CTRL plusieurs objets. 3 Je les déplace en mettant ma souris sur un des cadres jaune et je tire. 4 Ensuite je fais la même chose mais avec l’icône de déplacement. En (4), seul le cadre dans lequel se trouve l'icône se déplace. Pas de problème apparent. 5. je tire un des autres cadres ==> tous les cadres y compris les icônes se déplacent, synchronisés, sans problème. 6. je tire une autre icone ==> le cadre associé se déplace, rien d'autre. 7. je tire encore un autre cadre ==> toute l'escadrille suit, sans problème. Là, pour le coup, je n'arrive pas à produire ce que tu décris. As-tu repris la version modifiée du programme de démo, postée ci-dessus ? La seule différene par rapport à la version précédente est la ligne - Code:
-
res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%)
ajoutée à la fin de la boucle dans la routine "change". | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Jeu 4 Jan 2018 - 19:58 | |
| Bonsoir Klaus !
En fait le problème apparaît lorsque tu STOP la multi-sélection. L'icône flèche reste visible sur les objets. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 4 Jan 2018 - 20:50 | |
| ah... encore un truc qui a échappé... je vais voir ça. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 5 Jan 2018 - 2:25 | |
| Nouvelle version: KGF.dll V8.29 du 05/01/2018Nouveautés: - Designer: gérer correctement a suppression des ObjectMover en cas de multi-sélectionModules modifiés: KGF.dllLa doc es inchangée. Les sources seront à jour prochainement. Pour que ça marche tout à fait bien, il faut ajouter: - Code:
-
label close0 on_close 0,close0 ... close0: res% = dll_call1("KillProcessByHandle",handle(0)) return Voici le programme de démo modifié: - Code:
-
' pb_designer.bas
label click, fin, CT, desel, chg, change, aligner, dump, close0
dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%, typ%
full_space 0 : width 0,width(0) - 200 button 1 : width 1,100 : caption 1,"Container_tab" : on_click 1,CT button 2 : width 2,100 : caption 2,"Stop" : on_click 2,fin : left 2,100 combo 3 : width 3,150 : left 3,210 item_add 3,"Cadre intérieur" item_add 3,"Cadre extérieur" combo 4 : width 4,150 : left 4,370 : on_click 4,chg item_add 4,"Un objet seul" item_add 4,"Sélection d'objets" alpha 5 : left 5,540 : caption 5,"Largeur de grille magnétique:" spin 6 : left 6,690 : width 6,40 : min 6,1 : max 6,20 : position 6,1 combo 7 : left 7,750 : width 7,180 item_add 7,"Aucun alignement" item_add 7,"Alignement à gauche" item_add 7,"Alignement en haut" item_add 7,"Alignement à droite" item_add 7,"Alignement en bas" item_add 7,"Alignement en largeur" item_add 7,"Alignement en hauteur" item_add 7,"Alignement en largeur et hauteur" text 7,item_read$(7,1) button 8 : left 8,940 : caption 8,"Aligner" : on_click 8,aligner
' les 3 objets suivants pourront être déplacés et/ou redimensionnés memo 10 : top 10,40 : on_click 10,click alpha 11 : top 11,40 : left 11,200 : caption 11,"Libellé" : on_click 11,click button 12 : top 12,70 : left 12,200 : caption 12,"Test" : on_click 12,click picture 13 : top 13,400 : left 13,400 : on_click 13,click
container 30 : top 30,150 : left 30,10 : caption 30,"Mon container" width 30,300 : height 30,200 : on_click 30,click list 31 : parent 31,30 : top 31,20 : left 31,10 : on_click 31,click item_add 31,"Cliquer ici"
container_tab 40 : top 40,40 : left 40,320 : width 40,400 : height 40,300 tab 41 : parent 41,40 : caption 41,"Premier onglet" tab 42 : parent 42,40 : caption 42,"Deuxième onglet" tab 43 : parent 43,40 : caption 43,"Troisième onglet"
alpha 44 : parent 44,41 : top 44,20 : left 44,20 : caption 44,"AAAA" : on_click 44,click alpha 45 : parent 45,42 : top 45,20 : left 45,20 : caption 45,"BBBB" : on_click 45,click alpha 46 : parent 46,43 : top 46,20 : left 46,20 : caption 46,"CCCC" : on_click 46,click
form 100 : left 100,width(0)+1 : height 100,height(0) : width 100,200 caption 100,"Objets sélectionnés" list 101 : parent 101,100 : full_space 101 : on_click 101,desel memo 102 : top 102,400 : left 102,20 : width 102,300 : height 102,100 bar_both 102 on_change 102,change : ' hide 102
dll_on "KGF.dll" res% = dll_call2("SelectComboBoxItem",handle(3),2) res% = dll_call2("SelectComboBoxItem",handle(4),1) selmode% = item_index(4) on_close 0,close0
' gosub dump
end
close0: res% = dll_call1("KillProcessByHandle",handle(0)) return dump: memo 177 : full_space 177 : bar_both 177 left 12,1234 top 12,2345 width 12,432 height 12,321 res% = dll_call3("DumpPanoramic",handle(177),object_internal(13),150) ' item_add 177,"handle=$"+hex$(handle(13))+"="+str$(handle(13)) return
change: for i%=1 to count(102) s$ = trim$(item_read$(102,i%)) if s$="" then return p% = instr(s$,",") obj% = val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") left obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") top obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") width obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) height obj%,val(s$) res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%) next i% return
CT: obj% = 40 parent% = parent(40) select item_index(4) case 1: res% = dll_call5("RegisterObjectForDesigner",40,handle(parent%),handle(102),object_internal(40), item_index(3)-1) case 2: res% = dll_call6("DesignerFunction",1,40,handle(parent%),handle(102),object_internal(40), item_index(3)-1) end_select res% = dll_call6("DesignerFunction",3,40,handle(101),handle(102),0,0) res% = dll_call6("DesignerFunction",5,40,handle(101),handle(102),0,position(6)) return
click: ' res% = dll_call1("TestKGF",object_internal(number_click)) ' return
obj% = number_click parent% = parent(obj%) select item_index(4) case 1: res% = dll_call5("RegisterObjectForDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) case 2: res% = dll_call6("DesignerFunction",1,obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) end_select res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) ' res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6)) return
fin: select item_index(4) case 1: res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer l'objet capturé case 2: res% = dll_call6("DesignerFunction",0,0,0,0,0,0) end_select res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return
desel: s$ = item_read$(101,item_index(101)) n% = val(s$) res% = dll_call6("DesignerFunction",2,obj%,handle(parent%),handle(102),n%,0) res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return
chg: select selmode% case 1: res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer l'objet capturé case 2: res% = dll_call6("DesignerFunction",0,0,0,0,0,0) end_select res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) selmode% = item_index(4) return aligner: res% = dll_call6("DesignerFunction",6,obj%,handle(101),handle(102),0,item_index(7)-1) return
Et un petit cadeau pour la Nouvelle Année (pas encore documentée): - Code:
-
' test_Companion.bas
label creer, supprimer
dim res%, CO%, f$
combo 1 item_add 1,"Rectangle" item_add 1,"Rectangle arrondi" item_add 1,"Ellipse" button 2 : left 2,width(1) : caption 2,"Créer" : on_click 2,creer button 3 : left 3,left(2)+width(2) : caption 3,"Supprimer" : on_click 3,supprimer
open_dialog 9 : filter 9,"Images (BMP,JPG,PNG,GIF)|*.bmp;*.jpg;*.png;*.gif" dll_on "KGF.dll" res% = dll_call2("SelectComboBoxItem",handle(1),3)
end
creer: f$ = file_name$(9) ' créer le compagnon CO% = dll_call3("Companion",item_index(1),100,100) if file_exists(f$)=0 then f$ = "_" ' éventuellement charger une image de fond if f$<>"_" then res% = dll_call2("LoadCompanionImage",CO%,adr(f$)) ' démarrer le,magnétisme res% = dll_call2("ManageCompanion",CO%,1) return supprimer: ' supprimer le compagnon CO% = dll_call1("DeleteCompanion",CO%) return
Après le lancement, choisir une des 3 formes dans la combo en haut à gauche (ellipse par défaut), puis cliquer sur "Créer". Sélectionner une petite image dans le dialogue qui s'ouvre, puis admirer. En cas d'overdose, cliquer sur "Supprimer" ou sortir par la croix rouge... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Ven 5 Jan 2018 - 9:11 | |
| Bonjour Klaus Il y a toujours des problèmes avec la sélection multiple. Il y a des plantages... 1er cas : 1. Je commence par faire le choix de la sélection multiple. 2. Ensuite je sélectionne plusieurs objets. moi j'en ai pris 3. 3. J'appuie sur STOP et repasse sur le choix d' un seul objet. 4. lorsque je clique de nouveau sur l'un des objet, il ne se passe plus rien 5. Si je clique sur STOP de nouveau il y a un plantage en ligne 131 ! 2eme cas : 1. Je commence par faire le choix de la sélection multiple. 2. Ensuite je sélectionne plusieurs objets. (toujours 3 sélections). 3. Je clique sur un objet non sélectionné, 4. Et là un carré complètement jaune apparaît sur le coin en haut à gauche avec un message d'erreur. J'espère que tu vas t'en sortir... Bon courage ! Pour le petit cadeau de noël, je vois déjà une utilisation à la façon d'un HINT mais plus permanent... Pour effectuer des taches un peu plus complexe et avoir l'explication en même temps. A voir ! Par contre je dois cliquer plusieurs fois sur SUPPRIMER pour que ça s'arrête ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 5 Jan 2018 - 9:29 | |
| | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: KGF_dll - nouvelles versions Ven 5 Jan 2018 - 11:56 | |
| Bonjour Klaus, et bonne année et bonne santé Voilà, j'essaye d'utiliser les "DialButton", mais j'ai trouvé un léger problème! Je teste avec KGF V8.22, mais j'ai téléchargé la V8.29 la dernière version, et le problème est identique! Lorsque j'utilise la fonction "SetDialButtonIndicator" en ligne 19 de mon petit programme de test, il y a un message qui apparait: Message Show. il faut que je clique sur OK pour que tout s'affiche normalement après. Ceci n'apparait que pour les boutons de type 2. Voici mon programme test: - Code:
-
dim res%,db1%,db2%,db3%,img$ label close0,indiq img$="C:\TEST\type2k11.jpg" container 10:width 10,200:height 10,80:left 10,20:top 10,20:' color 10,52,56,62 font_name 10,"Arial":font_bold 10:font_size 10,10 caption 10," OSC1 OSC2 OSC3 " edit 11:hide 11:text 11,"25":on_change 11,indiq edit 12:hide 12:text 12,"50":on_change 12,indiq edit 13:hide 13:text 13,"25":on_change 13,indiq alpha 21:parent 21,10:width 21,50:left 21,025:top 21,55 alpha 22:parent 22,10:width 22,50:left 22,085:top 22,55 alpha 23:parent 23,10:width 23,50:left 23,145:top 23,55 dll_on "c:\TEST\KGF829.dll" on_close 0,close0
db1% = dll_call3("CreateDialButton",handle(10),2,1) :' typ%=2 (image bouton):ID%=1 identifiant du dialbutton res% = dll_call2("LoadDialButtonImage",db1%,adr(img$)) :' db1% numéro bouton, img$=fichier image du bonton res% = dll_call6("SetDialButtonIndicator",db1%,3,2,255,0,0):' db1% numéro bouton, 3=type 2 rotation pointeur ligne, 2=longueur pointeur, couleur pointeur RGB res% = dll_call4("LocateDialButton",db1%,20,15,30) :' db1% numéro bouton, positions x%=20 et y%=15, diamètre=30 res% = dll_call4("ConfigureDialButton",db1%,100,0,25) :' db1% numéro bouton, max=100, min=0, position du bouton=25 res% = dll_call3("SetDialButtonResultMode",db1%,3,handle(11)) : ' résultat dans edit 11
db2% = dll_call3("CreateDialButton",handle(10),1,2) :' typ%=1 (simple disque rotatif):ID%=2 identifiant du dialbutton res% = dll_call4("LocateDialButton",db2%,80,15,30) :' db2% numéro bouton, positions x%=80 et y%=15, diamètre=30 res% = dll_call4("SetDialButtonColor",db2%,100,100,230):' db2% numéro bouton, 100=R, 100=G, 230=B res% = dll_call4("ConfigureDialButton",db2%,100,0,50) :' db2% numéro bouton, max=100, min=0, position du bouton=50 res% = dll_call3("SetDialButtonResultMode",db2%,3,handle(12)) : ' résultat dans edit 12
db3% = dll_call3("CreateDialButton",handle(10),1,3) :' typ%=1 (simple disque rotatif):ID%=3 identifiant du dialbutton res% = dll_call4("LocateDialButton",db3%,140,15,30) :' db3% numéro bouton, positions x%=140 et y%=15, diamètre=30 res% = dll_call4("ConfigureDialButton",db3%,100,0,25):' db3% numéro bouton, max=100, min=0, position du bouton=25 res% = dll_call3("SetDialButtonResultMode",db3%,3,handle(13)) : ' résultat dans edit 13 gosub indiq end
indiq: caption 21,text$(11):caption 22,text$(12):caption 23,text$(13) return
close0: res% = dll_call1("DeleteDialButton",db1%) res% = dll_call1("DeleteDialButton",db2%) res% = dll_call1("DeleteDialButton",db3%) dll_off return Je pense que c'est un oubli dans la mise au point de ta fonction. A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 5 Jan 2018 - 13:15 | |
| Oui, en effet ! Merci de l'avoir signalé. C'est corrigé dans le source de KGF.dll, suite à ton message, mais il faudra que je finisse la correction du Designer avec ObjectMover avant de refaire une distribution, car sinon, il n'y aura plus grand chose en état de marche... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 5 Jan 2018 - 14:54 | |
| Nouvelle version: KGF.dll V8.30 du 05/01/2018Nouveautés: - Designer: début de la refonte totale, désactivation de certaines fonctions - ObjectMover: correction d'un bug en suppression - Novelles fonctions: CreateDesigner, DeleteDesigner - DialButton: suppresion d'un message de diagnostiqueModules modifiés: KGF.dllLa doc es inchangée. Les sources seront à jour prochainement. Le Designer ainsi que l'ObjectMover sont en cours de réécriture complète, suite aux incompatibilités entre ces deux objets. Cette nouvelle version apporte: - un ObjectMover fonctionnel, bugs corrigés - un Designer fonctionnel en mode sélection unique pour tous les objets visuels Panoramic - deux nouvelles fonctions opérationnelles - bloquage des anciennes fonctions RegisterObjectForDesigner et UnregisterObjectFromDesigner Pour le moment, donc, ne pas tenter de faire une sélection multiple - ça plantera avec certitude. Par contre, en sélection unique, tout fonctionne. Dans le programme de démo, on peut sélectionner n'importe quel objet, le déplacer et/ou déformer. On peut utiliser le bouton "Stop" pour faire disparaître le Designer et sélectionner un autre objet, ou sélectionner un autre objet directement - l'ancien sera supprimé automatiquement avant de créer le nouveau. Il n'y a plus de plantage avec la sélection unique... Voici la démo: - Code:
-
' pb_designer.bas
label click, fin, CT, desel, chg, change, aligner, dump, close0
dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%, typ% dim DS%
full_space 0 : width 0,width(0) - 200 button 1 : width 1,100 : caption 1,"Container_tab" : on_click 1,CT button 2 : width 2,100 : caption 2,"Stop" : on_click 2,fin : left 2,100 combo 3 : width 3,150 : left 3,210 item_add 3,"Cadre intérieur" item_add 3,"Cadre extérieur" combo 4 : width 4,150 : left 4,370 : on_click 4,chg item_add 4,"Un objet seul" item_add 4,"Sélection d'objets" alpha 5 : left 5,540 : caption 5,"Largeur de grille magnétique:" spin 6 : left 6,690 : width 6,40 : min 6,1 : max 6,20 : position 6,1 combo 7 : left 7,750 : width 7,180 item_add 7,"Aucun alignement" item_add 7,"Alignement à gauche" item_add 7,"Alignement en haut" item_add 7,"Alignement à droite" item_add 7,"Alignement en bas" item_add 7,"Alignement en largeur" item_add 7,"Alignement en hauteur" item_add 7,"Alignement en largeur et hauteur" text 7,item_read$(7,1) button 8 : left 8,940 : caption 8,"Aligner" : on_click 8,aligner
' les 3 objets suivants pourront être déplacés et/ou redimensionnés memo 10 : top 10,40 : on_click 10,click alpha 11 : top 11,40 : left 11,200 : caption 11,"Libellé" : on_click 11,click button 12 : top 12,70 : left 12,200 : caption 12,"Test" : on_click 12,click picture 13 : top 13,400 : left 13,400 : on_click 13,click
container 30 : top 30,150 : left 30,10 : caption 30,"Mon container" width 30,300 : height 30,200 : on_click 30,click list 31 : parent 31,30 : top 31,20 : left 31,10 : on_click 31,click item_add 31,"Cliquer ici"
container_tab 40 : top 40,40 : left 40,320 : width 40,400 : height 40,300 tab 41 : parent 41,40 : caption 41,"Premier onglet" tab 42 : parent 42,40 : caption 42,"Deuxième onglet" tab 43 : parent 43,40 : caption 43,"Troisième onglet"
alpha 44 : parent 44,41 : top 44,20 : left 44,20 : caption 44,"AAAA" : on_click 44,click alpha 45 : parent 45,42 : top 45,20 : left 45,20 : caption 45,"BBBB" : on_click 45,click alpha 46 : parent 46,43 : top 46,20 : left 46,20 : caption 46,"CCCC" : on_click 46,click
form 100 : left 100,width(0)+1 : height 100,height(0) : width 100,200 caption 100,"Objets sélectionnés" list 101 : parent 101,100 : full_space 101 : on_click 101,desel memo 102 : top 102,400 : left 102,20 : width 102,300 : height 102,100 bar_both 102 on_change 102,change : ' hide 102
dll_on "KGF.dll" res% = dll_call2("SelectComboBoxItem",handle(3),2) res% = dll_call2("SelectComboBoxItem",handle(4),1) selmode% = item_index(4) on_close 0,close0
' gosub dump
end
close0: res% = dll_call1("KillProcessByHandle",handle(0)) return dump: memo 177 : full_space 177 : bar_both 177 res% = dll_call3("DumpPanoramic",handle(177),object_internal(12),150) item_add 177,"left=$"+hex$(left(12))+"="+str$(left(12)) return
change: for i%=1 to count(102) s$ = trim$(item_read$(102,i%)) if s$="" then return p% = instr(s$,",") obj% = val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") left obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") top obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") width obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) height obj%,val(s$) res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%) next i% return
CT: obj% = 40 parent% = parent(40) select item_index(4) case 1: res% = dll_call5("RegisterObjectForDesigner",40,handle(parent%),handle(102),object_internal(40), item_index(3)-1) case 2: res% = dll_call6("DesignerFunction",1,40,handle(parent%),handle(102),object_internal(40), item_index(3)-1) end_select res% = dll_call6("DesignerFunction",3,40,handle(101),handle(102),0,0) res% = dll_call6("DesignerFunction",5,40,handle(101),handle(102),0,position(6)) return
click: ' res% = dll_call1("TestKGF",object_internal(number_click)) ' return
if DS%<>0 select item_index(4) case 1: DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objet capturé case 2: ' rien à faire ici ! end_select end_if
obj% = number_click parent% = parent(obj%) select item_index(4) case 1: DS% = dll_call5("CreateDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) case 2: res% = dll_call6("DesignerFunction",1,obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) end_select ' res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) ' res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6)) return
fin: select item_index(4) case 1: DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objet capturé case 2: res% = dll_call6("DesignerFunction",0,0,0,0,0,0) end_select res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return
desel: s$ = item_read$(101,item_index(101)) n% = val(s$) res% = dll_call6("DesignerFunction",2,obj%,handle(parent%),handle(102),n%,0) res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return
chg: select selmode% case 1: res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer l'objet capturé case 2: res% = dll_call6("DesignerFunction",0,0,0,0,0,0) end_select res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) selmode% = item_index(4) return aligner: res% = dll_call6("DesignerFunction",6,obj%,handle(101),handle(102),0,item_index(7)-1) return
Surtout, il faut utiliser le code ci-dessus pour tester, pas le code publié précédemment ! Accessoirement, le message de test dans DialButton est supprimé. | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: KGF_dll - nouvelles versions Ven 5 Jan 2018 - 18:35 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 5 Jan 2018 - 18:39 | |
| Chouette !
Je suis en train de coderles déplacements en multi-sélection. La multi-selection en elle-même marche, ainsi que la suppression de la multi-sélection (pas encore dans la version qui a été publié, mais ici, au "labo"). | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 10 Jan 2018 - 1:16 | |
| Nouvelle version: KGF.dll V8.31 du 10/01/2018Nouveautés: - Designer: fin de la refonte totale - retrait des fonctions UnregisterObjectFromSizeControl, RegisterObjectForSizeControl - nouvelles fonctions: CreateDesigner, CreateSelectedDesigner, CreateDesignerSelection - DesignerFunction: redéfinition et réécriture des codes opérations - implémentation correcte de la sélection multiple d'objets - DesignerFunction: code 2 = retourner dans un mémo le code Panoramic pour les objets sélectionnés en multi-sélectionModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Le programme de démo a été modifié pour gérer cette nouvelle version. Il permet de faire une sélection multiple d'objets et de les déplacer simultanément en tirant un quelconque des objets sélectionnés par le bord jaune des Designers qui entourent les objets sélectionnés, ou un seul en tirant l'icône du ObjectMover associé. Un clic sur un objet non encore sélectionné l'ajoute à la sélection et crée son Designer. Un clic sur un objet déjà sélectionné le retire de la sélection et supprime son Designer. Un clic sur le bouton "Panoramic" donne dans un mémo le code Panoramic pour créer les objets présents en multi-sélection. Ce mémo peut être caché (par HIDE) et peut être utilisé par un IDE pour générer une maquette decode. - Code:
-
' pb_designer.bas
label click, fin, CT, desel, chg, change, aligner, panoramic, dump
dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%, typ% dim DS%
full_space 0 : width 0,width(0) - 200 button 1 : width 1,100 : caption 1,"Container_tab" : on_click 1,CT button 2 : width 2,100 : caption 2,"Stop" : on_click 2,fin : left 2,100 combo 3 : width 3,150 : left 3,210 item_add 3,"Cadre intérieur" item_add 3,"Cadre extérieur" combo 4 : width 4,150 : left 4,370 : on_click 4,chg item_add 4,"Un objet seul" item_add 4,"Sélection d'objets" alpha 5 : left 5,540 : caption 5,"Largeur de grille magnétique:" spin 6 : left 6,690 : width 6,40 : min 6,1 : max 6,20 : position 6,1 combo 7 : left 7,750 : width 7,180 item_add 7,"Aucun alignement" item_add 7,"Alignement à gauche" item_add 7,"Alignement en haut" item_add 7,"Alignement à droite" item_add 7,"Alignement en bas" item_add 7,"Alignement en largeur" item_add 7,"Alignement en hauteur" item_add 7,"Alignement en largeur et hauteur" text 7,item_read$(7,1) button 8 : left 8,940 : caption 8,"Aligner" : on_click 8,aligner button 9 : left 9,1040 : caption 9,"Panoramic" : on_click 9,panoramic
' les 3 objets suivants pourront être déplacés et/ou redimensionnés memo 10 : top 10,40 : on_click 10,click alpha 11 : top 11,40 : left 11,200 : caption 11,"Libellé" : on_click 11,click button 12 : top 12,70 : left 12,200 : caption 12,"Test" : on_click 12,click picture 13 : top 13,400 : left 13,400 : on_click 13,click
container 30 : top 30,150 : left 30,10 : caption 30,"Mon container" width 30,300 : height 30,200 : on_click 30,click list 31 : parent 31,30 : top 31,20 : left 31,10 : on_click 31,click item_add 31,"Cliquer ici"
container_tab 40 : top 40,40 : left 40,320 : width 40,400 : height 40,300 tab 41 : parent 41,40 : caption 41,"Premier onglet" tab 42 : parent 42,40 : caption 42,"Deuxième onglet" tab 43 : parent 43,40 : caption 43,"Troisième onglet"
alpha 44 : parent 44,41 : top 44,20 : left 44,20 : caption 44,"AAAA" : on_click 44,click alpha 45 : parent 45,42 : top 45,20 : left 45,20 : caption 45,"BBBB" : on_click 45,click alpha 46 : parent 46,43 : top 46,20 : left 46,20 : caption 46,"CCCC" : on_click 46,click
form 100 : left 100,width(0)+1 : height 100,height(0) : width 100,200 caption 100,"Objets sélectionnés" list 101 : parent 101,100 : full_space 101 : on_click 101,desel memo 102 : top 102,400 : left 102,20 : width 102,300 : height 102,100 bar_both 102 on_change 102,change : ' hide 102
dll_on "KGF.dll" res% = dll_call2("SelectComboBoxItem",handle(3),2) res% = dll_call2("SelectComboBoxItem",handle(4),1) selmode% = item_index(4)
' gosub dump
end
dump: memo 177 : full_space 177 : bar_both 177 res% = dll_call3("DumpPanoramic",handle(177),object_internal(12),150) item_add 177,"left=$"+hex$(left(12))+"="+str$(left(12)) return
change: for i%=1 to count(102) s$ = trim$(item_read$(102,i%)) if s$="" then return p% = instr(s$,",") obj% = val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") left obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") top obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") width obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) height obj%,val(s$) res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%) next i% return
CT: obj% = 40 parent% = parent(40) select item_index(4) case 1: res% = dll_call5("RegisterObjectForDesigner",40,handle(parent%),handle(102),object_internal(40), item_index(3)-1) case 2: res% = dll_call6("DesignerFunction",1,40,handle(parent%),handle(102),object_internal(40), item_index(3)-1) end_select res% = dll_call6("DesignerFunction",3,40,handle(101),handle(102),0,0) res% = dll_call6("DesignerFunction",5,40,handle(101),handle(102),0,position(6)) return
click: ' res% = dll_call1("TestKGF",object_internal(number_click)) ' return
obj% = number_click parent% = parent(obj%)
if item_index(4)=1 if DS%<>0 then DS% = dll_call1("DeleteDesigner",DS%) : ' libérer le ou les objets capturés else res% = dll_call6("DesignerFunction",0,obj%,0,0,object_internal(obj%),0) if res%<>0 DS% = res% DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return end_if end_if select item_index(4) case 1: DS% = dll_call5("CreateDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) case 2: DS% = dll_call5("CreateSelectedDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) end_select res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6)) return
fin: DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objets capturés res% = dll_call1("CreateDesignerSelection",1) : ' supprimer la multi-sélection res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return
desel: s$ = item_read$(101,item_index(101)) n% = val(s$) res% = dll_call6("DesignerFunction",2,obj%,handle(parent%),handle(102),n%,0) res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return
chg: res% = dll_call1("CreateDesignerSelection",1) : ' vider une sélection existante select selmode% case 1: DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objet capturé case 2: res% = dll_call1("CreateDesignerSelection",1) : ' vider une sélection existante end_select ' res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) selmode% = item_index(4) return aligner: res% = dll_call6("DesignerFunction",6,obj%,handle(101),handle(102),0,item_index(7)-1) return panoramic: res% = dll_call6("DesignerFunction",2,obj%,handle(101),handle(102),0,handle(102)) return | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 10 Jan 2018 - 19:57 | |
| Bonsoir klaus ! Je vois que tu as bien avancé et réussi à résoudre ce casse-tête ! Maintenant les déplacements d'un objet unique ou en groupe ne posent plus de soucis. Pareil pour les redimensionnements. Bravo ! Cela dit, il reste encore quelques imperfections... Je trouve assez bizarre la possibilité de sélectionner des objets qui sont sur des parents différents. car ensuite lors d'un alignement à gauche par exemple cela pose quelques problème de positionnement ! Est ce un oubli de ta part. tu n'avais peut être pas prévu ce cas de figure... D'autre part, Suite à une sélection multiple d'objets sur différents parents et après les avoir déplacés et redimensionnés, j'ai des difficultés pour désélectionner certains d'entre eux... Désolé pour ces remarques. j'espère qu'elles t'aideront à la mise au point ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 10 Jan 2018 - 20:41 | |
| - Citation :
- Est ce un oubli de ta part. tu n'avais peut être pas prévu ce cas de figure...
Ce n'est pas un oubli, mais je ne pensais pas que ça pouvait présenter un problème dans la "vraie vie", puisqu'en principe, on ne sélectionne pas au hasard, mais seulement les objets qu'on veut vraiment manipuler. Je bais voir ce que je peux faire à ce niveau... - Citation :
- j'ai des difficultés pour désélectionner certains d'entre eux...
Je vais tenter de reproduire le problème et le résoudre. As-tu essayé la touche "Panoramic" avec quelques objets en multi-sélection ? | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 10 Jan 2018 - 20:57 | |
| Ah oui la touche Panoramic, j'avais pas vu ! Super l'idée ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 10 Jan 2018 - 21:20 | |
| Merci !
En ce qui concerne la sélection simultanée d'objets de parents différents, j'ai trouvé un moyen simple de le détecter (et donc, de le refuser). Faut-il le faire ou faut-il laisser la liberté ? Pour moi, ce ne sont que quelques lignes de code à ajouter lors de la sélection d'un objet. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 10 Jan 2018 - 21:30 | |
| Et pourquoi ne pas mettre une option avec quelque chose comme : res%=CALL1(Designer_Option_Parent,o%) où o% pourrait être à 0 ou 1 selon si l'on active ou pas l'option de sélection des objets sur plusieurs parents... A toi de voir... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 10 Jan 2018 - 22:23 | |
| Nouvelle version: KGF.dll V8.32 du 10/01/2018Nouveautés: - CreateSelectedDesigner: reconnaître et traiter les parents des objets à sélectionner - DesignerFunction: code 4 = autoriser/interdire des parents diférents des objets en multi-sélection (défaut: interdit) - DesignerFunction codes 1 et 2: correctioin d'un bugModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Par défaut, on bloque maintenant la sélection d'objets de parents différents en multi-sélection. Le code 4 de DesignerFunction permet de gérer l'autorpsation. De plus, un bug pour DesignerFunction codes 1 et 2 a été corrigé (en lien avec la désélection défaillante d'un objet en multi-sélection, dans certains cas). Voici le programme de démo (adapté dans le sous-programme Click: - Code:
-
' pb_designer.bas
label click, fin, CT, desel, chg, change, aligner, panoramic, dump
dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%, typ% dim DS%
full_space 0 : width 0,width(0) - 200 button 1 : width 1,100 : caption 1,"Container_tab" : on_click 1,CT button 2 : width 2,100 : caption 2,"Stop" : on_click 2,fin : left 2,100 combo 3 : width 3,150 : left 3,210 item_add 3,"Cadre intérieur" item_add 3,"Cadre extérieur" combo 4 : width 4,150 : left 4,370 : on_click 4,chg item_add 4,"Un objet seul" item_add 4,"Sélection d'objets" alpha 5 : left 5,540 : caption 5,"Largeur de grille magnétique:" spin 6 : left 6,690 : width 6,40 : min 6,1 : max 6,20 : position 6,1 combo 7 : left 7,750 : width 7,180 item_add 7,"Aucun alignement" item_add 7,"Alignement à gauche" item_add 7,"Alignement en haut" item_add 7,"Alignement à droite" item_add 7,"Alignement en bas" item_add 7,"Alignement en largeur" item_add 7,"Alignement en hauteur" item_add 7,"Alignement en largeur et hauteur" text 7,item_read$(7,1) button 8 : left 8,940 : caption 8,"Aligner" : on_click 8,aligner button 9 : left 9,1040 : caption 9,"Panoramic" : on_click 9,panoramic
' les 3 objets suivants pourront être déplacés et/ou redimensionnés memo 10 : top 10,40 : on_click 10,click alpha 11 : top 11,40 : left 11,200 : caption 11,"Libellé" : on_click 11,click button 12 : top 12,70 : left 12,200 : caption 12,"Test" : on_click 12,click picture 13 : top 13,400 : left 13,400 : on_click 13,click
container 30 : top 30,150 : left 30,10 : caption 30,"Mon container" width 30,300 : height 30,200 : on_click 30,click list 31 : parent 31,30 : top 31,20 : left 31,10 : on_click 31,click item_add 31,"Cliquer ici"
container_tab 40 : top 40,40 : left 40,320 : width 40,400 : height 40,300 tab 41 : parent 41,40 : caption 41,"Premier onglet" tab 42 : parent 42,40 : caption 42,"Deuxième onglet" tab 43 : parent 43,40 : caption 43,"Troisième onglet"
alpha 44 : parent 44,41 : top 44,20 : left 44,20 : caption 44,"AAAA" : on_click 44,click alpha 45 : parent 45,42 : top 45,20 : left 45,20 : caption 45,"BBBB" : on_click 45,click alpha 46 : parent 46,43 : top 46,20 : left 46,20 : caption 46,"CCCC" : on_click 46,click
form 100 : left 100,width(0)+1 : height 100,height(0) : width 100,200 caption 100,"Objets sélectionnés" list 101 : parent 101,100 : full_space 101 : on_click 101,desel memo 102 : top 102,400 : left 102,20 : width 102,300 : height 102,100 bar_both 102 on_change 102,change : ' hide 102
dll_on "KGF.dll" res% = dll_call2("SelectComboBoxItem",handle(3),2) res% = dll_call2("SelectComboBoxItem",handle(4),1) selmode% = item_index(4)
' gosub dump
end
dump: memo 177 : full_space 177 : bar_both 177 res% = dll_call3("DumpPanoramic",handle(177),object_internal(12),150) item_add 177,"left=$"+hex$(left(12))+"="+str$(left(12)) return
change: for i%=1 to count(102) s$ = trim$(item_read$(102,i%)) if s$="" then return p% = instr(s$,",") obj% = val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") left obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") top obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") width obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) height obj%,val(s$) res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%) next i% return
CT: obj% = 40 parent% = parent(40) select item_index(4) case 1: res% = dll_call5("RegisterObjectForDesigner",40,handle(parent%),handle(102),object_internal(40), item_index(3)-1) case 2: res% = dll_call6("DesignerFunction",1,40,handle(parent%),handle(102),object_internal(40), item_index(3)-1) end_select res% = dll_call6("DesignerFunction",3,40,handle(101),handle(102),0,0) res% = dll_call6("DesignerFunction",5,40,handle(101),handle(102),0,position(6)) return
click: ' res% = dll_call1("TestKGF",object_internal(number_click)) ' return
obj% = number_click parent% = parent(obj%)
res% = dll_call6("DesignerFunction",0,obj%,0,0,object_internal(obj%),0) if res%<>0 DS% = res% DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return end_if select item_index(4) case 1: DS% = dll_call5("CreateDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) case 2: DS% = dll_call5("CreateSelectedDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) end_select res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6)) return
fin: DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objets capturés res% = dll_call1("CreateDesignerSelection",1) : ' supprimer la multi-sélection res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return
desel: s$ = item_read$(101,item_index(101)) n% = val(s$) res% = dll_call6("DesignerFunction",2,obj%,handle(parent%),handle(102),n%,0) res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return
chg: res% = dll_call1("CreateDesignerSelection",1) : ' vider une sélection existante select selmode% case 1: DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objet capturé case 2: res% = dll_call1("CreateDesignerSelection",1) : ' vider une sélection existante end_select ' res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) selmode% = item_index(4) return aligner: res% = dll_call6("DesignerFunction",6,obj%,handle(101),handle(102),0,item_index(7)-1) return panoramic: res% = dll_call6("DesignerFunction",2,obj%,handle(101),handle(102),0,handle(102)) return | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 10 Jan 2018 - 22:57 | |
| Klaus, il y a un problème dès le départ... Sans changer aucun paramètres je peux sélectionner plusieurs objets sur plusieurs parents. Alors que tu dis que normalement l'option est désactivée par defaut pour les objets sur plusieurs parents. En plus la sélection du CONTAINER_TAB pour un seul objet provoque une erreur ! Bon courage pour la suite... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 11 Jan 2018 - 0:49 | |
| Bon, c'était un problème du code Panoramic. Voici la version opérationnelle (pas de changement de KGF.dll): - Code:
-
' pb_designer.bas
label click, fin, CT, desel, chg, change, aligner, panoramic, dump
dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%, typ% dim DS%
full_space 0 : width 0,width(0) - 200 button 1 : width 1,100 : caption 1,"Container_tab" : on_click 1,CT button 2 : width 2,100 : caption 2,"Stop" : on_click 2,fin : left 2,100 combo 3 : width 3,150 : left 3,210 item_add 3,"Cadre intérieur" item_add 3,"Cadre extérieur" combo 4 : width 4,150 : left 4,370 : on_click 4,chg item_add 4,"Un objet seul" item_add 4,"Sélection d'objets" alpha 5 : left 5,540 : caption 5,"Largeur de grille magnétique:" spin 6 : left 6,690 : width 6,40 : min 6,1 : max 6,20 : position 6,1 combo 7 : left 7,750 : width 7,180 item_add 7,"Aucun alignement" item_add 7,"Alignement à gauche" item_add 7,"Alignement en haut" item_add 7,"Alignement à droite" item_add 7,"Alignement en bas" item_add 7,"Alignement en largeur" item_add 7,"Alignement en hauteur" item_add 7,"Alignement en largeur et hauteur" text 7,item_read$(7,1) button 8 : left 8,940 : caption 8,"Aligner" : on_click 8,aligner button 9 : left 9,1040 : caption 9,"Panoramic" : on_click 9,panoramic
' les 3 objets suivants pourront être déplacés et/ou redimensionnés memo 10 : top 10,40 : on_click 10,click alpha 11 : top 11,40 : left 11,200 : caption 11,"Libellé" : on_click 11,click button 12 : top 12,70 : left 12,200 : caption 12,"Test" : on_click 12,click picture 13 : top 13,400 : left 13,400 : on_click 13,click
container 30 : top 30,150 : left 30,10 : caption 30,"Mon container" width 30,300 : height 30,200 : on_click 30,click list 31 : parent 31,30 : top 31,20 : left 31,10 : on_click 31,click item_add 31,"Cliquer ici"
container_tab 40 : top 40,40 : left 40,320 : width 40,400 : height 40,300 tab 41 : parent 41,40 : caption 41,"Premier onglet" tab 42 : parent 42,40 : caption 42,"Deuxième onglet" tab 43 : parent 43,40 : caption 43,"Troisième onglet"
alpha 44 : parent 44,41 : top 44,20 : left 44,20 : caption 44,"AAAA" : on_click 44,click alpha 45 : parent 45,42 : top 45,20 : left 45,20 : caption 45,"BBBB" : on_click 45,click alpha 46 : parent 46,43 : top 46,20 : left 46,20 : caption 46,"CCCC" : on_click 46,click
form 100 : left 100,width(0)+1 : height 100,height(0) : width 100,200 caption 100,"Objets sélectionnés" list 101 : parent 101,100 : full_space 101 : on_click 101,desel memo 102 : top 102,400 : left 102,20 : width 102,300 : height 102,100 bar_both 102 on_change 102,change : ' hide 102
dll_on "KGF.dll" res% = dll_call2("SelectComboBoxItem",handle(3),2) res% = dll_call2("SelectComboBoxItem",handle(4),1) selmode% = item_index(4)
' gosub dump
end
dump: memo 177 : full_space 177 : bar_both 177 res% = dll_call3("DumpPanoramic",handle(177),object_internal(12),150) item_add 177,"left=$"+hex$(left(12))+"="+str$(left(12)) return
change: for i%=1 to count(102) s$ = trim$(item_read$(102,i%)) if s$="" then return p% = instr(s$,",") obj% = val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") left obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") top obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") width obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) height obj%,val(s$) res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%) next i% return
CT: obj% = 40 parent% = parent(40)
select item_index(4) case 1 res% = dll_call1("CreateDesignerSelection",1) : ' libérer une éventuelle sélection multiple DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection DS% = dll_call5("CreateDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) case 2 res% = dll_call6("DesignerFunction",0,obj%,0,0,object_internal(obj%),0) if res%<>0 DS% = res% DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) else DS% = dll_call5("CreateSelectedDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) end_if end_select res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6)) return
click: ' res% = dll_call1("TestKGF",object_internal(number_click)) ' return
obj% = number_click parent% = parent(obj%)
select item_index(4) case 1 res% = dll_call1("CreateDesignerSelection",1) : ' libérer une éventuelle sélection multiple DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection DS% = dll_call5("CreateDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) case 2 res% = dll_call6("DesignerFunction",0,obj%,0,0,object_internal(obj%),0) if res%<>0 DS% = res% DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) else DS% = dll_call5("CreateSelectedDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) end_if end_select res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6)) return
fin: DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objets capturés res% = dll_call1("CreateDesignerSelection",1) : ' supprimer la multi-sélection res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return
desel: s$ = item_read$(101,item_index(101)) n% = val(s$) res% = dll_call6("DesignerFunction",2,obj%,handle(parent%),handle(102),n%,0) res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return
chg: res% = dll_call1("CreateDesignerSelection",1) : ' vider une sélection existante select selmode% case 1: DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objet capturé case 2: res% = dll_call1("CreateDesignerSelection",1) : ' vider une sélection existante end_select ' res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) selmode% = item_index(4) return aligner: res% = dll_call6("DesignerFunction",6,obj%,handle(101),handle(102),0,item_index(7)-1) return panoramic: res% = dll_call6("DesignerFunction",2,obj%,handle(101),handle(102),0,handle(102)) return EDITOn peut même simplifier. Car le traitement pour un objet cliqué ou celui du container_tab est le même, seul change l'identification de l'objet, puisque container_tab n'a pas d'évènement on_click. Et maintenant avec une petite case à cocher pour autoriser les parents différents en sélection muliple: - Code:
-
' pb_designer.bas
label click, objet, fin, CT, desel, chg, change, aligner, panoramic, parents, dump
dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%, typ% dim DS%
full_space 0 : width 0,width(0) - 200 button 1 : width 1,100 : caption 1,"Container_tab" : on_click 1,CT button 2 : width 2,100 : caption 2,"Stop" : on_click 2,fin : left 2,100 combo 3 : width 3,150 : left 3,210 item_add 3,"Cadre intérieur" item_add 3,"Cadre extérieur" combo 4 : width 4,150 : left 4,370 : on_click 4,chg item_add 4,"Un objet seul" item_add 4,"Sélection d'objets" alpha 5 : left 5,540 : caption 5,"Largeur de grille magnétique:" spin 6 : left 6,690 : width 6,40 : min 6,1 : max 6,20 : position 6,1 combo 7 : left 7,750 : width 7,180 item_add 7,"Aucun alignement" item_add 7,"Alignement à gauche" item_add 7,"Alignement en haut" item_add 7,"Alignement à droite" item_add 7,"Alignement en bas" item_add 7,"Alignement en largeur" item_add 7,"Alignement en hauteur" item_add 7,"Alignement en largeur et hauteur" text 7,item_read$(7,1) button 8 : left 8,940 : caption 8,"Aligner" : on_click 8,aligner button 9 : left 9,1040 : caption 9,"Panoramic" : on_click 9,panoramic check 14 : left 14,1040 : top 14,30 : width 14,100 : caption 14,"Parents différents" :on_click 14,parents
' les 3 objets suivants pourront être déplacés et/ou redimensionnés memo 10 : top 10,40 : on_click 10,click alpha 11 : top 11,40 : left 11,200 : caption 11,"Libellé" : on_click 11,click button 12 : top 12,70 : left 12,200 : caption 12,"Test" : on_click 12,click picture 13 : top 13,400 : left 13,400 : on_click 13,click
container 30 : top 30,150 : left 30,10 : caption 30,"Mon container" width 30,300 : height 30,200 : on_click 30,click list 31 : parent 31,30 : top 31,20 : left 31,10 : on_click 31,click item_add 31,"Cliquer ici"
container_tab 40 : top 40,40 : left 40,320 : width 40,400 : height 40,300 tab 41 : parent 41,40 : caption 41,"Premier onglet" tab 42 : parent 42,40 : caption 42,"Deuxième onglet" tab 43 : parent 43,40 : caption 43,"Troisième onglet"
alpha 44 : parent 44,41 : top 44,20 : left 44,20 : caption 44,"AAAA" : on_click 44,click alpha 45 : parent 45,42 : top 45,20 : left 45,20 : caption 45,"BBBB" : on_click 45,click alpha 46 : parent 46,43 : top 46,20 : left 46,20 : caption 46,"CCCC" : on_click 46,click
form 100 : left 100,width(0)+1 : height 100,height(0) : width 100,200 caption 100,"Objets sélectionnés" list 101 : parent 101,100 : full_space 101 : on_click 101,desel memo 102 : top 102,400 : left 102,20 : width 102,300 : height 102,100 bar_both 102 on_change 102,change : ' hide 102
dll_on "KGF.dll" res% = dll_call2("SelectComboBoxItem",handle(3),2) res% = dll_call2("SelectComboBoxItem",handle(4),1) selmode% = item_index(4)
' gosub dump
end
dump: memo 177 : full_space 177 : bar_both 177 res% = dll_call3("DumpPanoramic",handle(177),object_internal(12),150) item_add 177,"left=$"+hex$(left(12))+"="+str$(left(12)) return
change: for i%=1 to count(102) s$ = trim$(item_read$(102,i%)) if s$="" then return p% = instr(s$,",") obj% = val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") left obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") top obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) p% = instr(s$,",") width obj%,val(left$(s$,p%-1)) s$ = mid$(s$,p%+1,100) height obj%,val(s$) res% = dll_call6("DesignerFunction",7,obj%,handle(101),handle(102),object_internal(obj%),i%) next i% return
CT: obj% = 40 parent% = parent(40) gosub objet return
click: ' res% = dll_call1("TestKGF",object_internal(number_click)) ' return
obj% = number_click parent% = parent(obj%)
objet: select item_index(4) case 1 res% = dll_call1("CreateDesignerSelection",1) : ' libérer une éventuelle sélection multiple DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection DS% = dll_call5("CreateDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) case 2 res% = dll_call6("DesignerFunction",0,obj%,0,0,object_internal(obj%),0) if res%<>0 DS% = res% DS% = dll_call1("DeleteDesigner",DS%) : ' libérer cet objet de la sélection res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) else DS% = dll_call5("CreateSelectedDesigner",obj%,handle(parent%),handle(102),object_internal(obj%),item_index(3)-1) end_if end_select res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6)) return
fin: DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objets capturés res% = dll_call1("CreateDesignerSelection",1) : ' supprimer la multi-sélection res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return
desel: s$ = item_read$(101,item_index(101)) n% = val(s$) res% = dll_call6("DesignerFunction",2,obj%,handle(parent%),handle(102),n%,0) res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) return
chg: res% = dll_call1("CreateDesignerSelection",1) : ' vider une sélection existante select selmode% case 1: DS% = dll_call1("DeleteDesigner",DS%) : ' libérer l'objet capturé case 2: res% = dll_call1("CreateDesignerSelection",1) : ' vider une sélection existante end_select ' res% = dll_call6("DesignerFunction",3,obj%,handle(101),handle(102),0,0) selmode% = item_index(4) return aligner: res% = dll_call6("DesignerFunction",6,obj%,handle(101),handle(102),0,item_index(7)-1) return panoramic: res% = dll_call6("DesignerFunction",2,obj%,handle(101),handle(102),0,handle(102)) return parents: res% = dll_call6("DesignerFunction",4,0,0,0,0,checked(14)) return
Dernière édition par Klaus le Jeu 11 Jan 2018 - 9:16, édité 1 fois | |
| | | 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
| |
| |
| |