Survol gadget
Publié : ven. 04/avr./2014 11:06
Je fais remonter un code du forum anglais, qui n'est pas de moi.
Il permet de récupérer le numéro du gadget en le survolant. Il existe déjà plusieurs codes pour faire cela mais ici, l’intéressant est l'usage de la fonction PostEvent()
(C'est un code perfectible)
M.
Il permet de récupérer le numéro du gadget en le survolant. Il existe déjà plusieurs codes pour faire cela mais ici, l’intéressant est l'usage de la fonction PostEvent()
Code : Tout sélectionner
Procedure EventMouse(Gadget,Window=-1)
Protected x.l, y.l, w.l, h.l, mx.l, my.l
Static OldGadget,NewGadget,wIn,gIn,IGadget
;-------------------------------
;Curseur coordonnées stockées dans la variable
mx =DesktopMouseX()
my =DesktopMouseY()
If IsGadget(Gadget) ;
x=GadgetX(Gadget,#PB_Gadget_ScreenCoordinate)
y=GadgetY(Gadget,#PB_Gadget_ScreenCoordinate)
w=GadgetWidth(Gadget)
h=GadgetHeight(Gadget)
EndIf
If (mx >= x And mx <= (x+w) And my >= y And my <= (y+h)) ;Si le pointeur de la souris sur le gadget
If gIn=#False And IGadget<>Gadget :gIn=#True ;Dans la form
;Debug "from window"
PostEvent(#PB_Event_Gadget,EventWindow(),Gadget, #PB_EventType_MouseEnter)
IGadget=Gadget
NewGadget=Gadget
OldGadget=Gadget
EndIf
If NewGadget<>Gadget And IGadget=#False ;Si gadget
;Debug "from gadget"
PostEvent(#PB_Event_Gadget,EventWindow(),Gadget, #PB_EventType_MouseEnter)
NewGadget=Gadget
If OldGadget<>NewGadget And gIn=#True;Indiquent que nous sommes sur la forme
;Debug "on gadget"
PostEvent(#PB_Event_Gadget,EventWindow(),OldGadget, #PB_EventType_MouseLeave)
OldGadget=NewGadget
EndIf
EndIf
Else
If IsGadget(NewGadget) ;
x=GadgetX(NewGadget,#PB_Gadget_ScreenCoordinate)
y=GadgetY(NewGadget,#PB_Gadget_ScreenCoordinate)
w=GadgetWidth(NewGadget)
h=GadgetHeight(NewGadget)
EndIf
If (mx < x Or mx > (x+w) Or my < y Or my > (y+h)) ;Si le pointeur de la souris gadget nahotitsya l'extérieur
If gIn=#True :gIn=#False ;Indiquent que nous sommes sur la forme
;Debug "on window"
PostEvent(#PB_Event_Gadget,EventWindow(),newGadget, #PB_EventType_MouseLeave)
IGadget=#False
OldGadget=NewGadget
EndIf
EndIf
EndIf
EndProcedure
win1 = OpenWindow(#PB_Any,0,0,400,300,"Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered| #PB_Window_SizeGadget)
ButtonGadget(3,10,20,62,22,"" )
ButtonGadget(4,150,20,62,22,"" )
ContainerGadget(5,10,220,62,22,#PB_Container_Flat )
CloseGadgetList()
Repeat
EventMouse(3)
EventMouse(4)
EventMouse(5)
Select WaitWindowEvent()
Case #PB_Event_Gadget
Debug EventGadget()
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
End
M.