Compile function NDW_ROTR_PARAMETERS_EVENTS(CtrlEntId, Event, @PARAMS) /*********************************************************************************************************************** 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 Infineon. Name : NDW_ROTR_PARAMETER_EVENTS Description : This function acts as a commuter module for all events related to this window. Notes : Commuter Modules are automatically called from the Promoted_Events function which is called by the application-specific promoted event handler. This makes it possible to add QuickEvents that need to execute Basic+ logic without having use the Form Designer to make the association, although this is limited to the events which are currently promoted. If the form needs to call the commuter module directly then the QuickEvent parameters should be formatted like this: '@SELF','@EVENT',['@PARAM1','@PARAMx'] Parameters : CtrlEntId [in] -- The fully qualified name of the control calling the promoted event Event [in] -- The event being executed. See the Notes section regarding "PRE" events Param1-15 [in] -- Additional event parameter holders EventFlow [out] -- Set to 1 or 0 so the calling event knows whether or not to chain forward. See comments in EVENT_SETUP insert History : (Date, Initials, Notes) 10/15/18 djs Created initial commuter module. ***********************************************************************************************************************/ #pragma precomp SRP_PreCompiler #window NDW_ROTR_PARAMETERS $Insert ROTR_PARM_REV_HIST_EQUATES $Insert RLIST_EQUATES $Insert SECURITY_RIGHTS_EQU $Insert LOGICAL $Insert RTI_STYLE_EQUATES Equ Col.Reactor to 1 Equ Col.EnableROTR to 2 Equ Col.MaintStop to 3 Equ Col.XRuns to 4 Equ Col.NCRLimit to 5 Equ Col.ZeroNCR to 6 Equ Col.UCLLimit to 7 Equ Col.FailLimit to 8 Equ PROTECTED$ to 8 Equ WM_USER$ to 1024 Equ ETM_INSERTROW$ to (WM_USER$ + 2004) Equ ETM_DELETEROW$ to (WM_USER$ + 2005) Declare subroutine Set_Property, RList, Database_Services, SRP_Show_Window, Error_Services, Errmsg, Send_Message Declare subroutine Post_Event Declare function Get_Property, Dialog_Box, Database_Services, Error_Services, Security_Check, Send_Message GoToEvent Event for CtrlEntId else // Event not implemented end Return EventFlow or 1 //----------------------------------------------------------------------------- // EVENT HANDLERS //----------------------------------------------------------------------------- Event WINDOW.CREATE(CreateParam) ******************************************************* * Trap INS/DEL key to prevent edit table row deletion * ******************************************************* eventOp = TRUE$ ; * // Turn tracking on eventOp<4> = TRUE$ ; * // Track Synchronously Call Send_Message(@Window:'.EDT_ROTR_PARMS', 'QUALIFY_EVENT', ETM_INSERTROW$, eventOp) Call Send_Message(@Window:'.EDT_ROTR_PARMS', 'QUALIFY_EVENT', ETM_DELETEROW$, eventOp) Call Send_Message(@Window:'.EDT_REV_HIST', 'QUALIFY_EVENT', ETM_INSERTROW$, eventOp) Call Send_Message(@Window:'.EDT_REV_HIST', 'QUALIFY_EVENT', ETM_DELETEROW$, eventOp) Query = 'SELECT REACTOR WITH REACT_NO GT 0 AND WITH REACT_NO LT 200 BY REACT_NO' RList(Query, TARGET_SAVELIST$, 'REACTOR_LIST', 'Current List of Reactors', False$) ReactorList = Database_Services('ReadDataRow', 'SYSLISTS', 'REACTOR_LIST') // Remove field containing list description ReactorList = Delete(ReactorList, 1, 0, 0) Set_Property(@Window, '@REACTOR_LIST', ReactorList) ParametersList = '' For each ReactorID in ReactorList setting rowIndex Database_Services('ActivateRecord', 'REACTOR', ReactorID) ParametersList = ReactorID ParametersList = {ENABLE_ROTR} ParametersList = {ROTR_MAINT_RESET} ParametersList = {X_PREV_RUNS} ParametersList = {NCR_LIMIT} ParametersList = {ZERO_NCR_MIN} ParametersList = {UCL_LIMIT} ParametersList = {ROTR_FAIL_LIMIT} Next ReactorID Set_Property(@Window : '.EDT_ROTR_PARMS', 'LIST', ParametersList) Set_Property(@Window, '@ORIGPARMS', ParametersList) GoSub FillRevHist GoSub Setup_OLE_Controls ParameterStyles = Send_Message(@Window : '.EDT_ROTR_PARMS', 'COLSTYLE', 0, '') ParameterStyles = BitOr(ParameterStyles,DTCS_CHECKBOX$) ParameterStyles = BitOr(ParameterStyles,DTCS_CHECKBOXCENTER$) Void = Send_Message(@Window : '.EDT_ROTR_PARMS', 'COLSTYLE', 2, ParameterStyles) //ParameterStyles = Send_Message(@Window : '.EDT_ROTR_PARMS', 'COLSTYLE', 0, '') ParameterStyles = BitOr(ParameterStyles,DTCS_CHECKBOX$) ParameterStyles = BitOr(ParameterStyles,DTCS_CHECKBOXCENTER$) Void = Send_Message(@Window : '.EDT_ROTR_PARMS', 'COLSTYLE', 3, ParameterStyles) CanEdit = Security_Check('Spec', WRITE$) Set_Property(@Window, '@CAN_EDIT', CanEdit) If CanEdit then For column = 2 to 8 ParameterStyles = BitAnd( ParameterStyles, BitNot(PROTECTED$) ) Next column ParameterStyles = Send_Message(@Window : '.EDT_ROTR_PARMS', 'COLSTYLE', 0, ParameterStyles) end FormSize = '' SRP_Show_Window(@Window, 'SYSTEM', 'C', 'C', 1, '', False$, False$, FormSize) Eventflow = 1 End Event Event TAB_ROTR.CLICK() Page = Get_Property(@Window : '.TAB_ROTR', 'VALUE') Set_Property(@Window, 'VPOSITION', Page) end event Event PUB_COPY.CLICK() Response = Dialog_Box('NDW_REACTOR_SELECTION', @Window) ReactorFrom = Response<1> ReactorTo = Response<2> ParamsCtrl = @Window : '.EDT_ROTR_PARMS' SelRow = Get_Property(ParamsCtrl, 'SELPOS')<2> If (SelRow NE '') and (ReactorFrom NE '') and (ReactorTo NE '') then ParametersList = Get_Property(ParamsCtrl, 'LIST') ReactorList = Get_Property(@Window, '@REACTOR_LIST') CopyParameters = ParametersList For ReactorID = ReactorFrom to ReactorTo Locate ReactorID in ReactorList using @FM setting rowIndex then ParametersList = CopyParameters<1, Col.EnableROTR> ParametersList = CopyParameters<1, Col.MaintStop> ParametersList = CopyParameters<1, Col.XRuns> ParametersList = CopyParameters<1, Col.NCRLimit> ParametersList = CopyParameters<1, Col.ZeroNCR> ParametersList = CopyParameters<1, Col.UCLLimit> ParametersList = CopyParameters<1, Col.FailLimit> end Next ReactorID Set_Property(ParamsCtrl, 'LIST', ParametersList) Set_Property(@Window : '.PUB_SAVE', 'ENABLED', True$) Set_Property(@Window, 'SAVEWARN', True$) end end event Event PUB_SAVE.CLICK() SaveWarn = Get_Property(@Window, 'SAVEWARN') If (SaveWarn EQ True$) then GoSub UpdateRevHist If Result EQ False$ then Eventflow = 0 Return end end ParamsCtrl = @Window : '.EDT_ROTR_PARMS' ParametersList = Get_Property(ParamsCtrl, 'LIST') ReactorList = Get_Property(@Window, '@REACTOR_LIST') For each ReactorID in ReactorList setting rowIndex Database_Services('ActivateRecord', 'REACTOR', ReactorID) {ENABLE_ROTR} = ParametersList {ROTR_MAINT_RESET} = ParametersList {X_PREV_RUNS} = ParametersList {NCR_LIMIT} = ParametersList {ZERO_NCR_MIN} = ParametersList {UCL_LIMIT} = ParametersList {ROTR_FAIL_LIMIT} = ParametersList Database_Services('WriteDataRow', 'REACTOR', ReactorID, @Record) Next ReactorID GoSub FillRevHist end event Event EDT_ROTR_PARMS.GOTFOCUS(PrevFocusID) CanEdit = Get_Property(@Window, '@CAN_EDIT') SelRow = Get_Property(CtrlEntID, 'SELPOS') If SelRow NE '' and CanEdit then Set_Property(@Window : '.PUB_COPY', 'ENABLED', True$) end Eventflow = 1 end event Event EDT_ROTR_PARMS.LOSTFOCUS(Flag, FocusID) SelRow = Get_Property(CtrlEntID, 'SELPOS') If SelRow EQ '' then Set_Property(@Window : '.PUB_COPY', 'ENABLED', False$) end Eventflow = 1 end event Event EDT_ROTR_PARMS.POSCHANGED(NextColumn, NextRow) CanEdit = Get_Property(@Window, '@CAN_EDIT') If NextRow NE '' and CanEdit then Set_Property(@Window : '.PUB_COPY', 'ENABLED', True$) end Eventflow = 1 end event Event EDT_ROTR_PARMS.CHANGED(NewData) NewParmsList = Get_Property(@Window : '.EDT_ROTR_PARMS', 'LIST') OrigParmsList = Get_Property(@Window, '@ORIGPARMS') If NewParmsList NE OrigParmsList then Set_Property(@Window, 'SAVEWARN', True$) Set_Property(@Window : '.PUB_SAVE', 'ENABLED', True$) end else Set_Property(@Window, 'SAVEWARN', False$) Set_Property(@Window : '.PUB_SAVE', 'ENABLED', False$) end Eventflow = 1 end event Event EDT_ROTR_PARMS.CHAR(VirtCode, ScanCode, CtrlKey, ShiftKey, Altkey) NewParmsList = Get_Property(@Window : '.EDT_ROTR_PARMS', 'LIST') OrigParmsList = Get_Property(@Window, '@ORIGPARMS') If NewParmsList NE OrigParmsList then Set_Property(@Window, 'SAVEWARN', True$) Set_Property(@Window : '.PUB_SAVE', 'ENABLED', True$) end else Set_Property(@Window, 'SAVEWARN', False$) Set_Property(@Window : '.PUB_SAVE', 'ENABLED', False$) end Eventflow = 1 end event Event EDT_ROTR_PARMS.CLICK() // Check if user has access to enable/disable ROTR CanEdit = Get_Property(@Window, '@CAN_EDIT') // Check if user clicked a cell ClickPos = Get_Property(CtrlEntID, "CLICKPOS") If (CanEdit EQ True$) and (ClickPos EQ 3) then SelCell = Get_Property(CtrlEntID, "NOTIFYPOS") Col = SelCell<1> // If user clicked column 2 or 3, then notify OI that the data in the control has changed to trigger the // EDT_ROTR_PARMS "CHANGED" event. The clicking of the checkbox does not natively trigger this event. If (Col EQ 2) or (Col EQ 3) then Post_Event(CtrlEntID, 'CHANGED') end end event Event EDT_ROTR_PARMS.INSERTROW(RowNum) Eventflow = 0 end event Event EDT_ROTR_PARMS.DELETEROW(RowNum, RowData) Eventflow = 0 end event Event EDT_REV_HIST.INSERTROW(RowNum) Eventflow = 0 end event Event EDT_REV_HIST.DELETEROW(RowNum, RowData) Eventflow = 0 end event Event EDT_ROTR_PARMS.WINMSG(hWnd, Message, wParam, lParam) Begin Case Case (Message = ETM_INSERTROW$) * // Stop the insert here... Call Set_WinMsgVal( TRUE$, 0 ) ; * // Force PS to return 0 to Windows Case (Message = ETM_DELETEROW$) * // Stop the delete here... Call Set_WinMsgVal( TRUE$, 0 ) ; * // Force PS to return 0 to Windows end case Eventflow = 0 end event Event EDT_REV_HIST.WINMSG(hWnd, Message, wParam, lParam) Begin Case Case (Message = ETM_INSERTROW$) * // Stop the insert here... Call Set_WinMsgVal( TRUE$, 0 ) ; * // Force PS to return 0 to Windows Case (Message = ETM_DELETEROW$) * // Stop the delete here... Call Set_WinMsgVal( TRUE$, 0 ) ; * // Force PS to return 0 to Windows end case Eventflow = 0 end event //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Internal GoSubs //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Setup_OLE_Controls: Qualify = '' Qualify<1> = 1 Qualify<4> = 0 return UpdateRevHist: // Gather one line revision detail Result = False$ Response = Dialog_Box('NDW_ROTR_REV_DET', @WINDOW) Valid = Response<1> RevisionDetail = Response<2> If Valid then ROTRRevRec = Database_Services('ReadDataRow', 'ROTR_PARM_REV_HIST', 1) If Error_Services('NoError') then Usernames = ROTRRevRec Dates = ROTRRevRec Times = ROTRRevRec Revisions = ROTRRevRec ModUser = OConv( @USER4, '[XLATE_CONV,LSL_USERS*FIRST_LAST]' ) ModDate = Date() ModTime = Time() ModRevision = RevisionDetail ROTRRevRec = Insert(Usernames, 0, 1, 0, ModUser) ROTRRevRec = Insert(Dates, 0, 1, 0, ModDate) ROTRRevRec = Insert(Times, 0, 1, 0, ModTime) ROTRRevRec = Insert(Revisions, 0, 1, 0, ModRevision) Database_Services('WriteDataRow', 'ROTR_PARM_REV_HIST', 1, ROTRRevRec) If Error_Services('NoError') then Result = True$ end else Errmsg('Error writing ROTR_PARM_REV_HIST record.' : @SVM : 'Please notify OpenInsight administrator') end end else Errmsg('Error reading ROTR_PARM_REV_HIST record.' : @SVM : 'Please notify OpenInsight administrator') end end else Errmsg('You must enter revision details in order to save changes to ROTR parameters.') end return FillRevHist: RevHistRec = Database_Services('ReadDataRow', 'ROTR_PARM_REV_HIST', 1) RevHistArray = '' RevHistArray<1> = RevHistRec RevHistArray<2> = RevHistRec RevHistArray<3> = OConv(RevHistRec, 'D') RevHistArray<4> = OConv(RevHistRec, 'MTH') Set_Property(@Window : '.EDT_REV_HIST', 'ARRAY', RevHistArray) return