COMPILE FUNCTION Comm_Recipe(Instruction,Parm1,Parm2) EQU CRLF$ TO CHAR(13):CHAR(10) DECLARE FUNCTION MemberOf, Utility, Popup, Send_Message DECLARE FUNCTION Fieldcount, Get_Property, Msg, Send_Event, Dialog_Box DECLARE SUBROUTINE Create_Note, ErrMsg, Set_Property $INSERT RECIPE_EQU $INSERT RECIPE_LAYER_INFO_EQU $INSERT MSG_EQUATES $INSERT POPUP_EQUATES $INSERT LOGICAL $INSERT DICT_EQUATES EQU CR$ TO CHAR(13) ReturnVar = 0 BEGIN CASE CASE Instruction = 'Create' ; GOSUB Create CASE Instruction = 'TabClick' ; GOSUB TabClick CASE Instruction = 'VScroll' ; GOSUB VScroll CASE Instruction = 'GET_FIELDS_VALUES' ; GOSUB GET_FIELDS_VALUES CASE Instruction = 'VIEW_MOD_INFO' ; GOSUB VIEW_MOD_INFO CASE Instruction = 'WRITE_STAMP' ; GOSUB WRITE_STAMP CASE Instruction = 'READ_STORE' ; GOSUB READ_STORE CASE 1 ErrMsg('Unknown Instruction ':QUOTE(Instruction):' passed to Recipe_Comm') END CASE RETURN ReturnVar * * * * * * * Create: * * * * * * * CtrlEntID = @WINDOW:".LIMIT_INFO" * Set the column header for column 1 to multi-line HeaderText = Get_Property(CtrlEntID,'LABEL') FOR N = 2 TO 31 ColStyle = Send_Message(CtrlEntID, "COLSTYLE", N) ColStyle = BitOr(ColStyle,262144) ColStyle = Send_Message(CtrlEntID, "COLSTYLE", N, ColStyle) BEGIN CASE CASE N = 2 ; HeaderText = 'Deposit':CR$:'Time':CR$:'Min' CASE N = 3 ; HeaderText = 'Deposit':CR$:'Time':CR$:'Max' CASE N = 4 ; HeaderText = 'Diluent':CR$:'Min' CASE N = 5 ; HeaderText = 'Diluent':CR$:'Max' CASE N = 6 ; HeaderText = 'Dopant':CR$:'Flow':CR$:'Min' CASE N = 7 ; HeaderText = 'Dopant':CR$:'Flow':CR$:'Max' CASE N = 8 ; HeaderText = 'HCL':CR$:'Flow':CR$:'Min' CASE N = 9 ; HeaderText = 'HCL':CR$:'Flow':CR$:'Max' CASE N = 10 ; HeaderText = 'Bake':CR$:'Time':CR$:'Min' CASE N = 11 ; HeaderText = 'Bake':CR$:'Time':CR$:'Max' CASE N = 12 ; HeaderText = 'H2':CR$:'Flow':CR$:'Min' CASE N = 13 ; HeaderText = 'H2':CR$:'Flow':CR$:'Max' CASE N = 14 ; HeaderText = 'TCS':CR$:'Flow':CR$:'Min' CASE N = 15 ; HeaderText = 'TCS':CR$:'Flow':CR$:'Max' CASE N = 16 ; HeaderText = 'DCS':CR$:'Flow':CR$:'Min' CASE N = 17 ; HeaderText = 'DCS':CR$:'Flow':CR$:'Max' CASE N = 18 ; HeaderText = 'Aux 1':CR$:'Min' CASE N = 19 ; HeaderText = 'Aux 1':CR$:'Max' CASE N = 20 ; HeaderText = 'Aux 2':CR$:'Min' CASE N = 21 ; HeaderText = 'Aux 2':CR$:'Max' CASE N = 22 ; HeaderText = 'Front':CR$:'OffSet':CR$:'Min' CASE N = 23 ; HeaderText = 'Front':CR$:'OffSet':CR$:'Max' CASE N = 24 ; HeaderText = 'Side':CR$:'OffSet':CR$:'Min' CASE N = 25 ; HeaderText = 'Side':CR$:'OffSet':CR$:'Max' CASE N = 26 ; HeaderText = 'Rear':CR$:'OffSet':CR$:'Min' CASE N = 27 ; HeaderText = 'Rear':CR$:'OffSet':CR$:'Max' CASE N = 28 ; HeaderText = 'Etch 1':CR$:'Min' CASE N = 29 ; HeaderText = 'Etch 1':CR$:'Max' CASE N = 30 ; HeaderText = 'Etch 2':CR$:'Min' CASE N = 31 ; HeaderText = 'Etch 2':CR$:'Max' END CASE NEXT N * Set the height of the column headers for the edittable Set_Property(CtrlEntID,'HEADERHEIGHT',40) Set_Property(CtrlEntID,'LABEL',HeaderText) RETURN * * * * * * * TabClick: * * * * * * * IF Parm1 NE '' THEN Page = Parm1 END ELSE Page = Get_Property(@WINDOW:'.TABCONTROL','VALUE') END Set_Property(@WINDOW,'VPOSITION',Page) RETURN * * * * * * * VScroll: * * * * * * * Set_Property(@WINDOW:'.TABCONTROL','VALUE', Parm1) RETURN * * * * * * * WRITE_STAMP: * * * * * * * * GET ARRAY OF ALL UNIQUE FIELDS OrigFields = get_property( @WINDOW, '@Fields' ) OrigValues = get_property( @WINDOW, '@Values' ) FieldCToUse = 'RMOD_FIELD' IDCToUse = 'RMOD_ID' FieldsInControl = get_property( @WINDOW:'.':FieldCToUse, 'TEXT' ) IDSInControl = get_property( @WINDOW:'.':IDCToUse, 'TEXT' ) gosub get_fields_values Acnt = fieldcount( OrigFields, @fm ) FOR I = 1 TO Acnt FieldToCheck = OrigFields IF Values <> OrigValues THEN LOCATE FieldToCheck IN FieldsInControl BY 'AL' USING @VM SETTING CPos THEN IDSInControl<1,CPos> = @USER4 END ELSE FieldsInControl = insert( FieldsInControl, 1, CPos, 0, FieldToCheck ) IDSInControl = insert( IDSInControl, 1, CPos, 0, @user4 ) END END NEXT I Set_Property( @WINDOW:'.':FieldCToUse, 'TEXT', FieldsInControl ) Set_Property( @WINDOW:'.':IDCToUse, 'TEXT', IDSInControl ) Set_Property( @WINDOW, '@Fields', '' ) Set_Property( @WINDOW, '@Values', '' ) RETURN * * * * * * * GET_FIELDS_VALUES: * * * * * * * * Called on read event of recipe Fields = '' Values = '' AllControls = Utility( 'OBJECTLIST', @WINDOW, '' ) Acnt = FIELDCOUNT( AllControls, @FM ) FOR I = 1 TO Acnt ThisControl = AllControls Type = get_property( ThisControl, 'TYPE' ) Column = get_property( ThisControl, 'COLUMN' ) IF Type = 'EDITTABLE' OR Type = 'EDITFIELD' OR Type = 'EDITBOX' OR Type = 'COMBOBOX' THEN CCnt = FIELDCOUNT( Column, @svm ) FOR J = 1 TO CCnt ThisColumn = Column<1,1,J> IF ThisColumn <> '' THEN LOCATE ThisColumn IN Fields BY 'AL' USING @FM SETTING Fpos ELSE Fields = INSERT( Fields, Fpos, 0, 0, ThisColumn ) IF Type = 'EDITTABLE' THEN Values = INSERT( Values, FPos, 0, 0, Get_Property( ThisControl, 'ARRAY' ) ) ;* We need to pull it off the array END ELSE Values = INSERT( Values, FPos, 0, 0, Get_Property( ThisControl, 'TEXT' ) ) ;* Use the text value END END END NEXT J END NEXT I RETURN * * * * * * * VIEW_MOD_INFO: * * * * * * * FieldCToUse = 'RMOD_FIELD' IDCToUse = 'RMOD_ID' PopupDisplay = '' FieldsInControl = get_property( @WINDOW:'.':FieldCToUse, 'TEXT' ) IDSInControl = get_property( @WINDOW:'.':IDCToUse, 'TEXT' ) Fcnt = fieldcount( FieldsInControl, @vm ) FOR I = 1 TO Fcnt TLabel = xlate( 'DICT.RECIPE', FieldsInControl<1,i>, DICT_DISPLAY$, 'X' ) convert @vm to ' ' in TLabel ;* DON'T WANT MULTI LINED HEADING PopupDisplay<1,-1> = TLabel:@tm:oconv( IDSInControl<1,i>, '[XLATE_CONV,LSL_USERS*FIRST_LAST]' ) NEXT I OverRide = '' OverRide = PopupDisplay OverRide = 'Recipe Modification History View' Void = Popup( @WINDOW, OverRide, 'RDS_MOD_HIST_VIEW' ) RETURN * * * * * * * READ_STORE: * * * * * * * * GET ARRAY OF ALL UNIQUE FIELDS GOSUB GET_FIELDS_VALUES Set_Property( @WINDOW, '@Fields', Fields ) Set_Property( @WINDOW, '@Values', Values ) RETURN