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 |
|
|
| 2.10/2.11 du 2 Avril 2013: ajout fonction ClickDefineRect | |
| | Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: 2.10/2.11 du 2 Avril 2013: ajout fonction ClickDefineRect Mar 2 Avr 2013 - 0:02 | |
| Nouvelle version: KGF.dll V2.10 du 02/04/2013 EDIT KGF.dll V2.11 du 04/04/2013 : activation du code action -7 (MouseMove dans rectangle) (module modifié pour la V2.11: KGF.dll uniquement) Nouveautés: ajout d'une fonction permettant de définir une région rectangulaire. Modification de la fonction définissant les liens pour un rectangle, en utilisant les rectangles définis au préalable. ' définir un rectangle de numéro num% (de 1 à 200) DLL: res% = dll_call5("ClickDefineRect",num%,x%,y%,w%,h%) KGF_SUB: ClickDefineRect(num%,x%,y%,w%,h%)' lier une action à un rectangle num% défini préalablement (actions -6 ou -6 ou -7 seulement) DLL: res% = dll_call3("ClickSetLinkRect",hnd_button%,typ%,num%) KGF_SUB: ClickSetLinkRect(btn%,typ%,num%)Modules modifiés: KGF.dll KGF_SUB.bas KGF.chm, KGF.doc, KGF.pdfEt voici le programme de démo, avec un list et deux picture. Les deux picture sont redéfinis en rectangles 1 et 2, et on surveille l'entrée et la sortie dans le list ET les deux picture. - Code:
-
' test_mouse_over_ter.bas
label mouse_enter_memo, mouse_exit_memo label mouse_enter_rect, mouse_exit_rect, mouse_move_rect
dim dll$ : dll$ = "KGF.dll" dim langage$ : langage$ = "FR" ' dim langage$ : langage$ = "EN"
KGF_initialize(dll$)
memo 1 : top 1,10 : left 1,10 width 1,300 : height 1,300 if langage$="FR item_add 1,"Déplacez le curseur" item_add 1,"à l'aide de la souris." item_add 1,"Les objets vont" item_add 1,"changer d'aspect" else item_add 1,"Hoover the cursor" item_add 1,"over the objects" item_add 1,"and they will" item_add 1,"change their aspect" end_if picture 2 : top 2,10 : left 2,350 width 2,200 : height 2,400 picture 3 : top 3,320 : left 3,200 width 3,120 : height 3,100
edit 101 : top 101,320 : width 101,60 : left 101,10 : ' hide 101 button 201 :hide 201 : on_click 201,mouse_enter_memo button 301 :hide 301 : on_click 301,mouse_exit_memo
edit 102 : top 102,320 : width 102,60 : left 102,80: ' hide 102 button 202 :hide 202 : on_click 202,mouse_enter_rect button 302 :hide 302 : on_click 302,mouse_exit_rect button 402 :hide 402 : on_click 402,mouse_move_rect
' ClickSetHook(1,101) ' ClickSetLink(201,5) ' ClickSetLink(301,6) DefineMouseOver(1,201,101,5) DefineMouseOver(1,301,101,6)
' ClickSetHook(0,102) ' ClickDefineRect(1,left(2),top(2),width(2),height(2)) ' ClickDefineRect(2,200,320,120,100) ' ClickSetLinkRect(202,5,1) ' ClickSetLinkRect(302,6,1) ' ClickSetLinkRect(402,7,1) ' ClickSetLinkRect(202,5,2) ' ClickSetLinkRect(302,6,2) ' ClickSetLinkRect(402,7,2)
DefineMouseOverRect(0,202,102,5,1,left(2),top(2),width(2),height(2)) DefineMouseOverRect(0,302,102,6,1,left(2),top(2),width(2),height(2)) DefineMouseOverRect(0,402,102,7,1,left(2),top(2),width(2),height(2)) DefineMouseOverRect(0,202,102,5,2,200,320,120,100) DefineMouseOverRect(0,302,102,6,2,200,320,120,100) DefineMouseOverRect(0,402,102,7,2,200,320,120,100)
end
mouse_enter_memo: color 1,255,230,230 font_color 1,0,0,255 if langage$="FR" caption 0,"Entrée mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Enter mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_exit_memo: color 1,255,255,255 font_color 1,0,0,0 if langage$="FR" caption 0,"Sortie mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Exit mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_enter_rect: if langage$="FR" caption 0,"Entrée picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Enter picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_exit_rect: if langage$="FR" caption 0,"Sortie picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Exit picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_move_rect: if langage$="FR" caption 0,"Move picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Move picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
' DefineMouseOver: ' P1 = le numéro d'objet à surveiller ' P2 = le numéro du bouton fictif qui sert de relais/déclencheur (çà c'est pas encore trop dur à comprendre Laughing ) ' P3 = la variable de retour pour l'objet dans lequel se trouve la souris ' P4 = la variable de retour du type d'évènement en cours sub DefineMouseOver(obj%,btn%,edt%,act%) ClickSetHook(obj%,edt%) ClickSetLink(btn%,act%) end_sub
' DefineMouseOverRect: ' P1 = le numéro d'objet à surveiller ' P2 = le numéro du bouton fictif qui sert de relais/déclencheur (çà c'est pas encore trop dur à comprendre Laughing ) ' P3 = la variable de retour pour l'objet dans lequel se trouve la souris ' P4 = la variable de retour du type d'évènement en cours sub DefineMouseOverRect(obj%,btn%,edt%,act%,num%,x%,y%,w%,h%) ClickSetHook(obj%,edt%) ClickDefineRect(num%,x%,y%,w%,h%) ClickSetLinkRect(btn%,act%,num%) end_sub
#INCLUDE "KGF_SUB.bas"
Juste une petite indication pour l'utilité de cela: - on peut maintenant gérer le survol de plusieurs picture en même temps que celui des objets normaux Panoramic - on peut définir plusieurs zones "sensitives" dans un même picture et réagir lorsque le curseur survole ces zones. Un exemple: une carte de France sur laquelle on définit des carrés sensitifs autour des villes principales, et lors du survol, on affiche une information sur la ville. Le EDIT recevant les coordonnées contient aussi l'identification du rectangle, dans le cas d'une action sur un erectangle. Dans ce cas, lr format est: x,yRnx,y = adresse du curseur de la souris n = numéro du rectangle EDIT La modification du 4/4/2013 passant à la version 2.11 apporte la possibilité de gérer le survol (code -7) d'un rectangle, avec le suivi instantané du curseur, à l'intérieur d'un rectangle. Le programme de démo intègre cette fonction pour les deux rectangles.
Dernière édition par Klaus le Jeu 4 Avr 2013 - 14:23, édité 5 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 2 Avr 2013 - 12:20 | |
| Bravo Klaus, Voilà qui va encore simplifier les choses... Bientôt nous pourrons pourrons faire des animations "Panoramiflash" | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.10/2.11 du 2 Avril 2013: ajout fonction ClickDefineRect Jeu 4 Avr 2013 - 16:10 | |
| J'ai fait une légère modif dans KGF.dll (sans changement de version !). Il convient donc de recharger la DLL, surtout si l'on veut essayer le programme suivant: - Code:
-
' test_mouse_over_ter.bas
label mouse_enter_memo, mouse_exit_memo label mouse_enter_rect, mouse_exit_rect, mouse_move_rect
dim dll$ : dll$ = "KGF.dll" dim langage$ : langage$ = "FR" ' dim langage$ : langage$ = "EN"
dim x%, y%, r%, s$, p%
KGF_initialize(dll$)
memo 1 : top 1,10 : left 1,10 width 1,300 : height 1,300 if langage$="FR item_add 1,"Déplacez le curseur" item_add 1,"à l'aide de la souris." item_add 1,"Les objets vont" item_add 1,"changer d'aspect" else item_add 1,"Hoover the cursor" item_add 1,"over the objects" item_add 1,"and they will" item_add 1,"change their aspect" end_if picture 2 : top 2,10 : left 2,350 width 2,200 : height 2,400 picture 3 : top 3,320 : left 3,200 width 3,120 : height 3,100 edit 101 : top 101,320 : width 101,60 : left 101,10 : ' hide 101 button 201 :hide 201 : on_click 201,mouse_enter_memo button 301 :hide 301 : on_click 301,mouse_exit_memo
edit 102 : top 102,320 : width 102,60 : left 102,80: ' hide 102 button 202 :hide 202 : on_click 202,mouse_enter_rect button 302 :hide 302 : on_click 302,mouse_exit_rect button 402 :hide 402 : on_click 402,mouse_move_rect
' ClickSetHook(1,101) ' ClickSetLink(201,5) ' ClickSetLink(301,6) DefineMouseOver(1,201,101,5) DefineMouseOver(1,301,101,6)
' ClickSetHook(0,102) ' ClickDefineRect(1,left(2),top(2),width(2),height(2)) ' ClickDefineRect(2,200,320,120,100) ' ClickSetLinkRect(202,5,1) ' ClickSetLinkRect(302,6,1) ' ClickSetLinkRect(402,7,1) ' ClickSetLinkRect(202,5,2) ' ClickSetLinkRect(302,6,2) ' ClickSetLinkRect(402,7,2)
DefineMouseOverRect(0,202,102,5,1,left(2),top(2),width(2),height(2)) DefineMouseOverRect(0,302,102,6,1,left(2),top(2),width(2),height(2)) DefineMouseOverRect(0,402,102,7,1,left(2),top(2),width(2),height(2)) DefineMouseOverRect(0,202,102,5,2,200,320,120,100) DefineMouseOverRect(0,302,102,6,2,200,320,120,100) DefineMouseOverRect(0,402,102,7,2,200,320,120,100)
end
mouse_enter_memo: color 1,255,230,230 font_color 1,0,0,255 if langage$="FR" caption 0,"Entrée mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Enter mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_exit_memo: color 1,255,255,255 font_color 1,0,0,0 if langage$="FR" caption 0,"Sortie mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Exit mémo "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_enter_rect: s$ = text$(102) p% = instr(s$,"R") r% = mid$(s$,p%+1,len(s$)) 2d_target_is r%+1 if langage$="FR" caption 0,"Entrée picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Enter picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_exit_rect: s$ = text$(102) p% = instr(s$,"R") r% = mid$(s$,p%+1,len(s$)) 2d_target_is r%+1 if langage$="FR" caption 0,"Sortie picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Exit picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
mouse_move_rect: s$ = text$(102) p% = instr(s$,"R") r% = mid$(s$,p%+1,len(s$)) s$ = left$(s$,p%-1) p% = instr(s$,",") x% = val(left$(s$,p%-1))-left(r%+1) y% = val(mid$(s$,p%+1,len(s$)))-top(r%+1) 2d_circle x%, y%, 3 if langage$="FR" caption 0,"Move picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" else caption 0,"Move picture "+time$+" ("+trim$(text$(101))+") ("+trim$(text$(102))+")" end_if return
' DefineMouseOver: ' P1 = le numéro d'objet à surveiller ' P2 = le numéro du bouton fictif qui sert de relais/déclencheur (çà c'est pas encore trop dur à comprendre Laughing ) ' P3 = la variable de retour pour l'objet dans lequel se trouve la souris ' P4 = la variable de retour du type d'évènement en cours sub DefineMouseOver(obj%,btn%,edt%,act%) ClickSetHook(obj%,edt%) ClickSetLink(btn%,act%) end_sub
' DefineMouseOverRect: ' P1 = le numéro d'objet à surveiller ' P2 = le numéro du bouton fictif qui sert de relais/déclencheur (çà c'est pas encore trop dur à comprendre Laughing ) ' P3 = la variable de retour pour l'objet dans lequel se trouve la souris ' P4 = la variable de retour du type d'évènement en cours sub DefineMouseOverRect(obj%,btn%,edt%,act%,num%,x%,y%,w%,h%) ClickSetHook(obj%,edt%) ClickDefineRect(num%,x%,y%,w%,h%) ClickSetLinkRect(btn%,act%,num%) end_sub
#INCLUDE "KGF_SUB.bas"
C'est le même programme que précédemment, mais maintenant, lorsqu'on déplace la souris lentement à travers les deux pictures, une trace est dessinée. La modification de la DLL, c'est que la routine détecte si le curseur reste immobile sur le même point, dans un rectangle sensible, et n'envoie donc plus d'évènements en rafale. C'est plus propre comme ça. | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: 2.10/2.11 du 2 Avril 2013: ajout fonction ClickDefineRect Ven 5 Avr 2013 - 21:16 | |
| klaus je n'arrive pas a enclenché la position de la souris dans le picture dès que le curseur est dedans voici le code: - Code:
-
dim xpos%,wpos%,ypos%,hpos%,KGF_res%
height 0,800 picture 1 width 1,500 height 1,500 rem visualise le fichier bitmap
dll_on KGF.dll
alpha 2 :top 2,600 alpha 3:left 2,200 :top 3,600
MousePosition(num%,xpos%,ypos%,wpos%,hpos%) end
sub MousePosition("ClickDefineRect",num%,xpos%,ypos%,wpos%,hpos%) KGF_res% = dll_call5("ClickDefineRect",num%,xpos%,ypos%,wpos%,hpos%)
caption 1,"Xpos =("+str$(xpos%)+")" caption 2,"Ypos =("+str$(ypos%)+")"
end_sub
merci | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.10/2.11 du 2 Avril 2013: ajout fonction ClickDefineRect Ven 5 Avr 2013 - 23:54 | |
| Tes variables ne sont pas initialisées, la fonction est utilisée hors contexte. Je te conseille vivement de regarder en détail le poste que j'ai posté ci-dessus. Je crois avoir compris ce que tu veux faire: afficher la position x,y de la souris lorsqu'elle se déplace dans ton picture numéro 1. J'ai donc modifié ton source afin qu'il puisse te servir de tuto pour utiliser ces fonctions. Mais encore une fois, regarde bien le code posté ci-dessus, et regarde surtout la doc dans KGF.chm - elle est complète ! Voici donc ton source adapté en tuto: - Code:
-
' === les labels des routines évènements ' qui sont déclenchées par la surveillance du rectangle label mouse_enter_rect, mouse_exit_rect, mouse_move_rect
' === variables internes dim x%, y%, r%, p%, s$
' === les objets imposés: ' 1 = picture à surveiller ' 2 = alpha pour recevoir la coordonnée x ' 3 = alpha pour recevoir la coordonnée y height 0,800 picture 1 width 1,500 height 1,500 rem visualise le fichier bitmap
alpha 2 :top 2,600 alpha 3:left 2,200 :top 3,600
' === objet supplémentaire pour signaler le type de l'action alpha 4 : left 4,100 : top 4,620
' === ouverture de KGF.dll KGF_initialize("KGF.dll")
' === les objets techniques nécessaires pour la surveillance ' (ces objets sont tous invisibles) ' 102 = EDIT recevant les coordonnées de la souris au format x,yRn ' 202 = bouton dont l'évènement signale "entrée dans le rectangle" ' 302 = bouton dont l'évènement signale "sortie du rectangle" ' 402 = bouton dont l'évènement signale "déplacement dans le rectangle" edit 102 : hide 102 button 202 :hide 202 : on_click 202,mouse_enter_rect button 302 :hide 302 : on_click 302,mouse_exit_rect button 402 :hide 402 : on_click 402,mouse_move_rect
' === céer le lien qui établit la surveillance du rectangle ' surveillance de l'objet 0 (form 0) avec lien vers le edit 102 ClickSetHook(0,102)
' === création du rectangle numéro 1 recouvrant exactement le picture 1 ClickDefineRect(1,left(1),top(1),width(1),height(1))
' === création des liens pour les 3 types d'évènement ' entrée, sortie, déplacement ClickSetLinkRect(202,5,1) ClickSetLinkRect(302,6,1) ClickSetLinkRect(402,7,1)
end
' === routines évènements pour les 3 évènements ' pour la démo, elles sont toutes identiques. ' mais on peut évidemment faire des actions différentes ' pour chacun de ces évènements ' On prend le contenu de l'objet 102 (format x,yRn) ' et on extrait les valeurs pour les coordonnées x et y ' ainsi que le numéro du rectangle n (qui doit être 1 dans notre cas) mouse_enter_rect: caption 4,"Entrée" s$ = text$(102) p% = instr(s$,"R") r% = mid$(s$,p%+1,len(s$)) s$ = left$(s$,p%-1) p% = instr(s$,",") x% = val(left$(s$,p%-1))-left(r%) y% = val(mid$(s$,p%+1,len(s$)))-top(r%) caption 2,str$(x%) caption 3,str$(y%) return
mouse_exit_rect: caption 4,"Sortie" s$ = text$(102) p% = instr(s$,"R") r% = mid$(s$,p%+1,len(s$)) s$ = left$(s$,p%-1) p% = instr(s$,",") x% = val(left$(s$,p%-1))-left(r%) y% = val(mid$(s$,p%+1,len(s$)))-top(r%) caption 2,str$(x%) caption 3,str$(y%) return
mouse_move_rect: caption 4,"Déplacement" s$ = text$(102) p% = instr(s$,"R") r% = mid$(s$,p%+1,len(s$)) s$ = left$(s$,p%-1) p% = instr(s$,",") x% = val(left$(s$,p%-1))-left(r%) y% = val(mid$(s$,p%+1,len(s$)))-top(r%) caption 2,str$(x%) caption 3,str$(y%) return
#INCLUDE "KGF_SUB.bas"
| |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: 2.10/2.11 du 2 Avril 2013: ajout fonction ClickDefineRect Sam 6 Avr 2013 - 7:35 | |
| merci klaus je vais mettre en pratique ton source bon w-end | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: 2.10/2.11 du 2 Avril 2013: ajout fonction ClickDefineRect Sam 6 Avr 2013 - 8:16 | |
| j'ai testé aussitôt ton source que tu ma donné il fonctionne pas si bien parce que les coordonnés ne sont pas en temps réel alors j'ai remis en pratique ta démo. hier il fonctionnais a merveille et là ce matin c'est la quata voici ce que ça donne des que ma souris est dans un picture il laisse des trainés et il n'est plus en temps réel comme si il y avait besoin d'un temps de réflexion!! voyant ça j'ai redémarré mon ordi a chaud et le resulta est le même c'est peut être mon ordi qui déconne va savoir | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.10/2.11 du 2 Avril 2013: ajout fonction ClickDefineRect Sam 6 Avr 2013 - 9:43 | |
| Dans ma démo, je dessine ces traces exprès, en traçant un petit cercle autour de chaque position de souris reçue par la surveillance. L'image d'écran que tu as postée, est tout-à-fait normale et témoigne du bon fonctionnement du programme.
Mais:
Ce qu'il faut bien comprendre, c'est la nature d'un objet picture de Panoramic. D'ailleurs, un objet alpha est dans la même situation. Contrairement aux objets tels que list, memo, button etc, ces deux objets ne sont pas des objets Windows (ils n'ont pas de handle !!!!!!), mais sont, ce qu'on appelle des "objets non fenêtrés". Je me suis déjà exprimé plusieurs fois, sur ce forum, sur les particularités de ces objets, mais je vais rappeler l'essentiel ici.
Les objets non fenêtrés sont dessinés, non pas par Windows, mais par le programme lui-même. Et dans le cas d'un programme Panoramic, c'est l'interpréteur de Panoramic qui fait ce travail, à chaque modification de l'apparence d'un tel objet. Et dans le cas d'un picture, cela signifie que pour chaque modification, l'image entière du picture doit être redessinée. Or, cela prend du temps. Et comme cela se passe à l'intérieur d'une routine déclenchée par un évènement, cela donne l'impression d'un décalage entre le moment où a lieu l'évènement (déplacement de la souris) et la réaction (apparition de la trace dessinée).
Les évènements des autres objets sont traités par Windows, avec une mise en file d'attente très éfficace. D'ailleurs, dans mon programme de démo (celui qui dessine les traces dans les deux pictures), observe le titre de la fenêtre (caption de la form 0), ainsi que les deux edit affichés en bas à gauche. Tu peux voir que la position de la souris est affichée sans décalage, immédiatement, en réaction à un mouvement de la souris. C'est parce que l'affichage est effectué par Windows, immédiatement, et cela ne prend pas beaucoup de temps. L'affichage de la trace dans un picture est fait par Panoramic, mais seulement lorsque toutes les actions gérées par Windows ont été effectuées. De plus, chaque petit rond affiché représente un réaffichage complet du picture.
J'espère que tu y vois un peu plus clair maintenant. Le programme de démo fonctionne, et ton système n'est pas en cause. J'ai choisi d'afficher une trace dans les picture, un peu pour m'amuser, mais pas à cause d'une utilité réelle. C'est juste un exemple de ce que l'on peut faire lorsque l'on reçoit un tel évènement. Tu peux faire n'importe quoi, à la place, mais garde bien à l'esprit que tu te trouves dans une routine qui s'exécute pour traiter un évènement Windows, et ton code devrait s'exécuter le plus rapidement possible afin de redonner la main à Windows pour pouvoir gérer les évènements suivants. | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: 2.10/2.11 du 2 Avril 2013: ajout fonction ClickDefineRect Sam 6 Avr 2013 - 11:19 | |
| OK alors si j'ai bien compris c'est peut être pour ça que l'effet de la souris est saccadé et quand aux petit carré qui se dessine! ils ne se sont pas dessinée hier lorsque j'ai essayé ton code source c'est ce qui ma intrigué ce matin je vais le retesté et je te tien au courant des évènements bon sur ça je repart dans mon projet qui est super long et qui traine depuis plusieurs jours
allez bonne journée | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 6 Avr 2013 - 19:20 | |
| @ Klaus, Voilà mon bidouillage pour arriver à une procédure unique... - Code:
-
Constantes() Variables() Labels()
O_Form(0,0,1,0,0,300,500,"O_Button_Picture") O_Button_Picture(10,0,1,0,0,100,100)
End ' ------------------------------------------------------------------------------ Sub Constantes() Dim Path$ : Path$=Dir_current$+"\" Dim KGF$ : KGF$ =Path$+"KGF.dll":Dll_On KGF$ End_Sub ' ------------------------------------------------------------------------------ Sub Variables() Dim Clic% End_Sub ' ------------------------------------------------------------------------------ Sub Labels() Label Clic End_Sub ' ------------------------------------------------------------------------------ Sub O_Button_Picture(No%,P%,V%,T%,L%,H%,W%) if variable("Survey%")=0 then dim Survey% O_Picture(No%,P%,V%,T%,L%,H%,W%,""):On_click No%,Clic:cursor_point 10 O_Edit(No%+7000,P%,0,-200,-200,0,0) if Survey%=0 Survey%=1 If Variable("KGF_res%")=0 then dim KGF_res% KGF_res% = dll_call2("ClickSetHook",handle(P%),handle(No%+7000)) End_if O_Button(No%+7001,P%,0,-200,-200,0,0,"",1) O_Button(No%+7002,P%,0,-200,-200,0,0,"",1) O_Button(No%+7003,P%,0,-200,-200,0,0,"",1) KGF_res% = dll_call5("ClickDefineRect",No%,T%,L%,W%,H%) KGF_res% = dll_call3("ClickSetLinkRect",handle(No%+7001),0-5,No%) KGF_res% = dll_call3("ClickSetLinkRect",handle(No%+7002),0-6,No%) KGF_res% = dll_call3("ClickSetLinkRect",handle(No%+7003),0-7,No%) End_Sub ' ------------------------------------------------------------------------------
Clic: Clic%=Number_Click Select Clic% case 10 :color 10,0,0,0 Case 7011 :color 10,255,0,0 case 7012 :color 10,0,255,0 case 7013 :color 10,0,0,255 End_Select return
#include "Objet_Lib.bas" Ma librairie qui va avec ... (sinon c'est pas drôle ) - Code:
-
' Objet FORM____________________________________________________________________ Sub O_Form(No%,P%,V%,T%,L%,H%,W%,C$) if No%> 0 then FORM No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 : Top No%,T% : Else : Top No%,(Screen_y-H%)/2 : End_If If L% > 0 : Left No%,L%: Else : Left No%,(Screen_x-W%)/2: End_If if C$<>"" then Caption No%,C$ End_Sub ' Objet ALPHA___________________________________________________________________ Sub O_Alpha(No%,P%,V%,T%,L%,H%,W%,C$) ALPHA No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% if C$<>"" then Caption No%,C$ End_Sub ' Objet EDIT____________________________________________________________________ Sub O_Edit(No%,P%,V%,T%,L%,H%,W%) EDIT No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% End_Sub ' Objet BUTTON__________________________________________________________________ Sub O_Button(No%,P%,V%,T%,L%,H%,W%,C$,Cl%) BUTTON No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% if C$<>"" then Caption No%,C$ if Cl%> 0 then on_click No%,Clic cursor_point No% End_Sub ' Objet GRID____________________________________________________________________ Sub O_Grid(No%,P%,V%,T%,L%,H%,W%) GRID No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% End_Sub ' Objet CONTAINER_______________________________________________________________ Sub O_Container(No%,P%,V%,T%,L%,H%,W%,C$) CONTAINER No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% if C$<>"" then Caption No%,C$ End_Sub ' Objet SCENE3D_________________________________________________________________ Sub O_Scene3D(No%,P%,V%,T%,L%,H%,W%) SCENE3D No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L%
End_Sub ' Objet MEMO____________________________________________________________________ Sub O_Memo(No%,P%,V%,T%,L%,H%,W%) MEMO No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% End_Sub ' Objet COMBO___________________________________________________________________ Sub O_Combo(No%,P%,V%,T%,L%,H%,W%) COMBO No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% End_Sub ' Objet LIST____________________________________________________________________ Sub O_List(No%,P%,V%,T%,L%,H%,W%,F$) LIST No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% if F$<>"" if file_exists F$ then file_load No%,F$ end_if End_Sub ' Objet PICTURE_________________________________________________________________ Sub O_Picture(No%,P%,V%,T%,L%,H%,W%,P$) PICTURE No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% if P$<>"" then File_load No%,P$ End_Sub ' Objet CHECK___________________________________________________________________ Sub O_Check(No%,P%,V%,T%,L%,H%,W%,C$) CHECK No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% if C$<>"" then Caption No%,C$ End_Sub ' Objet OPTION__________________________________________________________________ Sub O_Option(No%,P%,V%,T%,L%,H%,W%,C$) OPTION No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% if C$<>"" then Caption No%,C$ End_Sub ' Objet MAIN_MENU_______________________________________________________________ Sub O_Main_Menu(No%,P%) MAIN_MENU No% if P% > 0 then Parent No%,P% End_Sub ' Objet SUB_MENU________________________________________________________________ Sub O_Sub_Menu(No%,P%,C$,Cl%,A%) SUB_MENU No% if P% > 0 then Parent No%,P% if C$<>"" then Caption No%,C$ If Cl%=1 : on_click No%,Clic : end_if If Cl%=2 : on_click No%,Clic2 : end_if If Cl%=3 : on_click No%,Clic3 : end_if If Cl%=4 : on_click No%,Clic4 : end_if If A%=0 then inactive No% End_Sub ' Objet SOUND___________________________________________________________________ Sub O_Sound(No%,P%,S$) SOUND No% If P%>0 then Parent No%,P% If S$<>"" then file_load No%,S$ End_Sub ' Objet MOVIE___________________________________________________________________ Sub O_Movie(No%,P%,V%,T%,L%,H%,W%,M$) MOVIE No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% if M$<>"" then file_load No%,M$ End_Sub ' Objet TRACK_BAR_______________________________________________________________ Sub O_Track_Bar(No%,P%,V%,T%,L%,H%,W%) TRACK_BAR No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% End_Sub ' Objet OPEN_DIALOG_____________________________________________________________ Sub O_Open_Dialog(Out%,Filtre$,O%) dim_local No%,F$ No%=Number_objects+1 OPEN_DIALOG No% if filtre$<>"" then Filter No%,Filtre$ F$=File_name$(No%) if variable("File$")=0:Dim File$:End_If if F$<>"_" if O%=1 then text out%,F$ if O%=2 then Caption Out%,F$ if O%=3 then item_add Out%,F$ if O%=4 then file_load Out%,F$ if O%=5 then File$=F$ end_if Delete No% End_Sub ' Objet SAVE_DIALOG_____________________________________________________________ ' Sub O_Save_Dialog(Filtre$) ' dim_local No%,F$ ' No%=Number_objects+1 ' SAVE_DIALOG No% ' if filtre$<>"" then Filter No%,Filtre$ ' F$=file_name$(No%) ' End_Sub ' Objet SCROLL_BAR______________________________________________________________ Sub O_Scroll_Bar(No%,P%,V%,T%,L%,H%,W%) SCROLL_BAR No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% End_Sub ' Objet PROGRESS_BAR____________________________________________________________ Sub O_Progress_Bar(No%,P%,V%,T%,L%,H%,W%) PROGRESS_BAR No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% End_Sub ' Objet SPIN____________________________________________________________________ Sub O_Spin(No%,P%,V%,T%,L%,H%,W%) SPIN No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% End_Sub ' Objet DLIST___________________________________________________________________ Sub O_Dlist(No%,F$) DLIST No% if F$<>"" then file_load No%,F$ End_Sub ' Objet SCENE2D_________________________________________________________________ Sub O_Scene2D(No%,P%,V%,T%,L%,H%,W%) SCENE2D No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% End_Sub ' Objet TIMER___________________________________________________________________ Sub O_Timer(No%,OO%,Inter%) TIMER No% if OO%=1 then timer_on No% if OO%=0 then timer_off No% if inter%>0 then timer_interval No%,inter% End_Sub ' Objet CONTAINER_OPTION________________________________________________________ Sub O_Container_Option(No%,P%,V%,T%,L%,H%,W%,C$) CONTAINER_OPTION No% if P% > 0 then Parent No%,P% If V% = 0 Then hide No% If H% > 0 Then Height No%,H% If W% > 0 Then Width No%,W% If T% > 0 Then Top No%,T% If L% > 0 Then Left No%,L% if C$<>"" then Caption No%,C$ End_Sub ' Objet IMAGE___________________________________________________________________ Sub O_Image(No%,I$) if I$<>"" then file_load No%,I$ End_Sub ' Objet Statut_Bar______________________________________________________________ Sub O_Statut_Bar(P%,R%,G%,B%,R1%,G1%,B1%,T$) Dim_local No%,x%,a% No%=Number_Objects+1 For x%=1 To Number_Objects :If Object_Type(x%)=13 :a%=1:End_If:Next x% If a%=0 O_Picture(No%,P%,1,Height(P%)-58,0,20,Width(P%)-16,"") O_Alpha(No%+1,0,1,Height(P%)-55,10,0,0,T$) Else O_Picture(No%,P%,1,Height(P%)-78,0,20,Width(P%)-16,"") O_Alpha(No%+1,0,1,Height(P%)-75,10,0,0,T$) End_If Color No%,R%,G%,B% :2d_target_is No% :2d_pen_color R1%,G1%,B1% For x%=1 to Width(P%)-16:2d_point x%,0 :Next x% Color No%+1,R%,G%,B%:font_name No%+1,"Arial":Font_color No%+1,0,0,255 if Variable("OSB%")=0 then Dim OSB% OSB%=No%+1 End_Sub ' Objet Statut_Bar2_____________________________________________________________ Sub O_Statut_Bar2(No%,P%,V%,M%) Dim_Local No2% ,x% ,a% ,Pa%,OSB2% No%=Number_Objects+1 :Pa%=P% :No2%=No% for x%=1 to Number_Objects:If Object_Type(x%)=13 :a%=1:End_If:Next x% If M%=0 O_Picture(No2%,P%,V%,Height(P%)-61,0,23,width(P%)-16,"") Else O_Picture(No2%,P%,V%,Height(P%)-81,0,23,width(P%)-16,"") End_If OSB2%=No2% Adaptation_OSB(No2%,Pa%) End_Sub
Sub Adaptation_OSB(No%,P%) Dim_Local x% ,y% ,z% ,t$ ,R_osb% ,G_osb% ,B_osb% color No%,235,235,239 : y%=width(P%)-27 Restore while t$<>"OSB_Corps.bmp" :read t$:End_while Read R_osb% :Read G_osb% :Read B_osb% 2d_target_is No% : 2d_pen_color R_osb%,G_osb%,B_osb% for x%=0 to y% :2d_point x%,z% :next x% Restore while t$<>"OSB_Fin.bmp" :read t$:End_while for x%=y% to y%+10 for z%=0 to 22 Read R_osb% :Read G_osb% :Read B_osb% 2d_target_is No% : 2d_pen_color R_osb%,G_osb%,B_osb% 2d_point x%,z% next z% next x% End_Sub ' Data du Statut_Bar2___________________________________________________________ Data "OSB_Corps.bmp" data 170,165,162 data "OSB_Fin.bmp" data 170,165,162 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 242,239,239 data 239,235,235 data 239,235,235 data 170,165,162 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 242,239,239 data 170,165,162 data 239,235,235 data 239,235,235 data 170,165,162 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 242,239,239 data 170,165,162 data 170,165,162 data 239,235,235 data 239,235,235 data 170,165,162 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 242,239,239 data 239,235,235 data 239,235,235 data 242,239,239 data 239,235,235 data 239,235,235 data 170,165,162 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 242,239,239 data 170,165,162 data 239,235,235 data 242,239,239 data 170,165,162 data 239,235,235 data 239,235,235 data 170,165,162 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 242,239,239 data 170,165,162 data 170,165,162 data 242,239,239 data 170,165,162 data 170,165,162 data 239,235,235 data 239,235,235 data 170,165,162 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 242,239,239 data 239,235,235 data 239,235,235 data 242,239,239 data 239,235,235 data 239,235,235 data 242,239,239 data 239,235,235 data 239,235,235 data 170,165,162 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 242,239,239 data 170,165,162 data 239,235,235 data 242,239,239 data 170,165,162 data 239,235,235 data 242,239,239 data 170,165,162 data 239,235,235 data 239,235,235 data 170,165,162 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 242,239,239 data 170,165,162 data 170,165,162 data 242,239,239 data 170,165,162 data 170,165,162 data 242,239,239 data 170,165,162 data 170,165,162 data 239,235,235 data 239,235,235 data 170,165,162 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 170,165,162 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 data 239,235,235 Alooorrs là !...je suis pas de couleur rouge...snifff!.....Une petite remarque sur KGF.chm Il y a eu un petit mélange entre les deux "ClickDefineRect" et "ClickSetLinkRect" qui m'a fait bouillir les neurones 5 minutes, j'étais un peu pommé... Edit : Sur cette procédure j' en viens à comprendre ton intérêt pour des variables dynamiques | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.10/2.11 du 2 Avril 2013: ajout fonction ClickDefineRect Sam 6 Avr 2013 - 20:54 | |
| Je ne comprends pas où est la confusion dans la doc, concernant ces deux fonctions. Tout me semble absolument correct. Pourrais-tu développer un peu ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| | | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: 2.10/2.11 du 2 Avril 2013: ajout fonction ClickDefineRect Sam 6 Avr 2013 - 22:15 | |
| Merci, Ygeronimi !Cela m'avait totalement échappé. Voilà ce que c'est que de faire des copier/coller...
Mais c'est corrigé. Encore merci pour ton attention ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 7 Avr 2013 - 2:29 | |
| De rien Klaus,
De mon côté j'ai amélioré mon bidouillage pour un "Image_Button". Le seul souci actuel c'est la création de deux boutons supplémentaires à chaque appel.
C' est sur mon webdav "Sources\Objet_Lib\O_Button_Picture.zip" | |
| | | Contenu sponsorisé
| Sujet: Re: 2.10/2.11 du 2 Avril 2013: ajout fonction ClickDefineRect | |
| |
| | | | 2.10/2.11 du 2 Avril 2013: ajout fonction ClickDefineRect | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |