$PBExportHeader$w_mtrl_configure.srw forward global type w_mtrl_configure from w_publ_base end type type cb_setdefault from uo_imflatbutton within w_mtrl_configure end type type cb_savenew from uo_imflatbutton within w_mtrl_configure end type type cb_saveexit from uo_imflatbutton within w_mtrl_configure end type type cb_csetdefault from uo_imflatbutton within w_mtrl_configure end type type dw_uc from datawindow within w_mtrl_configure end type type cb_2 from uo_imflatbutton within w_mtrl_configure end type type ln_bar from line within w_mtrl_configure end type type ln_bar2 from line within w_mtrl_configure end type type r_bar from rectangle within w_mtrl_configure end type end forward global type w_mtrl_configure from w_publ_base integer width = 2071 integer height = 1040 string title = "产品配置定义" boolean minbox = false windowtype windowtype = response! event ue_addpzmx ( ) event ue_usual_query_filt ( ) event ue_setdefaultpz ( ) event ue_addpz ( ) event ue_f8 ( ) event ue_tabselect ( ) event ue_csetdefaultpz ( ) cb_setdefault cb_setdefault cb_savenew cb_savenew cb_saveexit cb_saveexit cb_csetdefault cb_csetdefault dw_uc dw_uc cb_2 cb_2 ln_bar ln_bar ln_bar2 ln_bar2 r_bar r_bar end type global w_mtrl_configure w_mtrl_configure type variables uo_mtrlpz uo_mtrl_pz //uo_mtrl_pf uo_mp s_mtrl_pz s_mtrlpz s_mtrl_pz s_mp Long ll_pzid,ll_mtrlid,ll_pztype,ll_newpzflag,ll_ifzj String ls_pzname,ls_oldpzname,ls_pzename,ls_dscrp String ins_sqlerrtext end variables forward prototypes public function integer wf_face () public subroutine wf_delpz () public function integer wf_save () public subroutine wf_cmp_zh (long arg_mtrlid, string arg_strall) public function string wf_pb_of_globalreplace (string arg_strall, string ls_name, string dec_temp) end prototypes event ue_addpzmx();//String code,Name //Long ls_i,ls_mxrow //String arg_msg //ls_mxrow = dw_mx.GetRow( ) //IF dw_mx.GetRow( ) <= 0 THEN // MessageBox('警告','请选定当前目标物料') // RETURN //END IF // //s_mtrlpzmx_trans s_mt //s_mt.pzid = dw_mx.Object.u_configure_code_pzid[ls_mxrow ] //OpenWithParm(w_configuremx_ch,s_mt) // //s_mt = Message.PowerObjectParm //IF IsNull(s_mt) OR s_mt.pzid <= 0 THEN // RETURN //END IF //IF IsNull(s_mt.printid) OR s_mt.printid = 0 THEN RETURN // //IF dw_mx.Object.u_configure_codemx_printid[ls_mxrow] = 0 THEN // dw_mx.Object.u_configure_codemx_printid[ls_mxrow] = s_mt.printid // dw_mx.Object.u_configure_codemx_pzcodemx[ls_mxrow] = s_mt.pzcodemx // dw_mx.Object.u_configure_codemx_namemx[ls_mxrow] = s_mt.namemx //ELSEIF dw_mx.Object.u_configure_codemx_printid[ls_mxrow] <> s_mt.printid THEN // arg_msg = "是否覆盖'"+dw_mx.Object.u_configure_code_name[ls_mxrow]+"'项的配置明细?" // IF MessageBox ("if",arg_msg,question!,yesno! ) = 1 THEN // dw_mx.Object.u_configure_codemx_printid[ls_mxrow] = s_mt.printid // dw_mx.Object.u_configure_codemx_pzcodemx[ls_mxrow] = s_mt.pzcodemx // dw_mx.Object.u_configure_codemx_namemx[ls_mxrow] = s_mt.namemx // END IF //END IF // // // // // // end event event ue_usual_query_filt();//IF dw_edit_mode OR KeyDown(keyf4!) OR KeyDown(keyf5!) THEN RETURN //String obj_expr = '' //string querystr //querystr=tab_1.tabpage_1.sle_usual_query.Text //IF Trim(querystr) <> '' THEN // IF Pos(Trim(querystr),'%') = 0 THEN // obj_expr = obj_expr+' (mtrlcode LIKE "%'+Trim(querystr)+'%")' // obj_expr = obj_expr+' or (mtrlname LIKE "%'+Trim(querystr)+'%")' // ELSE // obj_expr = obj_expr+' (mtrlcode LIKE "'+Trim(querystr)+'")' // obj_expr = obj_expr+' or (mtrlcode LIKE "'+Trim(querystr)+'")' // END IF //END IF // //tab_1.tabpage_1.dw_1.SetFilter(obj_expr) // //cb_retrieve.triggerevent( clicked!) end event event ue_setdefaultpz();IF ll_newpzflag = 0 THEN String arg_msg Long ls_mtrlid,ls_cid IF uo_mtrl_pz.SetDefaultPZ(0,ll_mtrlid,arg_msg,ll_pzid) = 0 THEN arg_msg = "更新默认配置失败~n"+arg_msg MessageBox('警告',arg_msg) ELSE MessageBox('','设置成功') END IF END IF end event event ue_addpz();//if not f_power_ind(638) then // messagebox(publ_operator,'你没有使用权限!') // return //end if Long ll_row //ll_row = dw_mx.GetRow() //IF ll_row <= 0 THEN // MessageBox(publ_operator,'请选定产品') // RETURN //END IF //Long new_row,ls_cid,ls_i //String code,Name ,arg_msg // //IF ll_newpzflag = 1 THEN // s_mp.mode = 0 // s_mp.cid = -1 //ELSE // s_mp.mode = 1 // s_mp.cid = ll_pzid //END IF // //IF wf_save(arg_msg ) = 1 THEN // MessageBox('','保存成功' ) // IF uo_mtrl_pz.SetDefaultPZ(0,s_mp.mtrlid,arg_msg,-1) = 0 THEN // arg_msg = "更新默认配置失败~n"+arg_msg // MessageBox('警告',arg_msg) // END IF //ELSE // MessageBox('警告',arg_msg ) //END IF end event event ue_f8();openwithparm(w_mtrl_configure_ch,ll_mtrlid) string ls_str ls_str = message.stringparm if ls_str = '' then return dw_uc.object.name[dw_uc.getrow()] = ls_str dw_uc.accepttext( ) dw_uc.setcolumn('ename') dw_uc.setfocus() end event event ue_tabselect();//if ll_pztype <> 2 THEN // tab_1.selecttab(1) //else // tab_1.selecttab(2) //end if end event event ue_csetdefaultpz();IF ll_newpzflag = 0 THEN String arg_msg Long ls_mtrlid,ls_cid IF uo_mtrl_pz.SetDefaultPZ(1,ll_mtrlid,arg_msg,ll_pzid) = 0 THEN arg_msg = "更新默认配置失败~n"+arg_msg MessageBox('警告',arg_msg) ELSE MessageBox('','取消设置标准成功') END IF END IF end event public function integer wf_face ();cb_setdefault.Enabled = (ll_newpzflag = 0) cb_csetdefault.Enabled = (ll_newpzflag = 0) IF ll_newpzflag = 0 THEN cb_savenew.enabled = FALSE END IF IF dw_uc.Object.TYPE[dw_uc.GetRow()] = 1 THEN dw_uc.Modify('ifzj.visible=1') ELSE dw_uc.Modify('ifzj.visible=0') END IF IF ll_pztype = 2 THEN dw_uc.Modify('type_t.color=0') dw_uc.Modify('type.color=0') dw_uc.Modify('name.color=0') dw_uc.Modify('name_t.color=0') dw_uc.Modify('ename.color=0') dw_uc.Modify('ename_t.color=0') dw_uc.Modify('dscrp.color=0') dw_uc.Modify('dscrp_t.color=0') END IF RETURN 1 end function public subroutine wf_delpz (); end subroutine public function integer wf_save ();Long ll_row,i_pztype,i_ifzj Int i_ifgeneral String arg_msg String i_pzname,i_pzename,i_dscrp Decimal i_capacity,i_capaparm Decimal i_net_weight,i_gross_weight,i_cubage dw_uc.AcceptText( ) ll_row = dw_uc.GetRow( ) IF ll_row <= 0 THEN MessageBox('系统提示','没有可保存的内容') RETURN 0 END IF IF dw_uc.Object.ifzj[ll_row] = 1 And Not f_power_ind(1770,sys_msg_pow) THEN MessageBox(publ_operator,'你没有建立子件的权限!') RETURN 0 END IF IF dw_uc.Object.ifzj[ll_row] = 0 And Not f_power_ind(1771,sys_msg_pow) THEN MessageBox(publ_operator,'你没有建立组合配置的权限!') RETURN 0 END IF uo_func_mtrlcfg uo_func_mtrl_config uo_func_mtrl_config = Create uo_func_mtrlcfg IF Trim(dw_uc.Object.Name[ll_row]) = '' THEN MessageBox("系统提示" , "请输入配置说明!") dw_uc.SetColumn("name") dw_uc.SetFocus( ) RETURN 0 END IF IF ll_pztype = 1 THEN //当类型为组合配置时检查 IF ll_ifzj = 1 THEN //修改配置时,当类型为子件时判断是否用于组合配置中 IF Trim(dw_uc.Object.Name[ll_row]) <> ls_pzname THEN IF uo_func_mtrl_config.check_mtrlcfg_exist(ll_mtrlid,ls_pzname,arg_msg) = 0 THEN MessageBox('系统提示','保存失败!>>'+arg_msg) dw_uc.SetColumn('name') dw_uc.SetFocus() RETURN 0 END IF END IF END IF END IF i_pzname = Trim(dw_uc.Object.Name[ll_row]) i_pzename = Trim(dw_uc.Object.ename[ll_row]) i_pztype = dw_uc.Object.Type[ll_row] i_dscrp = Trim(dw_uc.Object.dscrp[ll_row]) i_ifzj = dw_uc.Object.ifzj[ll_row] i_capacity = dw_uc.Object.capacity[ll_row] i_capaparm = dw_uc.Object.capaparm[ll_row] i_net_weight = dw_uc.Object.net_weight[ll_row] i_gross_weight = dw_uc.Object.gross_weight[ll_row] i_cubage = dw_uc.Object.cubage[ll_row] i_ifgeneral = dw_uc.Object.ifgeneral[ll_row] IF ll_pztype = 1 THEN //新建配置检查配置合法性 IF Trim(dw_uc.Object.Name[ll_row]) <> ls_pzname THEN IF uo_func_mtrl_config.check_mtrlcfg_str(ll_mtrlid,i_pzname,i_ifzj,arg_msg) = 0 THEN MessageBox("系统提示" , '保存失败!>>'+arg_msg) dw_uc.SetColumn('name') dw_uc.SetFocus() RETURN 0 END IF END IF END IF s_mtrlpz.cid = ll_pzid s_mtrlpz.mtrlid = ll_mtrlid s_mtrlpz.Name = i_pzname s_mtrlpz.ename = i_pzename s_mtrlpz.ctype = i_pztype s_mtrlpz.dscrp = i_dscrp s_mtrlpz.newpzflag = ll_newpzflag s_mtrlpz.ifzj = i_ifzj s_mtrlpz.capacity = i_capacity s_mtrlpz.capaparm = i_capaparm s_mtrlpz.net_weight = i_net_weight s_mtrlpz.gross_weight = i_gross_weight s_mtrlpz.cubage = i_cubage s_mtrlpz.ifgeneral = i_ifgeneral //保存配置 IF uo_func_mtrl_config.Save(s_mtrlpz,arg_msg,True ) = 0 THEN MessageBox("系统提示" , '保存失败!>>'+arg_msg) RETURN 0 END IF Destroy uo_func_mtrl_config RETURN 1 end function public subroutine wf_cmp_zh (long arg_mtrlid, string arg_strall);// Long i Long contractcnt String ls_tmp decimal dec_temp_net_weight decimal dec_temp_gross_weight decimal dec_temp_cubage string arg_strall_net_weight string arg_strall_gross_weight string arg_strall_cubage datastore ds ds = Create datastore ds.DataObject = "dw_mtrl_color_color_df" ds.SetTransObject(sqlca) contractcnt = ds.Retrieve(arg_mtrlid) arg_strall_net_weight=arg_strall arg_strall_gross_weight=arg_strall arg_strall_cubage=arg_strall FOR i = 1 To contractcnt IF ds.Object.ifzj[i] = 1 THEN ls_tmp='' dec_temp_net_weight=0 dec_temp_gross_weight=0 dec_temp_cubage=0 ls_tmp=trim(ds.Object.name[i]) dec_temp_net_weight=dec(ds.Object.net_weight[i]) dec_temp_gross_weight=dec(ds.Object.gross_weight[i]) dec_temp_cubage=dec(ds.Object.cubage[i]) arg_strall_net_weight=wf_pb_of_globalreplace(arg_strall_net_weight,ls_tmp,string(dec_temp_net_weight)) arg_strall_gross_weight=wf_pb_of_globalreplace(arg_strall_gross_weight,ls_tmp,string(dec_temp_gross_weight)) arg_strall_cubage=wf_pb_of_globalreplace(arg_strall_cubage,ls_tmp,string(dec_temp_cubage)) END IF NEXT //messagebox('arg_strall_net_weight',arg_strall_net_weight) //messagebox('arg_strall_gross_weight',arg_strall_gross_weight) //messagebox('arg_strall_cubage',arg_strall_cubage) datastore ds_pricestr string s_rtn decimal arg_value_dec ds_pricestr = Create datastore ds_pricestr.DataObject = 'ds_pricestr_cmpl' ds_pricestr.SetTransObject(sqlca) ds_pricestr.Retrieve() ds_pricestr.Modify('cmpl.expression= "'+arg_strall_net_weight+'"') s_rtn = String(ds_pricestr.Object.cmpl[1]) arg_value_dec=0 arg_value_dec = Round(Dec(s_rtn),5) dw_uc.Object.net_weight[dw_uc.GetRow()]=arg_value_dec ds_pricestr.Modify('cmpl.expression= "'+arg_strall_gross_weight+'"') s_rtn = String(ds_pricestr.Object.cmpl[1]) arg_value_dec=0 arg_value_dec = Round(Dec(s_rtn),5) dw_uc.Object.gross_weight[dw_uc.GetRow()]=arg_value_dec ds_pricestr.Modify('cmpl.expression= "'+arg_strall_cubage+'"') s_rtn = String(ds_pricestr.Object.cmpl[1]) arg_value_dec=0 arg_value_dec = Round(Dec(s_rtn),5) dw_uc.Object.cubage[dw_uc.GetRow()]=arg_value_dec end subroutine public function string wf_pb_of_globalreplace (string arg_strall, string ls_name, string dec_temp);// //f_pb_of_globalreplace(arg_strall_net_weight,ls_tmp,string(dec_temp_net_weight)) Long i String exp_arry[],resp_end String rtn_str ls_name = Trim(String(ls_name)) dec_temp = String(Round(Dec(dec_temp),5)) //预防名称和 值都是数字 所以转换为5位小数 f_pb_split(arg_strall,"+" ,exp_arry) FOR i = 1 To UpperBound(exp_arry) IF Len(Trim(exp_arry[i])) > 0 THEN IF Trim(exp_arry[i]) = ls_name THEN //如果相等 直接替换 exp_arry[i] = dec_temp ELSEIF Pos(Trim(exp_arry[i]),'*') > 0 THEN //有乘号 用函数替换 数字不可能有 * 不可能有2*2的存在 exp_arry[i] = f_pb_of_globalreplace(exp_arry[i],ls_name,String(dec_temp)) END IF END IF NEXT rtn_str = '' FOR i = 1 To UpperBound(exp_arry) IF Len(Trim(exp_arry[i])) > 0 THEN IF rtn_str <> '' THEN rtn_str = rtn_str + ' + ' + exp_arry[i] ELSE rtn_str = exp_arry[i] END IF END IF NEXT RETURN rtn_str end function on w_mtrl_configure.create int iCurrent call super::create this.cb_setdefault=create cb_setdefault this.cb_savenew=create cb_savenew this.cb_saveexit=create cb_saveexit this.cb_csetdefault=create cb_csetdefault this.dw_uc=create dw_uc this.cb_2=create cb_2 this.ln_bar=create ln_bar this.ln_bar2=create ln_bar2 this.r_bar=create r_bar iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.cb_setdefault this.Control[iCurrent+2]=this.cb_savenew this.Control[iCurrent+3]=this.cb_saveexit this.Control[iCurrent+4]=this.cb_csetdefault this.Control[iCurrent+5]=this.dw_uc this.Control[iCurrent+6]=this.cb_2 this.Control[iCurrent+7]=this.ln_bar this.Control[iCurrent+8]=this.ln_bar2 this.Control[iCurrent+9]=this.r_bar end on on w_mtrl_configure.destroy call super::destroy destroy(this.cb_setdefault) destroy(this.cb_savenew) destroy(this.cb_saveexit) destroy(this.cb_csetdefault) destroy(this.dw_uc) destroy(this.cb_2) destroy(this.ln_bar) destroy(this.ln_bar2) destroy(this.r_bar) end on event resize;call super::resize;ln_bar.endx = this.width ln_bar2.endx = this.width r_bar.width = this.width end event event close;call super::close;//CLOSEWITHRETURN(THIS,mtrl_configure) end event event open;call super::open;This.TriggerEvent('ue_before_open') s_mtrlpz = Message.PowerObjectParm uo_mtrl_pz = Create uo_mtrlpz //uo_mp = Create uo_mtrl_pf ll_mtrlid = s_mtrlpz.mtrlid ll_pzid = s_mtrlpz.cid ll_pztype = s_mtrlpz.ctype ls_pzname = s_mtrlpz.Name ls_oldpzname = s_mtrlpz.Name ls_pzename = s_mtrlpz.ename ls_dscrp = s_mtrlpz.dscrp ll_newpzflag = s_mtrlpz.newpzflag ll_ifzj = s_mtrlpz.ifzj IF IsNull(ll_mtrlid) THEN ll_mtrlid = 0 IF IsNull(ll_pzid) THEN ll_pzid = 0 IF IsNull(ls_pzname) THEN ls_pzname = '' IF IsNull(ls_oldpzname) THEN ls_oldpzname = '' IF IsNull(ll_pztype) THEN ll_pztype = 0 IF IsNull(ls_pzename) THEN ls_pzename = '' IF IsNull(ls_dscrp) THEN ls_dscrp = '' IF IsNull(ll_ifzj) THEN ll_ifzj = 0 IF ll_newpzflag = 1 THEN This.Title = '新建产品配置定义' ELSE This.Title = '修改产品配置定义' END IF dw_uc.InsertRow(0) IF ll_newpzflag = 1 THEN //新建 dw_uc.ScrollToRow(dw_uc.GetRow()) dw_uc.Object.Type[dw_uc.GetRow()] = ll_pztype ELSE dw_uc.Retrieve(ll_pzid) IF ll_ifzj = 1 THEN dw_uc.Modify('p_1.visible=0') END IF dw_uc.Modify('ifzj.protect=1') dw_uc.Modify('ifzj.color=0') END IF dw_uc.SetColumn('type') dw_uc.SetFocus() wf_face() end event event ue_before_open;call super::ue_before_open;dw_uc.settransobject(sqlca) end event type cb_func from w_publ_base`cb_func within w_mtrl_configure boolean visible = false integer x = 1993 end type type cb_exit from w_publ_base`cb_exit within w_mtrl_configure integer x = 1399 integer width = 151 integer height = 172 integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type type cb_setdefault from uo_imflatbutton within w_mtrl_configure integer x = 658 integer width = 192 integer height = 172 integer taborder = 30 boolean bringtotop = true string text = "设标准" string normalpicname = "mx1.BMP" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;parent.triggerevent( 'ue_setdefaultpz') end event type cb_savenew from uo_imflatbutton within w_mtrl_configure integer width = 329 integer height = 172 integer taborder = 10 boolean bringtotop = true string text = "保存&新建" string normalpicname = "save.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;String arg_msg IF wf_save() = 1 THEN MessageBox('系统提示','保存产品配置定义成功!'+arg_msg) ELSE RETURN END IF dw_uc.Object.Name[dw_uc.GetRow()] = '' dw_uc.Object.ename[dw_uc.GetRow()] = '' dw_uc.Object.dscrp[dw_uc.GetRow()] = '' dw_uc.SetColumn('name') dw_uc.SetFocus() end event type cb_saveexit from uo_imflatbutton within w_mtrl_configure integer x = 329 integer width = 329 integer height = 172 integer taborder = 10 boolean bringtotop = true string text = "保存&退出" string normalpicname = "save.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;String arg_msg IF wf_save() = 1 THEN MessageBox('系统提示','保存产品配置定义成功!'+arg_msg) ELSE RETURN END IF Close(PARENT) end event type cb_csetdefault from uo_imflatbutton within w_mtrl_configure integer x = 850 integer width = 274 integer height = 172 integer taborder = 40 boolean bringtotop = true string text = "取消标准" string normalpicname = "mx2.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;parent.triggerevent( 'ue_csetdefaultpz') end event type dw_uc from datawindow within w_mtrl_configure event dwnkey pbm_dwnkey integer y = 188 integer width = 2039 integer height = 744 integer taborder = 30 boolean bringtotop = true string title = "none" string dataobject = "dw_mtrl_newconfigure" boolean livescroll = true borderstyle borderstyle = stylelowered! end type event dwnkey;IF Key = keyenter! THEN keybd_event ( 9, 0, 0 , 0 ) // 按下tab keybd_event ( 9, 0, 2, 0 ) // 释放tab RETURN 1 END IF end event event clicked;IF row > 0 THEN THIS.AcceptText( ) IF dwo.Name = 'p_1' AND dw_uc.object.ifzj[row] = 0 THEN PARENT.TriggerEvent('ue_f8') END IF END IF end event event itemchanged;IF row <= 0 THEN RETURN IF dwo.Name = 'ifzj' THEN IF This.Object.ifzj[row] = 1 THEN This.Object.ifgeneral[row] = 0 END IF END IF end event type cb_2 from uo_imflatbutton within w_mtrl_configure integer x = 1125 integer width = 274 integer height = 172 integer taborder = 50 boolean bringtotop = true string text = "计算组合" string normalpicname = "other.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;//f_pb_of_globalreplace('sss','','') //arg_strall = dw_uc.Object.Name[dw_uc.GetRow()] IF dw_uc.GetRow() <= 0 THEN RETURN wf_cmp_zh(ll_mtrlid,string( dw_uc.Object.Name[dw_uc.GetRow()])) end event type ln_bar from line within w_mtrl_configure long linecolor = 268435456 integer linethickness = 4 integer beginx = -142 integer beginy = 176 integer endx = 3182 integer endy = 176 end type type ln_bar2 from line within w_mtrl_configure long linecolor = 16777215 integer linethickness = 4 integer beginy = 180 integer endx = 3323 integer endy = 180 end type type r_bar from rectangle within w_mtrl_configure long linecolor = 16777215 long fillcolor = 1073741824 integer x = 1719 integer width = 73 integer height = 172 end type event constructor;this.fillcolor = 14215660 this.linecolor = 14215660 this.x = -1 this.y = -1 this.height = ln_bar2.beginy - 5 end event