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 | |
|
+13The Gamer Nardo26 silverman Minibug Pedro mindstorm pascal10000 Jicehel papydall Jean Claude JL35 Yannick Klaus 17 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 Mar 17 Nov 2015 - 13:44 | |
| Nouvelle version: KGF.dll V5.34 du 17/11/2015Nouveautés: - nouvelles fonction UnregisterObjectFromSizeControl, RegisterObjectForSizeControlModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Toujours sur le site miroir et le WebDav !Ces nouvelles fonctions sont documentées dans une nouvelle rubrique "Designer". Elles pourront être utiles à tous ceux qui développent un IDE ou qui veulent dynamiquement changer la disposition d'une fenêtre. On peut ainsi changer la position et/ou les dimensions de n'importe quel objet visuel, simplement en le tirant par la souris: opération "Drag" poour le positionnement et l'opération "ctrl/Drag" pour le dimensionnement. Ceci peut se faire dans un IDE, mais également dans n'importe quel programme Panoramic ! Voici une démo: il suffit de cliquer sur le mémo, le libellé ou le bouton "Test", puis agir dessus: - Code:
-
' test_DesignDrag.bas
label click, fin
dim res%
button 2 : width 2,100 : caption 2,"Stop" : on_click 2,fin : left 2,100
' 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
dll_on "KGF.dll"
end
click: res% = dll_call0("UnregisterObjectFromSizeControl") : ' libérer un objet éventuellement capturé res% = dll_call5("RegisterObjectForSizeControl",handle(0),object_internal(number_click),200,200,255) return fin: res% = dll_call0("UnregisterObjectFromSizeControl") : ' libérer l'objet capturé return Comme on peut voir, c'est extrêmement simple !
Dernière édition par Klaus le Mar 17 Nov 2015 - 19:05, édité 2 fois | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mar 17 Nov 2015 - 16:25 | |
| Bonsoir Klaus ! Très pratique cette petite fonction. Maintenant que j'ai tout paramétré dans GPP et que ca fonctionne parfaitement, je n'ai pas envie de tout changer ! Mais je vais quand même y réfléchir... | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: KGF_dll - nouvelles versions Mar 17 Nov 2015 - 17:08 | |
| merci klaus ça c une fonction qui va être utile pauvre minibug t'as pas de chance obliger de tout reparamétré GPP si tu as du courage a+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 17 Nov 2015 - 22:50 | |
| Nouvelle version: KGF.dll V5.35 du 17/11/2015Nouveautés: - module Designer (SizeControl): affichage et gestion de 8 poignées de redimensionnementModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Toujours sur le site miroir et le WebDav !Le comportement est maintenant beaucoup plus intuitif. Lorsqu'un objet est sélectionné, un cadre nour s'affiche autour du rectangle du designer, montrant 8 poignées. On peut tirer une de ces poignées pour redimensionner l'objet, ou déplacer l'objet entier en le tirant par un point quelconque hors de ces poignées. Il n'est plus nécessaire d'utiliser la touche Control. Tout est géré par la souris. EDIT Voici une version étendue du programme de démo, avec un container, un container_tab et des tabs. - Code:
-
' test_DesignDrag.bas
label click, fin, CT
dim res%, parent%
full_space 0 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
' 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,10 : 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
dll_on "KGF.dll" end
CT: parent% = object_parent(40) res% = dll_call0("UnregisterObjectFromSizeControl") : ' libérer un objet éventuellement capturé res% = dll_call5("RegisterObjectForSizeControl",handle(parent%),object_internal(40),200,200,255) return
click: parent% = object_parent(number_click) res% = dll_call0("UnregisterObjectFromSizeControl") : ' libérer un objet éventuellement capturé res% = dll_call5("RegisterObjectForSizeControl",handle(parent%),object_internal(number_click),200,200,255) return fin: res% = dll_call0("UnregisterObjectFromSizeControl") : ' libérer l'objet capturé return | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 18 Nov 2015 - 7:29 | |
| Bonjour Klaus Effectivement, ça devient très convivial. Hargfff ! Si tu continues comme ça, je vais vraiment être obligé de m'y mettre... En tout cas Bravo Klaus ! Cela ressemble exactement au développement que tu avais fais en pure Panoramic. Sérieusement, j'y réfléchi. juste une question : serait il compliquer de changer la couleur de sélection ? ( j'aime pas trop, désolé !) Edit : Après réflexion Klaus, je me demande s'il n'est pas plus sympa de laisser l'objet visible lors de déplacement. C'est d'ailleurs ce que je fais dans GPP. tu devrais regarder, tu comprendras peut être mieux ce que je veux dire. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 18 Nov 2015 - 10:02 | |
| - Citation :
- serait il compliquer de changer la couleur de sélection ?
La couleur RGB est donnée sous forme de paramètre à la fonction RegisterObjectForSizeControl. En voici la définition (voir la doc): - Code:
-
res% = dll_call5("RegisterObjectForSizeControl",handle(parent%),object_internal(object%),R%,G%,B%) - Citation :
- je me demande s'il n'est pas plus sympa de laisser l'objet visible lors de déplacement.
C'est ce que je voulais faire au début. Mais malheureusement, pour cela, il me faut le handle de l'objet à déplacer. Or, certains objets Panoramic n'ont pas de handle (alpha, picture, ...). Donc, je crée un panel directement dans la DLL, je déssinne dessus ce que je veux (le texte d'aide, le cadre et les poignées) et je déplace et déforme ce panel. Mais je ne suis pas encore arrivé au bout de ce que je voulais faire avec ça. J'essaie en ce moment de copier une "photo" graphique de l'objet comme image de fond du panel... A suivre. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 18 Nov 2015 - 10:38 | |
| Re Klaus ! Pour la couleur c'est bien ce qu'il me semblais mais j'avais pas creusé... Pour l'affichage de l'objet sa serai top ! Perso je déplace directement l'objet par LEFT et TOP et pareil pour le redimensionnement par WIDTH et HEIGHT. pourquoi tu ne fais pas pareil ? Aprés il faut juste que tu positionne les points au moins au 4 angles et c'est tout. Enfin bon 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 18 Nov 2015 - 11:30 | |
| - Citation :
- pourquoi tu ne fais pas pareil ?
Pour deux raisons: 1. raison principale: il faut que le "vole" la gestion des évènements à Panoramic pour pouvoir gérer le fait de tirer l'objet ou une poignée (évènements MouseDown - MouseMove - MouseUp). Ces évènements ne sont pas accessibles directement en Panoramic, et je ne peux pas intervenit sur me mécanisme interne des évènements de Panoramic. Le le fais donc sur un objet créé dans la DLL, car là, je maîtrise tout 2. Raison annexe: pour dessiner les poignées, il faut le canvas de l'objet. Or, ce canvas est dessiné dans l'évènement OnDraw de l'objet, et celui-ci n'est pas non plus accessible en Panoramic. Pour y accéder, il faut le handle, et certains objets Panoramic n'en ont pas. Et de toutes façons, je ne peux pas "voler" un évènement à Panoramic. Donc, retour à la solution ci-dessus... Crois-moi, si c'était si simple, il y a longtemps que je l'aurais fait. Je viens de mettre au point la gestion des poignées, et ça a été une vraie difficulté, même pour un objet créé dans la DLL, sans lien avec Panoramic. Impossible de mettre ça en place sur un objet Panoramic. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 18 Nov 2015 - 13:27 | |
| Nouvelle version: KGF.dll V5.36 du 18/11/2015Nouveautés: - module Designer (SizeControl): affichage de l'image de l'objet pendant l'opérationModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Toujours sur le site miroir et le WebDav !Maintenant, l'image de l'objet est maintenue, à la place du rectangle coloré, pendant l'opération, si R=G=B=0. Sinon, le rectangle coloré est appliqué aux couleurs RGB. Voici le programme de démo adapté, avec l'objet container_tab en rectangle coloré, et tous les autres objets avec maintien de l'image: - Code:
-
' test_DesignDrag.bas
label click, fin, CT
dim res%, parent%
full_space 0 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
' 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,10 : 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
dll_on "KGF.dll" end
CT: parent% = object_parent(40) res% = dll_call0("UnregisterObjectFromSizeControl") : ' libérer un objet éventuellement capturé res% = dll_call5("RegisterObjectForSizeControl",handle(parent%),object_internal(40),200,200,255) return
click: parent% = object_parent(number_click) res% = dll_call0("UnregisterObjectFromSizeControl") : ' libérer un objet éventuellement capturé res% = dll_call5("RegisterObjectForSizeControl",handle(parent%),object_internal(number_click),0,0,0) return fin: res% = dll_call0("UnregisterObjectFromSizeControl") : ' libérer l'objet capturé return | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 18 Nov 2015 - 13:27 | |
| OK Klaus, je comprends mieux ! Cela parait si simple en Panoramic... Donc pour l'instant le mieux, c'est d'attendre la suite. Bon courage Klaus, je suis sûr que tu vas trouver la solution. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 18 Nov 2015 - 13:35 | |
| Ben, essaie le programme de démo avec la toute dernière version... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 18 Nov 2015 - 15:54 | |
| IL y a de l'idée. Ça avance... Dommage que ce ne soit qu'une image de l'objet ! Pour l'instant je garde ma façon de faire sur GPP, mais je suis avec grand intérêt tes avancements. PS :J'ai juste quelques difficultés a trouver le bon fichier KGF entre les liens, le site, le WEBDAV on s'y perd un peu ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 18 Nov 2015 - 16:01 | |
| - Citation :
- J'ai juste quelques difficultés a trouver le bon fichier KGF entre les liens, le site, le WEBDAV on s'y perd un peu !
La réponse est ici: - Citation :
- La doc et les sources sont à jour. Toujours sur le site miroir et le WebDav !
Le lien vers le WebDav et vers le site miroir sont dans ma signature ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 19 Nov 2015 - 1:56 | |
| Il me semble que le serveur du site n°1 est ok J' ai pu mettre à jour le site du mag sur Webhost.... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 20 Nov 2015 - 1:45 | |
| Nouvelle version: KGF.dll V5.37 du 20/11/2015Nouveautés: - module Designer (SizeControl): refonte complète du fonctionnementModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Toujours sur le site miroir et le WebDav !J'ai refait complètement le fonctionnement du système. Maintenant, il n'est plus question de rectangle de couleur ou d'une copie d'image de l'objet, ni de poignées. Le nouveau fonctionnement dessine un cadre noir autour de l'objet, avec un petit bord planc intérieur. L'objet reste entièrement visible, tel qu'il est. Il suffit de "tirer" un des bords blancs pour déplacer l'objet, ou un des coins pour redimensionner l'objet. Ceci résoud tout problème de déformation visuelle pendant le redimensionnement. On verra toujours l'objet dans sa version réelle. Sur le plan de la syntaxe, j'ai supprimé des 3 paramètres R%, G% et B% aui n'ont plus de signification, étant donné qu'il n'y a plus de rectangle de couleur. Voici le programme de démo, adapté à cette version: - Code:
-
' test_DesignDrag.bas
label click, fin, CT
dim res%, parent%
full_space 0 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
' 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,10 : 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
dll_on "KGF.dll" end
CT: parent% = object_parent(40) res% = dll_call0("UnregisterObjectFromSizeControl") : ' libérer un objet éventuellement capturé res% = dll_call2("RegisterObjectForSizeControl",handle(parent%),object_internal(40)) return
click: parent% = object_parent(number_click) res% = dll_call0("UnregisterObjectFromSizeControl") : ' libérer un objet éventuellement capturé res% = dll_call2("RegisterObjectForSizeControl",handle(parent%),object_internal(number_click)) return fin: res% = dll_call0("UnregisterObjectFromSizeControl") : ' libérer l'objet capturé return Ces deux fonctions sont utilisables partout, dans n'importe quel programme Panoramic, même s'il ne s'agit pas d'un IDE. De quoi faire jouer l'utilisateur, sachant que les modifications se font dans le programme actif en mémoire, et non dans l'exécutable contenu dans le fichier EXE. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Ven 20 Nov 2015 - 7:23 | |
| Salut Kaus ! En voila une bien belle réalisation, avec tout comme il faut... J'étais persuadé que tu allais trouver la solution. Il ne me reste plus qu'a intégrer tout ça dans GPP. Car là, j'avoue que ça me convient parfaitement. En plus l'intérêt pour GPP est double : Avec ton principe, les objets pourront être déplacés soit a partir de la liste des objets a gauche ou bien directement pas un clic dessus. ça c'est super, ça rend GPP encore plus interactif. Je vais tenter l'intégration ce weekend. Voila une jolie avancé pour KGF mais aussi du coup pour GPP ! A grand merci a toi Klaus... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 20 Nov 2015 - 14:01 | |
| Nouvelle version: KGF.dll V5.38 du 20/11/2015
Nouveautés: - module Designer (SizeControl): utilisable maintenant sur un objet FORM également !
Modules modifiés: KGF.dll
Les sources sont à jour. Toujours sur le site miroir et le WebDav !
Il y avait une anomalie d'affichage, si l'objet sélectionné était une form. Ceci est corrigé. Accessoirement, si l'objet choisi est une form, le premier paramètre de la fonction RegisterObjectForSizeControl est ignoré. Il peut être passé comme 0, ou comme handle(0) - de toutes façons, il est ignoré. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 20 Nov 2015 - 21:52 | |
| Nouvelle version: KGF.dll V5.39 du 20/11/2015Nouveautés: - module Designer (SizeControl): nouveau paramètre opt% pour RegisterObjectForDesignerModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Le site principal est à nouveau actif, mis à jour et en ligne !Ce nouveau paramètre permet de définir où le rectangle de guidage va s'afficher. Si ce paramètre est 0, ol s'affiche à l'intérieur des limites de l'objet, sans emprise extérieure ! S'il est différent de 0, le cadre s'affiche comme avant, à l'extérieur de l'objet. Ceci est la valeur par défaut. Voici le programme de démo, adapté à cela, avec une combo permettant de choisir la position du cadre: - Code:
-
' test_DesignDrag.bas
label click, fin, CT
dim res%, parent%
full_space 0 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"
' 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
dll_on "KGF.dll" res% = dll_call2("SelectComboBoxItem",handle(3),2) end
CT: parent% = object_parent(40) res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer un objet éventuellement capturé res% = dll_call3("RegisterObjectForDesigner",handle(parent%),object_internal(40), item_index(3)-1) return
click: parent% = object_parent(number_click) res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer un objet éventuellement capturé res% = dll_call3("RegisterObjectForDesigner",handle(parent%),object_internal(number_click),item_index(3)-1) return fin: res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer l'objet capturé return | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Ven 20 Nov 2015 - 22:57 | |
| Je vais tester cela ! J'ai maintenant intégré la sélection des objets dans GPP. Encore merci Klaus Edit : Bonne idée le rectangle de sélection a l'intérieur ! Je viens de modifier GPP pour l'intégrer... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 21 Nov 2015 - 10:29 | |
| Nouvelle version: KGF.dll V5.40 du 21/11/2015Nouveautés: - module Designer: correction d'un bug dans RegisterObjectForDesignerModules modifiés: KGF.dllLa doc est inchangée. Les sources sont à jour. Auparavent, deux appels successifs de RegisterObjectForDesigner créait deux cadres de sélection, chacun pour son objet. Chaque cadre était utilisable, mais seul le dernier pouvait être supprimé par UnregisterObjectFromDesigner. La correction consiste à désenregister automatiquement l'objet précédent, s'il y en avait un, avant de traiter le suivant, de sorte qu'un seul cadre de sélection ne soit actif à tout instant. Ceci rend inutile d'utiliser UnregisterObjectFromDesigner avant un nouvel appel à RegisterObjectForDesigner, bien que cela ne génère aucune erreur. Voici le programme de démo adapté: - Code:
-
' test_DesignDrag.bas
label click, fin, CT
dim res%, parent%
full_space 0 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"
' 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
dll_on "KGF.dll" res% = dll_call2("SelectComboBoxItem",handle(3),2) end
CT: parent% = object_parent(40) res% = dll_call3("RegisterObjectForDesigner",handle(parent%),object_internal(40), item_index(3)-1) return
click: parent% = object_parent(number_click) res% = dll_call3("RegisterObjectForDesigner",handle(parent%),object_internal(number_click),item_index(3)-1) return fin: res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer l'objet capturé return Encore plus simple... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 21 Nov 2015 - 10:54 | |
| c'est noté Klaus. Je met a jour dans le programme. Merci. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 21 Nov 2015 - 16:34 | |
| Klaus, J'ai une petite question a te poser :
Serait il possible d'activer la sélection d'une ligne dans un LIST panoramic ou créer par KGF Par exemple une dll du style : dll_call2("SelectMemo" , Handle(memo%) , ligne%)
En fait c'est pour GPP. lorsque je sélectionne l'objet en cliquant dessus, je souhaiterai avoir la sélection simultanément sur le LIST de gauche
J'exclus l'option consistant a se positionner au bon endroit et faire exécuter un clic car trop complexe avec une grande liste et l'ascenseur vertical.
As tu une 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 Sam 21 Nov 2015 - 16:40 | |
| Tu peux sélectionner un élément dans une combo ou dans une liste. C'est dans l'aide, section "Objets", rubrique "Gestion des objets LIST et COMBO". Par exemple ceci, pour une liste: - Code:
-
res% = dll_call2("SelectListBoxItem",hnd%,item%) Est-ce que c'est ce que tu cherches ? Je m'en sers couramment... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 21 Nov 2015 - 17:02 | |
| Nouvelle version: KGF.dll V5.41 du 21/11/2015Nouveautés: - module Designer: ajout fonction DesignerFunction avec le mode multi-sélectionModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. La nouvelle fonction aura probablement d'autres extensions, mais pour le moment, elle gère la multi-sélection d'objets. Voici un petit résumé: DesinerFunction a les mêmes paramètres que RegisterObjectForDesigenr, avec un paramètre supplémentaire en première position qui est le code action: - Code:
-
res% = dll_call4("DesignerFunction",act%,handle(parent%),object_internal(object%),opt%) Les valeurs actuellement disponibles pour le code action sont les suivantes: - Citation :
- 0 = désélectionner tous les objets en multi-sélection
1 = ajouter un objet à la multi-sélection 2 = enlever un objet de la multi-sélection 3 = retourner la liste des objets sélectionnés dans un objet LIST La multi-sélection permet d'agir simultanément sur tous les objets de la sélection. Pour l'heure, cela jour sur le positionnement, uniquement. Mais on peut ainsi déplacer un groupe d'objets "en bloc", sans modifier les écarts relatifs entre ces objets. C'est une possibilité intéressante. Voici le programme de démo, adapté à cette nouvelle possibilité. On a une fenêtre à droite avec une liste montant à tout moment les objets sélectionnés (en fait, la valeur décimale de OBJECT_INTERNAL(N)...). Un clic sur une des lignes de cette liste désélectionne cet objet. Une combo en haut de l'écran permet de basculer entre les modes "Un seul objet" (par défaut) et "Multi-sélection". Voici le code: - Code:
-
' test_DesignDrag.bas
label click, fin, CT, desel, chg
dim res%, parent%, n%, s$, selmode%
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"
' 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
dll_on "KGF.dll" res% = dll_call2("SelectComboBoxItem",handle(3),2) res% = dll_call2("SelectComboBoxItem",handle(4),1) selmode% = item_index(4) end
CT: parent% = object_parent(40) select item_index(4) case 1: res% = dll_call3("RegisterObjectForDesigner",handle(parent%),object_internal(40), item_index(3)-1) case 2: res% = dll_call4("DesignerFunction",1,handle(parent%),object_internal(40), item_index(3)-1) end_select res% = dll_call4("DesignerFunction",3,handle(101),0,0) return
click: parent% = object_parent(number_click) select item_index(4) case 1: res% = dll_call3("RegisterObjectForDesigner",handle(parent%),object_internal(number_click),item_index(3)-1) case 2: res% = dll_call4("DesignerFunction",1,handle(parent%),object_internal(number_click),item_index(3)-1) end_select res% = dll_call4("DesignerFunction",3,handle(101),0,0) return fin: select item_index(4) case 1: res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer l'objet capturé case 2: res% = dll_call4("DesignerFunction",0,0,0,0) end_select res% = dll_call4("DesignerFunction",3,handle(101),0,0) return desel: s$ = item_read$(101,item_index(101)) n% = val(s$) res% = dll_call4("DesignerFunction",2,handle(parent%),n%,0) res% = dll_call4("DesignerFunction",3,handle(101),0,0) return chg: select selmode% case 1: res% = dll_call0("UnregisterObjectFromDesigner") : ' libérer l'objet capturé case 2: res% = dll_call4("DesignerFunction",0,0,0,0) end_select res% = dll_call4("DesignerFunction",3,handle(101),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 21 Nov 2015 - 17:13 | |
| Super Klaus, c'est bien ce que je cherche. Il va juste valoir (de nouveau ) reprendre le code pour adapter tout ça mais ça vaut le coup. Un grand merci 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
| |
| |
| |