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 |
|
|
| Nouvelle fonction pour "percer un trou" dans une form ! | |
| | Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Nouvelle fonction pour "percer un trou" dans une form ! Lun 21 Juin 2010 - 21:19 | |
| J'ai ajouté une nouvelle fonction dans KGF.dll qui permet de percer un trou en forme d'ellipse dans n'importe quelle form ! A suivre: percer des trous rectangulaires et de formes composées de rectangles et d'ellipses, et la creation de forms aux formes composées de rectangles et d'ellipses, et même de parties NON contigües ! Voici l'appel: - Code:
-
i% = dll_call6("WindowEllipticHole",handle(nform),m,x1,y1,x2,y2)
Tous les paramètres doivent être donnés en entiers, soit en constante numérique, soit en variable avec le %. nform est le numéro d'objet de la form concernée m est le mode opératoire: 1=percer 0=boucher le trou x1,y1 est le coin en haut à gauche du rectangle contenant x2 est la largeur de l'ellipse y2 est la hauteur de l'ellipse. Voici un programme de démo: - Code:
-
label trouer, boucher dim i%
memo 1 top 1,40 left 1,10 width 1,400 height 1,300 item_add 1,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" item_add 1,"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" item_add 1,"ccccccccccccccccccccc" item_add 1,"dddddddddddddddddddddddddddddddddddddddddddddddddd" item_add 1,"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" item_add 1,"fffffffffffffffffffffffffffffffffffffffffffff" item_add 1,"gggggggggggggggggggggggggggggggggggggg"
button 2 top 2,10 left 2,10 caption 2,"Trouer" on_click 2,trouer
button 3 top 3,10 left 3,120 caption 3,"Boucher" on_click 3,boucher
dll_on "KGF.dll" end
trouer: i% = dll_call6("WindowEllipticHole",handle(0),1,50,60,300,200) return
boucher: i% = dll_call6("WindowEllipticHole",handle(0),0,30,60,300,200) return
end
Amusez-vous bien ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Lun 21 Juin 2010 - 22:22 | |
| Ça alors c'est spectaculaire ! Encore une fois, un grand bravo Klaus !
Il va falloir écrire un bouquin rien que pour tes dll et leur mode d'emploi/exemples. N'empêche que ce serait bien si tu joignais chaque fois au zip de la dll sa documentation à jour par exemple au format rtf (à décompacter au même endroit), ce serait bien pratique. | |
| | | Invité Invité
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Lun 21 Juin 2010 - 22:31 | |
| Je viens de voir ce post, et je grandi avec tes idées. Bravo |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Lun 21 Juin 2010 - 22:36 | |
| Une petite remarque: j'aurais appelé les paramètres x, y, w, h au lieu de x1, y1, x2, y2, les premiers sont les coordonnées, les deux autres les dimensions.
Autre remarque: le x pour boucher (30) n'est pas le même que pour trouer (50) ? et pourtant ça marche...
PS n'y a-t-il pas une confusion dans les paramètres ? si je fais 1, 50, 100, 200, 200 je troue une ellipse au lieu d'un cercle ? si j'augmente le y ça aplatit l'ellipse...
PS2 je crois que j'ai compris, x2 et y2 portent bien leur nom finalement, ce sont les coordonnées opposées du rectangle contenant (et non les largeur et hauteur de l'ellipse).
PS3 (décidément) j'ai l'impression que les paramètres du 'boucher' n'ont aucune importance, ça bouche systématiquement le trou creusé.
Dernière édition par JL35 le Lun 21 Juin 2010 - 22:46, édité 1 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Lun 21 Juin 2010 - 22:45 | |
| Tu as raison pour la doc: je l'intégrerai dans le zip pour la prochaine version, et je tiendrai compte des remarques concernant le nommage des paramètres. La suite viendra rapidement.
Petite remarque: sur mon site, à droite de la ligne pour la DLL, il y a un point d'intérogation clickable qui donne une version succinte de la documentation... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Lun 21 Juin 2010 - 22:51 | |
| Pour la doc, oui je sais, je l'avais même rapatriée (copier/coller) pour en faire un rtf avec quelques enrichissements (c'est plus joli), mais c'est pas facile à mettre à jour, savoir ce qui a changé... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Lun 21 Juin 2010 - 23:21 | |
| Décidément c'est très amusant cette perçeuse de formes. Je m'amuse à mettre une image dans un Picture, à faire un trou dedans, puis à superposer avec une autre image pour combiner les deux (en sauvegardant avec une copie partielle d'écran), c'est très marrant. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Mar 22 Juin 2010 - 0:22 | |
| Joli montage ! Oui, il y a de quoi jouer...
Bientôt, on aura des découpes rectangulaires, puis des combinaisons de multiples découpes rectangulaires et ovales...
Et il y aura aussi la possibilité de construire des form Panoramic ayant la forme d'ellipse ou de toutes sortes de combinaisons d'ellipses, de rectangles, de trous rectanngles et ovales - c'est en cours de test et viendra prochainement. C'est quand-même chouette de pouvoir réellement dessiner la forme de sa "form" Panoramic - qu'est-ce que tu en penses ? | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Mar 22 Juin 2010 - 13:51 | |
| Effectivement ça ouvre des horizons... je reconnais que je n'en éprouvais pas le besoin (je n'avais jamais pensé à ça), mais maintenant que l'outil existe ça va donner des idées ! et en plus avec des combinaisons de formes, c'est extraordinaire comme possibilités. Je suis tout ça de près, merci encore à toi. Et comme tu as à peine le temps d'annoncer une possibilité future qu'elle est déjà réalisée... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Mer 23 Juin 2010 - 1:20 | |
| KGF.dll passe à la version V01.01, et la distribution contient une documentation complète en format RTF.
J'ai ajouté les nouvelles fonctions suivantes, en lien avec le "perçage de trou en forme d'ellipse": - percer/boucher un trou rectangulaire - ajouter un rectangle à une région windows complexe - ajouter une ellipse à une région windows complexe - percer/boucher un trou selon une région windows complexe
Une région windows complexe est identifiée par un numéro gardé dans un entier, comme dim region%. Elle est initialisée par region%=0, puis construite morceau par morceau en ajoutant rectangles et ellipses. Ces morceaux n'ont PAS besoin d'être contigus, et ils peuvent se chevaucher.
Ces régions serviront bientôt aussi à créer des forms Panoramic de formes "libres".
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Mer 23 Juin 2010 - 15:27 | |
| Bravo pour la doc au format rtf, c'est quand même beaucoup plus agréable à lire (et ça m'évitera de la mettre à jour moi-même à chaque fois ) et d'un autre côté je pense que ce sera plus facile pour toi également. Tu as réagi un peu vite à ma remarque sur les paramètres du trou, comme je l'ai rectifié après en réalité ce sont bien x1, y1, x2, y2, x2 et y2 n'étant pas les dimensions du trou comme tu l'avais indiqué à tort, mais bien les coordonnées opposées par rapport à x1 et y1. A rectifier dans la doc (et dans la syntaxe). Remarque: les coordonnées à indiquer doivent ignorer la hauteur du bandeau et de la largeur de la bordure de la Form, alors que les commandes 2D de Panoramic en tiennent compte. Si je reprends ton exemple un peu modifié: - Code:
-
label trouer, boucher dim i%, x1, y1, x2, y2, offx, offy offx = 8: offy = 28: ' offset x et y pour tenir compte des bordures de Form 0
2D_Target_Is 0: ' quadrillage de 50 pixels for i% = 0 to 550 step 50 2D_Line i%, 0, i%, 400 next i% for i% = 0 to 400 step 50 2D_Line 0, i%, 550, i% Next i%
button 2: top 2,10: left 2,10: caption 2,"Trouer": on_click 2,trouer button 3: top 3,10: left 3,120: caption 3,"Boucher": on_click 3,boucher
dll_on "C:\Langages\Panoramic\KGF.dll": ' mon emplacement à moi end
trouer: x1 = 150 y1 = 100 x2 = 450 y2 = 300 i% = dll_call6("WindowRectangleHole",handle(0),1,x1+offx,y1+offy,x2+offx,y2+offy) return
boucher: i% = dll_call6("WindowRectangleHole",handle(0),0,0,0,0,0) return Les paramètres 'coordonnées' du "boucher' sont là pour la forme mais ne sont pas exploités, à confirmer. Autre remarque, dans mon exemple ci-dessus le 'boucher' ne rétablit pas le graphique qui était derrière le trou. Il faut dire que je réédite souvent mes messages (j'oublie toujours quelque chose), tant que personne n'a répondu, évidemment.
Dernière édition par JL35 le Mer 23 Juin 2010 - 20:46, édité 1 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Mer 23 Juin 2010 - 18:20 | |
| Je prends ton code et fais des essais. Je te tiendrai au courant. Ceci dir, en ce qui concerne les coordonnées, l'intention était bien de donner les coordonnées du coin en haut à gauche, puis la largeur et la hauteur du rectangle. Je vais voir ça plus en détail, mais l'intention, c'était cela. A suivre. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Mer 23 Juin 2010 - 18:42 | |
| Après une rapide inspection des sources, j'ai trouvé un passage non conforme de paramètres à la routine WindowTopMost, dans les deux sources.
Souvent, tu passes le numéro de form directement, au lieu de passer le handle de la form. A d'autres endroits, tu passes correctement le handle. Voici les endroits qui posent problème:
Nouveau Plan.bas: lignes 107, 108, 109, 110, et 111 text_simplifié_clipboard.bas: lignes 282, 458, 635, 1187
Je pense que si tu passes systématiquement handle(7) au lieu de 7 (et de même pour les autres numéros de form), ça ira beaucoup mieux ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Mer 23 Juin 2010 - 20:48 | |
| J'ignore ton post ci-dessus qui est destiné à cosmos. J'ai édité mon bout de code ci-dessus pour mettre en évidence la différence entre coordonnées et dimensions, et l'offset dont il faut tenir compte entre les coordonnées Windows et Panoramic (dans le cas où les bordures Panoramic sont visibles). | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Mer 23 Juin 2010 - 22:40 | |
| OK, JL35, je vais reprendre le code modifié. 0+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Dim 19 Déc 2010 - 3:11 | |
| Sur un autre fil de discussion du forum, Cosmos70 m'a fait part d'une anomalie de fonctionnement de la fonction WindowRectangleHole : en essayant de percer un deuxième trou dans une form, le premier semble disparaître.
Après analyse, j'ai trouvé une erreur logique dans mon programme conduisant à cet effet.
Cette erreur est corrigée, et KGF.dll passe à la version 1.09 du 19/12/2010.
Une inversion de paramètres dans la documentation, concernant cette fonction, a également été corrigée.
| |
| | | Invité Invité
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! Dim 19 Déc 2010 - 9:30 | |
| Éfficacité et grandeur d'âme! Cette année, la Mère Nöel va penser à toi cette année.
|
| | | Contenu sponsorisé
| Sujet: Re: Nouvelle fonction pour "percer un trou" dans une form ! | |
| |
| | | | Nouvelle fonction pour "percer un trou" dans une form ! | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |