Compile insert Event_Setup

/***********************************************************************************************************************

    This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
    permission from SRP Computer Solutions, Inc.

    Name        :   Event_Setup

    Description :   Declarations and equates used by the form event commuters.

    Notes       :   Event_Setup also populates several variables that will often be useful within event handler code.

    History     :   (Date, Initials, Notes)
        08/13/10    dmb     Original programmer.

***********************************************************************************************************************/

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
Equ EVENT_SYSTEM_ONLY$          to 4    ; // Event flow should execute the system event handler only (normal option for third-party windows running in FrameWorks)

// 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*']

MDIFrame    = Get_Property(@Window, 'MDIFRAME')
Parent      = Get_Property(@Window, 'PARENT')
If MDIFrame EQ '' then MDIFrame = Parent        ; // Dialog boxes won't set the MDIFRAME property so use the PARENT property.

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

// Get the name of the control on the window based on the CtrlClassId.
Begin Case
    Case CtrlClassId EQ 'WINDOW'
        Control = Window
    Case CtrlClassId EQ 'RADIOBUTTON'
        Control = Field(CtrlEntId, '.', 2, 2)
    Case CtrlClassId EQ 'MENU'
        Control = CtrlEntId[-1, 'B.']
    Case 1
        Control = Field(CtrlEntId, '.', 2, 1)
End Case

// 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, 'ATRECORD')

// 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
