Seite 1 von 1

Eventhandler in PB (von srod)

Verfasst: 03.04.2006 11:15
von Kiffi
Hallöle,

srod hat im englischen Forum einen netten Code veröffentlicht, der die
Programmierung unter Verwendung von Eventhandlern vereinfacht:

http://www.purebasic.fr/english/viewtopic.php?t=20929

Auszug aus der beiliegenden demo1.pb:

Code: Alles auswählen

[...]
;Set event handlers.
;Note one handler can easily handle multiple events/controls.
SetEventHandler(GadgetID(1), #OnButtonClick, @ButtonClick())
SetEventHandler(GadgetID(2), #OnCursorEnter, @EnterListIcon())
SetEventHandler(GadgetID(2), #OnCursorExit, @ExitListIcon())
SetEventHandler(GadgetID(3), #OnGotFocus, @ActivateString())
SetEventHandler(WindowID(1), #OnMouseDown, @ButtonClick())
SetEventHandler(GadgetID(4), #OnMouseOver, @MouseOver())

Repeat
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
End


;*********************************************************************************
;                                 EVENT HANDLERS
;*********************************************************************************

;The following handler shows how one handler can handle multiple events/controls.
Procedure.l ButtonClick(*sender.PB_Sender)
  Debug "Click"
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

Procedure.l EnterListIcon(*sender.PB_Sender)
  Debug "Enter"
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

Procedure.l ExitListIcon(*sender.PB_Sender)
  Debug "Exit"
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

Procedure.l ActivateString(*sender.PB_Sender)
  Debug "Activate"
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

Procedure.l MouseOver(*sender.PB_Sender)
  Debug "Mouseover"
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
[...]
Grüße ... Kiffi

Verfasst: 03.04.2006 11:38
von winduff
Hoho wie geil :-)

Das kann sehr viele Türen öffnen, bzw den Schlüssel zu den Türen verkleinern;-)

Verfasst: 23.08.2006 11:49
von Kiffi
es gibt wieder eine neue Version. :D

Da sich seit meinem letzten Posting eine Menge getan hat, hier mal die komplette History:
srod hat geschrieben:Update: 22nd August 2006.
Have vastly improved #OnCursorEnter and #OnCursorExit.

Update: 15th July 2006.
Have added one extra event (#OnSizingWindow) which allows the developer to restrict the user's ability to size a window etc.

Update: 10th July 2006.
Have added a simple example showing how to use EasyVENT to implement a flicker-free splitter (not based upon a PB splitter gadget).

Update: 2nd July 2006.
Have added one extra event allowing for the detection of link clicks within editor gadgets.

Update: 15th May 2006.
Have added one extra event (mainly for my own use!) and fixed a quite horrendous memory leak!

Update: 3rd May 2006.
Have added drag and drop functionality from most gadgets.

Update: 13th April 2006.
Have added editing tree gadget labels and drag and drop items from ListIcon's / ExplorerList's.
Wie gesagt: der Code ist sehr empfehlenswert. Schaut mal rein! :-)

Link: Siehe erste Posting

Grüße ... Kiffi