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.