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 | |
|
+8JL35 Marc papydall Jicehel Yannick pascal10000 Minibug Klaus 12 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 Ven 29 Avr 2016 - 0:55 | |
| Dans mon WebDav, dossier Jeux\Test_Sprites, il y a maintenant un fichier Scene2d.doc qui représente une première version de la documentation de mon système 2D. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: KGF_dll - nouvelles versions Ven 29 Avr 2016 - 7:51 | |
| Génial. Demain j'aurai du temps et je testerais en essayant de faire un petit jeux histoire de mettre en pratique (un truc simple genre casse-brique juste histoire de voir ce que ça donne en condition réel avant de s'attaquer à des trucs plus complexes mais qui marcheront très certainement avec ce principe, type Stratego). Bref, je lirais le fichier Doc avant pour ne pas poser de question dont la réponse est dedans | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 29 Avr 2016 - 8:20 | |
| Bonjour, j'ai testé les 2 petits bonshommes qui se déplacent. C'est super ! j'ai modifié les vitesses car il y avait trop peu d'écart et ce n'était pas évident de voir la différence. J'ai chargé la doc Bon, je sais, il fallait bien que tu décrives d'abord l'environnement . Pour moi, c'est de l'hébreu. Je remarque que l'on commence à avoir des fonctions qui sont dans Pangine2D. Si tu as besoin Klaus, tu trouveras un zip Pangine2D sur mon webdev. C'est celui que Jack nous a fourni, tu y trouvera des idées et surtout des images. Bon courage. A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: KGF_dll - nouvelles versions Ven 29 Avr 2016 - 9:25 | |
| En lisant ton commentaire Jean-Claude j'ai vu que j'avais raté le message de Klaus avec l'animation auto... Super ça. Je pense que si c'est géré en auto, ça résoudra une partie des problème de rapidité. Je sens que je vais m'amuser à tester tout ça demain.
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 29 Avr 2016 - 12:17 | |
| KGF.dll V6.47 du 29/04/2016Nouveautés: - nouvelles fonctions DeleteScend2D et DeleteSpriteInScene2D - CreateSpriteInScene2D retourne maintenant un ID du sprite créé, au lieu de 0 - nouvelles fonctions InformAboutScene2D et InformAboutSpriteInScene2DModules modifiés: KGF.dll Scene2D.docLa doc et les sources sources sont à jour. J'ai fait une restructuration interne pour identifier systématiquement les sprites par un identifiant unique retourné par CreateSpriteInScene2D. Cet identifiant est créé automatiquement et ne change pas durant la vie du sprite. Auparavant, on adressait un sprite par son "indice" dans la table des sprites d'un Scene2D. Mais cet indice change dans 2 cas de figure: lorsqu'un change le Z-order du sprite (en avant/en arrière) ou lorsqu'on supprime un sprite. J'ai donc créé la notion d'ID du sprite qui, lui, reste immuable. Mais contrairement à ce qui est d'usage en Panoramic, ce n'est le programmeur qui impose l'identifiant, mais KGF.dll qui le construit automatiquement. Il faut donc éventuellement mémoriser ces identifiants dans des variables ou dans un tableau d'entiers. Dans la foulée, j'ai ajouté les fonctions permettant de supprimer proprement un sprite ou un Scene2D entier, et de retourner des informations détaillées sur un Scene2D ou un sprite. Dans le programme de démo ci-après, il y a deux boutons pour afficher les formations sur le Scene2D et sur un sprite, et il y a des lignes désactivées juste avant le END, permettant de tester l'effet de ces deux routines de suppression: Démo: - Spoiler:
- Code:
-
' test_Scene2D_Klaus.bas
label arriere, avant, cacher, cachertout, montrertout label event, fixe, mobile, mobiletout, zoomplus, zoommoins label changerimg, imagelist, changerilb label deplacer, info1, info2
dim res%, SC2D%, SC2D_PS%, IL%, w%, h%, f$, sInfo%, i% dim sversion$, iversion% : sversion$ = string$(255," ")
dim M1% : M1% = 0 - 1 dim bl$ : bl$ = string$(5," ") dim back$ : back$ = "SC2D_fond.jpg" dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp" dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp" dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp" dim sprite3$ : sprite3$ = "crane.bmp"
width 0,1000 : height 0,700
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) caption 0,trim$(sversion$)
button 1 : top 1 ,10 : left 1,10 : caption 1,"En arrière" : on_click 1,arriere button 2 : top 2, 10 : left 2,100 : caption 2,"En avant" : on_click 2,avant button 3 : top 3, 10 : left 3,190 : caption 3,"Cacher" : on_click 3,cacher button 4 : top 4, 10 : left 4,280 : caption 4,"Cacher tout" : on_click 4,cachertout button 5 : top 5, 10 : left 5,370 : caption 5,"Montrer tout" : on_click 5,montrertout button 6 : top 6, 10 : left 6,460 : caption 6,"Fixe" : on_click 6,fixe button 7 : top 7, 10 : left 7,550 : caption 7,"Mobile" : on_click 7,mobile button 8 : top 8, 10 : left 8,640 : caption 8,"Mobile tout" : on_click 8,mobiletout
button 9 : top 9, 40 : left 9,640 : caption 9,"Déplacer" : on_click 9,deplacer button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +" : on_click 10,zoomplus button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -" : on_click 11,zoommoins button 12 : top 12,130 : left 12,640 : caption 12,"Changer img" : on_click 12,changerimg button 13 : top 13,160 : left 13,640 : caption 13,"ImageList" : on_click 13,imagelist button 14 : top 14,190 : left 14,640 : caption 14,"Changer ilb" : on_click 14,changerilb button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D" : on_click 15,info1 button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite" : on_click 16,info2
memo 96 : top 96,10 : left 96,730 : width 96,220 : height 96,400 font_name 96,"Courier" : font_size 96,8 open_dialog 97 edit 98 : hide 98 : on_change 98,event alpha 99 : top 99,450 : left 99,10 : caption 99,"en attente"
SC2D% = dll_call1("CreateScene2D",handle(0)) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0) dim SC2D_Panoramic%(SC2D_PS%) SC2D_Panoramic%(0) = SC2D_PS% SC2D_Panoramic%(1) = handle(98) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1) res% = dll_call2("LoadBackgroundToScene2D",SC2D%,adr(back$))
res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,130,0,200,adr(sprite0$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,150,30,0,100,adr(sprite1$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,250,30,0, 0,adr(sprite2$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,350,30,0,200,adr(sprite3$))
res% = dll_call6("DefineSpriteContactInScene2D",SC2D%,1,70,70,70,70) res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D%,1,0)
' activer les 2 lignes suivantes pour tester la suppression d'un sprite ! ' message "Taper RETURN pour continuer..." ' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)
' activer les 2 lignes suivantes pour tester la suppression du Scene2D ! ' message "Taper RETURN pour continuer..." ' res% = dll_call1("DeleteScene2D",SC2D%)
end
' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%) ' id% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' sel% = 0 pour non sélectionnable et 1 pour sélectionnable ' mov% = 0 pour non déplaçable et 1 pour déplaçable ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement '
event: if text$(98)="status" caption 99,"sprite "+str$(SC2D_Panoramic%(2))+" à "+str$(SC2D_Panoramic%(3))+","+str$(SC2D_Panoramic%(4))+" dimension "+str$(SC2D_Panoramic%(5))+","+str$(SC2D_Panoramic%(6))+" collision: "+str$(SC2D_Panoramic%(7))+" contact: "+str$(SC2D_Panoramic%(8)) end_if return
arriere: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,M1%) return avant: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,1) return cacher: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,0,1,1,0) return cachertout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,0,1,1,0) return
montrertout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0) return
fixe: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,0,0) return mobile: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,0) return
mobiletout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0) return
deplacer: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,0,200,220) return zoomplus: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic%(5)*3)/2 h% = (SC2D_Panoramic%(6)*3)/2 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D%,0,w%,h%) return zoommoins: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic%(5)*2)/3 h% = (SC2D_Panoramic%(6)*2)/3 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D%,0,w%,h%) return changerimg: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,0,adr(f$)) return imagelist: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier ILB|*.ilb" f$ = file_name$(97) if f$="_" then return if IL%<>0 then res% = dll_call1("DeleteImageList",IL%) IL% = dll_call2("CreateImageList",16,16) : ' en vue de KGF.ilb - à changer selon les besoins ! res% = dll_call2("LoadImageList",IL%,adr(f$)) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,1,IL%) return
changerilb: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return res% = val(message_text$) if res%<0 then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,2,res%) return info1: clear 96 sInfo% = dll_call2("InformAboutScene2D",SC2D%,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call2("InformAboutScene2D",SC2D%,adr(info%)) item_add 96,"Scene2D:" item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif" item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D" item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D" item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D" item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D" return info2: clear 96 sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D%,0,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call3("InformAboutSpriteInScene2D",SC2D%,0,adr(info%)) item_add 96,"Scene2D:" item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite" item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite" item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite" item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite" item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite" item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance" item_add 96,right$(bl$+str$(info%( 8)),4) + " = ImageList" item_add 96,right$(bl$+str$(info%( 9)),4) + " = indice ImageList" item_add 96,right$(bl$+str$(info%(10)),4) + " = animation activée" item_add 96,right$(bl$+str$(info%(11)),4) + " = intervalle en ms" item_add 96,right$(bl$+str$(info%(12)),4) + " = sprite visible" return
Et le bonhomme qui marche: - Spoiler:
- Code:
-
' test_sprite_anime.bas
label choix
dim res%, IL%, f$, SC2D%, SC2D_PS%
dll_on "KGF.dll"
width 0,700 : height 0,500 button 1 : top 1,10 : left 1,10 : caption 1,"Choix ILB" : on_click 1,choix edit 98 : hide 98
SC2D% = dll_call1("CreateScene2D",handle(0)) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0) dim SC2D_Panoramic%(SC2D_PS%) SC2D_Panoramic%(0) = SC2D_PS% SC2D_Panoramic%(1) = handle(98) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1)
open_dialog 2
end
choix: filter 2,"Fichier bibliothèque|*.ilb" f$ = file_name$(2) if f$="_" then return if IL%<>0 then res% = dll_call1("DeleteImageList",IL%) IL% = dll_call2("CreateImageList",60,106) res% = dll_call2("LoadImageList",IL%,adr(f$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,20,0,200,0) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,1,1,IL%) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,1,2,0) res% = dll_call6("CreateSpriteInScene2D",SC2D%,200,80,0,200,0) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,2,1,IL%) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,2,2,0) message "Taper RETURN pour lancer l'animation..." res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,1,3,200) : ' animation par 200 ms res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,2,3,300) : ' animation par 300 ms return
Dernière édition par Klaus le Ven 29 Avr 2016 - 18:13, édité 1 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 29 Avr 2016 - 14:05 | |
| C'est enregistré et testé. les suppressions du sprite et du scene2d fonctionnent. Un petit bug dans ce code de démo la ligne 89 plante, je l'ai shunté pour faire le test. - Code:
-
' caption 99,"sprite "+str$(SC2D_Panoramic%(2))+" à "+str$(SC2D_Panoramic%(3))+","+str$(SC2D_Panoramic%(4))+" dimension "+str$(SC2D_Panoramic%(5))+","+str$(SC2D_Panoramic%(6))+" collision: "+str$(SC2D_Panoramic%(7))+" contact: "+str$(SC2D_Panoramic%(Cool)
Pour l'autre démo (les petits bonshommes) rien à signaler, on ne voit pas la différence avec la précédente. 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 29 Avr 2016 - 14:17 | |
| - Code:
-
Un petit bug dans ce code de démo la ligne 89 plante, je l'ai shunté pour faire le test. Dommage... tu n'auras plus les informations affichées dans la ligne d'état en-dessous du Scene2D. C'est quoi, ce petit bug ? Chez moi, ça marche sans problème - je viens de retester tout. Est-ce que tu as vu le fonctionnement des deux nouveaux boutons d'information, à droite ? - Citation :
- Pour l'autre démo (les petits bonshommes) rien à signaler, on ne voit pas la différence avec la précédente.
Effectivement, pas de différence à ce nouveau. Je l'ai juste remis pour centraliser l'information. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 29 Avr 2016 - 17:50 | |
| J'ai trouvé, c'est cool qui n'est pas cool.le 8 et ) a été remplacé par le forum par cool dans le code. Pour éviter ça, tu peux utiliser les balise code et /code à l'intérieur du spoiler. J'ai tout testé, je ne vois pas de bug (sauf 2 choses, voir ci-dessous) , les infos sur Sur le scene2d et les sprites c'est super car ça va aider au codage. les 2 choses: 1) quand on change l'image d'un sprite, on est obligé de cliquez sur zoom+ pour l'avoir en entier. 2) Le zoom utilisé une fois en + puis en - ou le contraire ça marche parfaitement. Mais si on zoom plusieurs fois dans un sens au retour à la taille initiale le sprite est déformé (là, je crois que ce n'est pas possible de faire autrement). De toute façon on a une commande pour recharger l'image. 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 29 Avr 2016 - 18:19 | |
| - Citation :
- Pour éviter ça, tu peux utiliser les balise code et /code à l'intérieur du spoiler.
Merci pour l'info. J'ai rectifié ci-dessus. - Citation :
- quand on change l'image d'un sprite, on est obligé de cliquez sur zoom+ pour l'avoir en entier.
Je vais tester cela. Etrange... - Code:
-
Mais si on zoom plusieurs fois dans un sens au retour à la taille initiale le sprite est déformé C'est normal. On transforme l'image, et on perd forcément de la précision. En cas de chargement par un fichier ou par une image de l'ImageList associée, je pourrais peut-être faire quelque chose, en mémorisant l'original. Mais si l'image venait du presse-papier, c'est foutu. Et j'avais ajouté cette fonctionnalité exprès pour faire le lien avec les fonctionnalités Panoramic CLIPBOARD_COPY afin de prendre le contenu un PICTURE ou d'un IMAGE. EDIT - Citation :
-
- Citation :
- quand on change l'image d'un sprite, on est obligé de cliquez sur zoom+ pour l'avoir en entier.
Je vais tester cela. Etrange... J'ai trouvé, et c'est corrigé ! La dll est en ligne, sans changement de numéro de version. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Ven 29 Avr 2016 - 20:01 | |
| Bonjour Klaus Comme j'arrive a la fin de GPP, est ce que tu pourrais regarder les fonctions du DESIGNER. On avais parlé il y a quelque temps d'une idée de positionnement 'magnétique'... J'aimerai bien pourvoir l'intégrer dans la version bêta. Je sais que tu as pas mal de projets en cours entre le grid, les sprites, etc... mais peut être tu pourra trouver un peu de temps pour moi. je ne suis pas non plus dans l'urgence, si tu ne peux pas c'est pas grave je comprendrais. Merci d'avance. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 29 Avr 2016 - 20:45 | |
| J'avais commencé à regarder ça, mais ne n'ai pas encore trouvé le "truc" pour le faire. Ca accroche encore avec le déplacement d'un seul objet, et je ne te parle pas de la sélection d'objets multiples... mais je n'ai pas abandonné ! | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Ven 29 Avr 2016 - 22:44 | |
| Ok Klaus ! Je te remercie. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 29 Avr 2016 - 23:20 | |
| Qu'est-ce que tu envisages comme maillage de la grille magnétique ? Avec 20, c'est quasiment inexploitable. Avec 10, ça devient utilisable, avec 5, un a quelque chose de visuellement correct, durant le déplacement. Ceci dit, le placement final est toujours correct. Le déplacement se fait "par bonds", verticalement et/ou horizontalement. Si tu veux, je peux te mettre une version de test dans mon WebDav, prenant en charge le paramétrage de la taille du maillage. Cela agira uniquement sur un seul objet, et uniquement sur le déplacement, pas encore sur le changement de dimensions. Donc, ce sera sensible en tirant un des côtés du cadre de déplacement. Est-ce que ça t'intéresse ? EDIT Je t'ai placé un fichier KGF_test_designer.dll dans mon WebDav, dossier DLLs. A utiliser avec ton programme (c'est un KGF.dll complet, mais avec l'ajout décrit ci-dessus), ou avec ce programme de démo, en choisissant le maillage par le spin en haut à droite: - Code:
-
' pb_designer.bas
label click, fin, CT, desel, chg, change
dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%
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
' 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
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_test_designer.dll" res% = dll_call2("SelectComboBoxItem",handle(3),2) res% = dll_call2("SelectComboBoxItem",handle(4),1) selmode% = item_index(4)
end 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(12),150)
end
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$) next i% return
CT: obj% = 40 parent% = object_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% = object_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 | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 30 Avr 2016 - 0:41 | |
| Merci Klaus je vais regarder | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 30 Avr 2016 - 1:00 | |
| Je viens de tester, effectivement c'est bien le principe auquel je pensé.
Pour l'instant j'ai limité la sélection dans GPP a un seul objet donc pas de soucis de ce coté.
On peut envisager cette approche qui me semble intéressante. Je pense paramétrer les bonds sur 5 a 10 pixels maxi. au delà de cette valeur cela n'a plus vraiment d’Intérêt. Je verrai ensuite a l'usage dans GPP...
Concernant le bonds de n pixels, tu prévois une fonction pour la générer a la demande j'imagine ? Y aura t'il aussi une possibilité de la déconnecter en passant la variable a zéro par exemple ?
Merci Klaus
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 30 Avr 2016 - 1:13 | |
| Comme tu peux voir dans le source de mon petit code, c'est la fonction - Code:
-
res% = dll_call6("DesignerFunction",5,obj%,handle(101),handle(102),0,position(6))
avec le code fonction 5 qui impose la largeur du maillage, avec le dernier paramètre donnant le nombre de pixels. Si tu peux "désactiver" la grille magnétique, il suffit de passer 1 (ou 0, d'ailleurs). Si cela te convient, je vais maintenant appliquer le même principe pour le tirage des coins. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 30 Avr 2016 - 8:44 | |
| Bonjour Klaus ! Merci pour ta disponibilité ! je suis partant pour cette version. Concernant les 'poignées' oui ça aussi ça serait bien. A toi de voir si c'est possible... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 30 Avr 2016 - 11:42 | |
| KGF.dll V6.48 du 30/04/2016Nouveautés: - DesignerFunction: nouveau code 5: imposer la taille de maillage de la grille magnétiqueModules modifiés: KGF.dll KGF.chmLa doc et les sources sources sont à jour. Cette version implémente la notion de "grille magnétique" pour le Designer. Pour le moment, cela marche sur un seul objet, pas en sélection d'objets multiples. Voici le programme de démo pour cette version: - Code:
-
' pb_designer.bas
label click, fin, CT, desel, chg, change
dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%
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
' 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
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)
end 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(12),150)
end
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$) next i% return
CT: obj% = 40 parent% = object_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% = object_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 | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 30 Avr 2016 - 14:04 | |
| J'ai amélioré la visualisation du cadre de sélection, en cours de déplacement et/ou en cours de changement de dimension. Et avec une taille de 1 pixel pour la grille magnétique, la sélection multiple marche aussi, en déplacement du groupe sélectionné.
Avec une grille magnétique de taille supérieure, le déplacement de groupe ne marche pas encore. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 30 Avr 2016 - 14:23 | |
| Merci Klaus ! Là je dois m'absenter mais a mon retour je teste tout cela. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 30 Avr 2016 - 15:00 | |
| - Citation :
- Avec une grille magnétique de taille supérieure, le déplacement de groupe ne marche pas encore.
HEUREKA !!! J'ai trouvé ! Le déplacement d'un groupe sélectionné marche maintenant, quelque soit la taille de la grille magnétique ! Recharge la dernière version (toujours la version V6.48), mais celle de 15 heures ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 30 Avr 2016 - 19:14 | |
| KGF.dll V6.49 du 30/04/2016Nouveautés: - DesignerFunction: nouveau code 6: aligner une sélection d'objets sur le premier objet sélectionnéModules modifiés: KGF.dll KGF.chmLa doc et les sources sources sont à jour. Ce code fonction permet, en fonction de l'option passée en dernier paramètre, d'aligner tous les objets d'une sélection sur le premier objet de la sélection (qui doit donc contenir au moins 2 objets). Les alignements possibles sont: à gauche, en haut, à droite et en bas. Voici le programme de démo, étendu pour pouvoir montrer les alignements: - Code:
-
' pb_designer.bas
label click, fin, CT, desel, chg, change, aligner
dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%
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,130 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" text 7,item_read$(7,1) button 8 : left 8,890 : 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
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)
end 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(12),150)
end
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$) next i% return
CT: obj% = 40 parent% = object_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% = object_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 Sam 30 Avr 2016 - 20:40 | |
| Merci Klaus !
Je n'ai pas pris trop le temps de regarder cette après midi. Je vais jeter un œil maintenant.
As tu changé quelque chose dans le mode de fonctionnement général car j'ai une erreur dans la gestion de la variable qui récupère les positions et la taille de l'objet sélectionné. Il faut que je regarde ç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 30 Avr 2016 - 21:03 | |
| Non, je n'ai rien changé à ce niveau. Les informations ne reviennent pas dans une variable, mais dans un MEMO (objet 112 dans mon programme de démo), avec une ligne par objet à modifier. Je viens de faire une mise à jour (en gardant le numéro de version KGF.dll V6.49 du 30/04/2016: j'ai ajouté la possibilité d'aligner une sélection d'objets également selon la largeur, la hauteur et largeur/hauteur simultanément. Voici le programme de démo qui fait ça: - Code:
-
' pb_designer.bas
label click, fin, CT, desel, chg, change, aligner
dim res%, parent%, n%, s$, selmode%, p%, obj%, i%, temp%
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
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)
end 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(12),150)
end
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$) next i% return
CT: obj% = 40 parent% = object_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% = object_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 Cela permet d'harmoniser facilement un GUI, en donnant les mêmes positions et/ou dimensions à une série d'objets. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 30 Avr 2016 - 21:19 | |
| Ok Klaus ! J'ai surement modifié quelque chose ! Oui c'est un MEMO qui recupère les infos et ensuite on décompose le résultat dans la variable. C'est a ce moment que ça bug ! et pourtant j'ai teste le retour du MEMO est OK. Donc une fois de plus le problème vient bien de moi. Je vais chercher... merci pour tout klaus. | |
| | | 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
| |
| |
| |