327 lines
12 KiB
Plaintext
327 lines
12 KiB
Plaintext
Compile function NDW_GAN_PARAM_MANAGER_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_GaN_Param_Manager_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)
|
|
12/05/19 djs Created initial commuter module.
|
|
10/27/20 djs Refactored commuter module to be soft coded instead of hard coded.
|
|
|
|
***********************************************************************************************************************/
|
|
#pragma precomp SRP_PreCompiler
|
|
#window NDW_GAN_PARAM_MANAGER
|
|
|
|
$Insert EVENT_SETUP
|
|
$Insert APP_INSERTS
|
|
$Insert MSG_EQUATES
|
|
|
|
Declare subroutine End_Window, Database_Services, ErrMsg
|
|
Declare function SQL_Services, SRP_Array, Database_Services, Gan_Services
|
|
|
|
SubclassInfo = Form_Services('FindSubclassControl')
|
|
Subclass = SubclassInfo<1>
|
|
|
|
// The purpose of this line is to prevent the SRP Editor from throwing a warning when compiling.
|
|
If Not(Assigned(Param8)) then Param8 = ''
|
|
|
|
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
|
|
If Event EQ 'OLE' then
|
|
Transfer Event to OIEvent
|
|
Transfer Param1 to Event
|
|
Transfer Param2 to Param1
|
|
Transfer Param3 to Param2
|
|
Transfer Param4 to Param3
|
|
Transfer Param5 to Param4
|
|
Transfer Param6 to Param5
|
|
Transfer Param7 to Param6
|
|
Transfer Param8 to Param7
|
|
end
|
|
|
|
GoToEvent Event for CtrlEntId else
|
|
// Event not implemented
|
|
end
|
|
|
|
Return EventFlow or 1
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// EVENT HANDLERS
|
|
//-----------------------------------------------------------------------------
|
|
|
|
Event WINDOW.CREATE(CreateParam)
|
|
|
|
Visible = Get_Property(@Window, 'VISIBLE')
|
|
If Visible EQ False$ then
|
|
PSNo = CreateParam
|
|
CurrPartNo = Xlate('PROD_SPEC', PSNo, 'CURR_PART_NO', 'X')
|
|
Set_Property(@Window:'.EDL_PSN', 'TEXT', PSNo)
|
|
Set_Property(@Window:'.EDL_PART_NO', 'TEXT', CurrPartNo)
|
|
|
|
GoSub Setup_OLE_Controls
|
|
|
|
FormSize = ''
|
|
SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, FormSize)
|
|
Eventflow = 0
|
|
end
|
|
|
|
End Event
|
|
|
|
|
|
Event WINDOW.CLOSE(CancelFlag)
|
|
|
|
Post_Event('DBW_PROD_SPEC_GAN', 'OMNIEVENT', 'EnableImportButton')
|
|
Set_Property(@Window:'.OLE_TAB', "OLE.FlickerFree", False$)
|
|
|
|
end event
|
|
|
|
|
|
Event OLE_TAB.SelChanged(Index, PrevIndex)
|
|
|
|
GoSub FillParamCtrl
|
|
|
|
end event
|
|
|
|
|
|
Event PUB_EXIT.CLICK()
|
|
|
|
Post_Event(@Window, 'CLOSE')
|
|
|
|
end event
|
|
|
|
|
|
Event PUB_SAVE.CLICK()
|
|
|
|
PSN = Get_Property(@Window:'.EDL_PSN', 'TEXT')
|
|
PartNo = Get_Property(@Window:'.EDL_PART_NO', 'TEXT')
|
|
If ( (PSN NE '') and (PartNo NE '') ) then
|
|
StageList = Get_Property(@Window, '@GAN_PARAM_STAGES')
|
|
ValueList = Get_Property(@Window, '@VALUE_LIST')
|
|
For each Stage in StageList using @VM setting StageIndex
|
|
ParameterList = ValueList<StageIndex>
|
|
ParamConfigKey = PSN:'*':PartNo:'*':Stage
|
|
Convert @VM to @FM in ParameterList
|
|
Convert @SVM to @VM in ParameterList
|
|
ParamConfigRec = SRP_Array('Rotate', ParameterList, @FM, @VM)
|
|
NumParams = DCount(ParamConfigRec<1>, @VM)
|
|
EnabledArray = ParamConfigRec<3>
|
|
For ParamIndex = 1 to NumParams
|
|
If EnabledArray<0, ParamIndex> EQ '' then EnabledArray<0, ParamIndex> = 0
|
|
Next ParamIndex
|
|
ParamConfigRec<3> = EnabledArray
|
|
Database_Services('WriteDataRow', 'GAN_PARAM_CONFIG', ParamConfigKey, ParamConfigRec, True$, False$, True$)
|
|
Next Stage
|
|
Set_Property(@Window:'.PUB_SAVE', 'ENABLED', False$)
|
|
Send_Event('NDW_GAN_PROD_SPEC', 'OMNIEVENT', 'EnableImportButton')
|
|
end else
|
|
ErrMsg('Error saving GaN parameter configuration due to null PSN or null PartNo.')
|
|
end
|
|
|
|
end event
|
|
|
|
|
|
Event OLE_PARAM_EDT.OnCheckChanged(Cell, OldValue, NewValue)
|
|
|
|
CellCol = Field(Cell, ';', 1)
|
|
CellRow = Field(Cell, ';', 2)
|
|
ParameterList = ''
|
|
ParamCtrl = @Window:'.OLE_PARAM_EDT'
|
|
TabCtrl = @Window:'.OLE_TAB'
|
|
NewValue = Get_Property(ParamCtrl, 'OLE.CellCheck[':CellCol:'; ':CellRow:']')
|
|
TabIndex = Get_Property(TabCtrl, 'OLE.SelectedTab')
|
|
NumCols = 3
|
|
ValueList = Get_Property(@Window, '@VALUE_LIST')
|
|
ParameterList = ValueList<TabIndex>
|
|
ParameterList<0, CellRow, 3> = NewValue
|
|
ValueList<TabIndex> = ParameterList
|
|
Set_Property(@Window, '@VALUE_LIST', ValueList)
|
|
|
|
GoSub EnableSaveButton
|
|
|
|
end event
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Internal GoSubs
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
Setup_OLE_Controls:
|
|
|
|
GoSub SetupTabCtrl
|
|
GoSub SetupParamCtrl
|
|
GoSub ReadCurrParams
|
|
GoSub FillParamCtrl
|
|
|
|
return
|
|
|
|
|
|
SetupTabCtrl:
|
|
|
|
TabCtrl = @Window:'.OLE_TAB'
|
|
CaptionList = Xlate('APP_INFO', 'GAN_PARAM_STAGES', '', 'X')
|
|
NumTabs = DCount(CaptionList, @VM)
|
|
Set_Property(TabCtrl, "OLE.TabCount", NumTabs)
|
|
Set_Property(@Window, '@GAN_PARAM_STAGES', CaptionList)
|
|
Convert @VM to ',' in CaptionList
|
|
Set_Property(TabCtrl, "OLE.CaptionList", CaptionList)
|
|
FontArray = 'Segoe UI':@SVM:9:@SVM:700
|
|
Set_Property(TabCtrl, "OLE.Font", FontArray)
|
|
Set_Property(TabCtrl, "OLE.SelectFont", FontArray)
|
|
|
|
// Qualify OLE events that we want to intercept
|
|
Qualifier = ''
|
|
Qualifier<1> = 1
|
|
Qualifier<4> = 0 ; * process synchronously (i.e. immediately)
|
|
Send_Message(TabCtrl, 'QUALIFY_EVENT', 'OLE.SelChanged', Qualifier)
|
|
Set_Property(TabCtrl, "OLE.FlickerFree", True$)
|
|
|
|
return
|
|
|
|
|
|
SetupParamCtrl:
|
|
|
|
ParamCtrl = @Window:'.OLE_PARAM_EDT'
|
|
HeaderRowTitles = 'Metrology Name':@VM:'Parameter Name':@VM:'Critical'
|
|
DimArray = 3:@FM:1
|
|
Set_Property(ParamCtrl, "OLE.Dimension", DimArray)
|
|
Set_Property(ParamCtrl, "OLE.TitleList", HeaderRowTitles)
|
|
|
|
HeaderFontArray = 'Segoe UI':@SVM:8:@SVM:700
|
|
Set_Property(ParamCtrl, "OLE.HeaderFont[All; All]", HeaderFontArray)
|
|
HeaderColArray = 0:@FM:False$:@FM:False$:@FM:False$
|
|
Set_Property(ParamCtrl, "OLE.HeaderColumn[1]", HeaderColArray)
|
|
|
|
// Disable resizing of columns as there is no need for this on this form
|
|
StageColSize = Get_Property(ParamCtrl, "OLE.DataColumn[1]")
|
|
StageColSize<1> = 358
|
|
StageColSize<3> = False$
|
|
Set_Property(ParamCtrl, "OLE.DataColumn[1-2]", StageColSize)
|
|
StageColSize<1> = 80
|
|
Set_Property(ParamCtrl, "OLE.DataColumn[3]", StageColSize)
|
|
|
|
CheckBoxArray = 'Check Box'
|
|
CheckBoxArray<2,1> = True$
|
|
Set_Property(ParamCtrl, "OLE.CellType[3; All]", CheckBoxArray)
|
|
Set_Property(ParamCtrl, "OLE.CellAlignment[1-2; All]", 'C':@FM:'L':@FM:'C')
|
|
Set_Property(ParamCtrl, "OLE.CellAlignment[3; All]", 'C':@FM:'C':@FM:'C')
|
|
Set_Property(ParamCtrl, "OLE.HeaderAlignment[All; 1]", 'C':@FM:'C':@FM:'C')
|
|
Set_Property(ParamCtrl, "OLE.CellProtection[1-2; All]", 'Read Only')
|
|
|
|
// Qualify OLE events that we want to intercept
|
|
Qualifier = ''
|
|
Qualifier<1> = 1
|
|
Qualifier<4> = 0 ; * process synchronously (i.e. immediately)
|
|
Send_Message(ParamCtrl, 'QUALIFY_EVENT', 'OLE.OnCheckChanged', Qualifier)
|
|
|
|
return
|
|
|
|
|
|
ReadCurrParams:
|
|
|
|
PartNo = Get_Property(@Window:'.EDL_PART_NO', 'TEXT')
|
|
PSNo = Get_Property(@Window:'.EDL_PSN', 'TEXT')
|
|
ParamCtrl = @Window:'.OLE_PARAM_EDT'
|
|
TabCtrl = @Window:'.OLE_TAB'
|
|
ParameterList = Gan_Services('GetCurrPartParams', PartNo)
|
|
GaNParamStages = Get_Property(@Window, '@GAN_PARAM_STAGES')
|
|
|
|
For each Stage in GaNParamStages using @VM setting TabIndex
|
|
ParamConfigKey = PSNo:'*':PartNo:'*':Stage
|
|
EnabledArray = Xlate('GAN_PARAM_CONFIG', ParamConfigKey, 'ENABLED', 'X')
|
|
Convert @VM to @SVM in EnabledArray
|
|
StageList = ParameterList<TabIndex>
|
|
NumParams = DCount(StageList, @VM)
|
|
For ParamPos = 1 to NumParams
|
|
StageList<0, ParamPos, 3> = EnabledArray<0, 0, ParamPos>
|
|
Next ParamPos
|
|
ParameterList<TabIndex> = StageList
|
|
Next Stage
|
|
Set_Property(@Window, '@VALUE_LIST', ParameterList)
|
|
Set_Property(@Window, '@ORIG_VALUE_LIST', ParameterList)
|
|
|
|
return
|
|
|
|
|
|
FillParamCtrl:
|
|
|
|
ParameterList = ''
|
|
ParamCtrl = @Window:'.OLE_PARAM_EDT'
|
|
TabCtrl = @Window:'.OLE_TAB'
|
|
TabIndex = Get_Property(TabCtrl, 'OLE.SelectedTab')
|
|
NumCols = 3
|
|
ValueList = Get_Property(@Window, '@VALUE_LIST')
|
|
ParameterList = ValueList<TabIndex>
|
|
Convert @VM to @FM in ParameterList
|
|
Convert @SVM to @VM in ParameterList
|
|
NumRows = DCount(ParameterList, @FM)
|
|
If NumRows EQ 0 then NumRows = 1
|
|
DimArray = 3:@FM:NumRows
|
|
ParamCtrl = @Window:'.OLE_PARAM_EDT'
|
|
Set_Property(ParamCtrl, "OLE.Dimension", DimArray)
|
|
Set_Property(ParamCtrl, "OLE.CellAlignment[1-2; All]", 'C':@FM:'L':@FM:'L')
|
|
Set_Property(ParamCtrl, 'OLE.List', ParameterList)
|
|
|
|
* If TabIndex EQ 3 then
|
|
* // 'CAN'
|
|
* If TabIndex EQ 3 then
|
|
* // 'CAN'
|
|
* ParameterList = SRP_Array('Rotate', ParameterList, @FM, @VM)
|
|
* ParamNames = ParameterList<1>
|
|
* Locate 'Candela Total Defects' in ParamNames using @VM setting vPos then
|
|
* Set_Property(ParamCtrl, "OLE.CellCheckEnabled[3; ":vPos:"]", False$)
|
|
* Set_Property(ParamCtrl, "OLE.CellCheckEnabled[3; ":vPos:"]", False$)
|
|
* end
|
|
* end
|
|
* end
|
|
|
|
GoSub EnableSaveButton
|
|
|
|
return
|
|
|
|
|
|
EnableSaveButton:
|
|
|
|
ChangeDetected = False$
|
|
ValueList = Get_Property(@Window, '@VALUE_LIST')
|
|
OrigValueList = Get_Property(@Window, '@ORIG_VALUE_LIST')
|
|
If ValueList NE OrigValueList then ChangeDetected = True$
|
|
Set_Property(@Window:'.PUB_SAVE', 'ENABLED', ChangeDetected)
|
|
|
|
return
|
|
|
|
|
|
MergeList:
|
|
|
|
ParamConfigKey = PSNo:'*':PartNo:'*':Stage
|
|
EnabledArray = Xlate('GAN_PARAM_CONFIG', ParamConfigKey, 'ENABLED', 'X')
|
|
List = ParameterList<TabIndex>
|
|
Convert @VM to @FM in List
|
|
Convert @SVM to @VM in List
|
|
List = SRP_Array('Rotate', List, @FM, @VM)
|
|
List<3> = EnabledArray
|
|
List = SRP_Array('Rotate', List, @FM, @VM)
|
|
|
|
return
|
|
|