Compile insert SRP_EVENT_SETUP

Declare function Get_Property, Set_Property, Get_Current_Event, Get_Window_ID, Get_Record

// Return values to indicate how the event flow should continue.
Equ EVENT_STOP$					to 0	; // Event flow should stop
Equ EVENT_CONTINUE$				to 1	; // Event flow should continue until a later process changes this value
Equ EVENT_CONTINUE_NO_PROMOTED$	to 2	; // Event flow should by-pass the promoted (generic) logic but allow the system event handler to execute
Equ EVENT_CONTINUE_NO_SYSTEM$	to 3	; // Event flow should execute the promoted (generic) logic but stop the system event handler from executing

// Make sure any event parameters which have not been assigned are nulled.
If Assigned(CtrlEntId)			else CtrlEntId = ""
If Assigned(Event)				else Event = ""
If Assigned(Param1)				else Param1 = ""
If Assigned(Param2)				else Param2 = ""
If Assigned(Param3)				else Param3 = ""
If Assigned(Param4)				else Param4 = ""
If Assigned(Param5)				else Param5 = ""
If Assigned(Param6)				else Param6 = ""
If Assigned(Param7)				else Param7 = ""
If Assigned(Param8)				else Param8 = ""
If Assigned(Param9)				else Param9 = ""
If Assigned(Param10)			else Param10 = ""
If Assigned(Param11)			else Param11 = ""
If Assigned(Param12)			else Param12 = ""
If Assigned(Param13)			else Param13 = ""
If Assigned(Param14)			else Param14 = ""
If Assigned(Param15)			else Param15 = ""

// Get the design time name of the window in case this is a multi-instance window.
Window = @Window[1, "F*"]

// Get the name of the control on the window. Get all reasonable parts of the control name.
Control = Field(CtrlEntId, ".", 2, 3)

// If there is no control then assume the window is the control.
If Control EQ "" then Control = Window

// Always get the CtrlClassID since we are not passing it through the event parameters.
CtrlClassId = Get_Property(CtrlEntId, "TYPE")

// If this is an OLE control, get the ProgID.
ProgID = ""
If CtrlClassId EQ "OLECONTROL" then ProgID = Get_Property(CtrlEntId, "ORIG_TEXT")

// Get the Event Type so generic event functionality can be executed properly.
EventType = Get_Current_Event()

// Combine the event type and control into an event action
If EventType EQ "OLE" then
	// Because the Promoted_Events function transfers parameters, this will only appear correctly in a commuter module.
	EventAction = Event:".":Control
end else
	EventAction = EventType:".":Control
end

// Get the current window's key ID. Strip off the @SVM if this window is ignoring self-locks.
KeyID = Get_Property(@Window, "ID")[1, "F":@SVM]

// If KeyID is null then check to see if the key controls are populated. If so, then this is
// probably a locked record. ID properties are null with locked records.
* If KeyID EQ "" then
* 	KeyID = Get_Window_ID(@Window)
* end

// Get the current window's record.
Record = Get_Property(@Window, "RECORD")

// If the window uses QuickEvents to call the commuter module, check for @EVENT in the
// event parameter. This is here for backwards compatability. OpenInsight 7.1 and higher
// automatically swaps @EVENT with the actual event. Prior versions of OpenInsight will
// just pass the literal through. Therefore, this will swap out @EVENT with the actual event.
If Event EQ "@EVENT" then Swap "@EVENT" with EventType in Event
