Code: Alles auswählen
EnableExplicit
Enumeration
#FrameMain
EndEnumeration
;-Constant
Enumeration
#__firstButton
#B_Button1
#B_Button2
#B_Button3
#B_Button4
#B_Button5
#__lastButton
#S_Button
EndEnumeration
If OpenWindow(#FrameMain,0,0,600,400,"Button-Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(#B_Button1,10,10,100,20,"Button 1")
ButtonGadget(#B_Button2,120,10,100,20,"Button 2")
ButtonGadget(#B_Button3,230,10,100,20,"Button 3")
ButtonGadget(#B_Button4,340,10,100,20,"Button 4")
ButtonGadget(#B_Button5,450,10,100,20,"Button 5")
StringGadget(#S_Button,10,50,300,20,"Event")
EndIf
Define EventID, Gadget, Event, activeGadget, timer
Define wmX, wmY, gadgetX, gadgetY, gadgetW, gadgetH
Repeat
EventID=WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Timer
timer = EventTimer()
If timer > #__firstButton And timer < #__lastButton
If GetGadgetData(timer)=#True
wmX = WindowMouseX(#FrameMain)
wmY = WindowMouseY(#FrameMain)
gadgetX = GadgetX(timer)
gadgetY = GadgetY(timer)
gadgetW = gadgetX + GadgetWidth(timer)
gadgetH = gadgetY + GadgetHeight(timer)
; Mouse Cursor noch immer über dem Button?
If wmX >= gadgetX And wmX <= gadgetW And wmY >= gadgetY And wmY <= gadgetH
SetGadgetData(timer,#False)
SetGadgetText(#S_Button,GetGadgetText(timer)+" - gespeichert")
EndIf
EndIf
RemoveWindowTimer(#FrameMain,timer)
EndIf
Case #WM_LBUTTONDOWN
activeGadget = GetActiveGadget()
If activeGadget > #__firstButton And activeGadget < #__lastButton
AddWindowTimer(#FrameMain, activeGadget, 4000)
SetGadgetData(activeGadget,#True)
EndIf
Case #PB_Event_Gadget
gadget = EventGadget()
If gadget > #__firstButton And gadget < #__lastButton
RemoveWindowTimer(#FrameMain,gadget)
SetGadgetData(gadget,#False)
SetGadgetText(#S_Button,GetGadgetText(gadget)+" gedrückt")
EndIf
EndSelect
ForEver
Sollte erstmal funktionieren, wenn man es korrekt anwendet.
Wenn man aber einen Button drückt und dann, während des drückens,
den Button mit der Mouse verlässt, haut es nicht mehr hin - wenn
man innerhalb der Timerzeit wieder mit der Mouse über den Button geht.
Habe im Moment keine Zeit mehr, muß gleich auf Arbeit.
Vielleicht kann man das als Grundidee nehmen und Du oder
andere Helfer erweitern es.