$PBExportHeader$w_configure_pzmx_ch.srw forward global type w_configure_pzmx_ch from w_publ_choice end type type cb_clean from uo_imflatbutton within w_configure_pzmx_ch end type type cb_del_all from uo_imflatbutton within w_configure_pzmx_ch end type end forward global type w_configure_pzmx_ch from w_publ_choice integer width = 1810 integer height = 1700 string title = "部件选配类型-配置选择" event ue_allowedit ( ) cb_clean cb_clean cb_del_all cb_del_all end type global w_configure_pzmx_ch w_configure_pzmx_ch type variables long cur_typeid = 0 long ins_mtrlid = 0 s_pzwin_open s_mt String rst_str boolean edit_mode = true end variables forward prototypes public subroutine wf_slpit (string arg_col_value) public subroutine wf_slpit_arr (s_mtrl_configure_array arg_configure_arr) public subroutine wf_add_mx (long arg_mtrlid) end prototypes event ue_allowedit();IF dw_ch.GetRow( ) <= 0 THEN dw_ch.Modify("namemx.dddw.allowedit = no") RETURN END IF IF dw_ch.Object.inputtype[dw_ch.GetRow()] = 0 THEN dw_ch.Modify("namemx.dddw.allowedit = no") messagebox("",2) ELSE dw_ch.Modify("namemx.dddw.allowedit = yes") messagebox("",1) END IF end event public subroutine wf_slpit (string arg_col_value);Long i,j,k,ll_i,ll_j Long ll_start String ls_namemx[], ls_pzmx String ls_name[] Long ll_pzid IF Trim(arg_col_value) = "" THEN RETURN IF dw_ch.RowCount() <= 0 THEN RETURN IF Pos(arg_col_value, "|") = 0 AND dw_ch.RowCount() > 0 THEN dw_ch.Object.namemx[1] = Mid(arg_col_value,Pos(arg_col_value,':') + 1) RETURN END IF IF Right(arg_col_value,1) <> "|" THEN arg_col_value += "|" END IF i = 0 ll_start = Pos(arg_col_value, "|") DO WHILE ll_start > 0 AND arg_col_value <> "|" i++ ls_name[i] = Left(arg_col_value, Pos(arg_col_value,":") - 1) ls_namemx[i] = Left(arg_col_value, ll_start - 1) ls_namemx[i] = Mid(ls_namemx[i],Pos(ls_namemx[i],':') + 1) arg_col_value = Mid(arg_col_value, ll_start + 1) ll_start = Pos(arg_col_value, "|") LOOP FOR ll_i = 1 TO dw_ch.RowCount() ll_pzid = dw_ch.Object.pzid[ll_i] IF UpperBound(ls_namemx) < i THEN EXIT FOR ll_j = 1 TO i IF dw_ch.Object.Name[ll_i] = ls_name[ll_j] THEN dw_ch.Object.namemx[ll_i] = ls_namemx[ll_j] goto _next END IF NEXT _next: NEXT RETURN end subroutine public subroutine wf_slpit_arr (s_mtrl_configure_array arg_configure_arr);Long i,j,k Long ll_start String ls_namemx[], ls_pzmx Long ll_pzid IF dw_ch.RowCount() <= 0 THEN RETURN IF UpperBound(arg_configure_arr.pzid) <= 0 THEN RETURN FOR i = 1 TO dw_ch.RowCount() ll_pzid = dw_ch.Object.pzid[i] FOR j = 1 TO UpperBound(arg_configure_arr.pzid) IF arg_configure_arr.pzid[j] = ll_pzid THEN dw_ch.Object.namemx[i] = mid(arg_configure_arr.pznamemx[j],pos(arg_configure_arr.pznamemx[j],':') + 1) EXIT END IF NEXT NEXT RETURN end subroutine public subroutine wf_add_mx (long arg_mtrlid);dw_ch.Reset() Long ll_pzid String ls_pzcode,ls_pzname,ls_pznamemx Long ll_row Long ll_configcodetype Int li_inputtype SELECT u_mtrldef.configcodetype INTO :ll_configcodetype FROM u_mtrldef Where u_mtrldef.mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN ll_configcodetype = -1 END IF DECLARE cur_pz CURSOR FOR SELECT u_mtrl_configure2.pzid, u_mtrl_configure2.pzcode, u_mtrl_configure2.pzname, u_mtrl_configure2.pznamemx FROM u_mtrl_configure2 WHERE u_mtrl_configure2.mtrlid = :arg_mtrlid Order By u_mtrl_configure2.pzcode; OPEN cur_pz; FETCH cur_pz INTO :ll_pzid,:ls_pzcode,:ls_pzname,:ls_pznamemx; DO WHILE sqlca.SQLCode = 0 ll_row = dw_ch.InsertRow(0) IF ll_configcodetype > 0 THEN SELECT inputtype INTO :li_inputtype FROM u_configure_code WHERE pzid = :ll_pzid AND typeid = :ll_configcodetype; IF sqlca.SQLCode <> 0 THEN li_inputtype = 0 END IF END IF dw_ch.Object.pzid[ll_row] = ll_pzid dw_ch.Object.pzcode[ll_row] = ls_pzcode dw_ch.Object.Name[ll_row] = ls_pzname dw_ch.Object.namemx[ll_row] = ls_pznamemx dw_ch.Object.inputtype[ll_row] = li_inputtype FETCH cur_pz INTO :ll_pzid,:ls_pzcode,:ls_pzname,:ls_pznamemx; LOOP CLOSE cur_pz; end subroutine on w_configure_pzmx_ch.create int iCurrent call super::create this.cb_clean=create cb_clean this.cb_del_all=create cb_del_all iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.cb_clean this.Control[iCurrent+2]=this.cb_del_all end on on w_configure_pzmx_ch.destroy call super::destroy destroy(this.cb_clean) destroy(this.cb_del_all) end on event open;if_ue_sort = TRUE wf_movetocenter() dw_CH.SetTransObject (sqlca) s_mt = Message.PowerObjectParm cur_typeid = s_mt.arg_mtrlid ins_mtrlid = s_mt.arg_id cb_retrieve.TriggerEvent(Clicked!) IF UpperBound(s_mt.arg_configure_arr.pzid) > 0 THEN wf_slpit_arr(s_mt.arg_configure_arr) ELSEIF NOT IsNull(s_mt.arg_col_value) THEN wf_slpit(s_mt.arg_col_value) END IF IF NOT IsNull(s_mt.arg_editmode) THEN edit_mode = s_mt.arg_editmode END IF IF NOT edit_mode THEN cb_choice.Enabled = FALSE END IF setnull(rst_str) end event event close;call super::close;CLOSEWITHRETURN(THIS,rst_str) end event event dw_filter;call super::dw_filter;string obj_expr='' if trim(sle_ch.text)<>'' then IF POS(trim(sle_ch.text),'%')=0 THEN obj_expr=obj_expr+'( namemx LIKE "%'+trim(sle_ch.text)+'%" )' ELSE obj_expr=obj_expr+'(namemx LIKE "'+trim(sle_ch.text)+'" )' END IF end if // //if trim(sle_name.text)<>'' then // if obj_expr<>'' then obj_expr=obj_expr+ ' and ' // IF POS(trim(sle_ch.text),'%')=0 THEN // obj_expr=obj_expr+' ( pzcodemx LIKE "%'+trim(sle_name.text)+'%" )' // ELSE // obj_expr=obj_expr+'( pzcodemx LIKE "'+trim(sle_name.text)+'" )' // END IF //end if // dw_ch.setfilter(obj_expr) dw_ch.SetRedraw(False) dw_ch.filter() if dw_ch.rowcount()>=1 then dw_ch.selectrow(0,false) dw_ch.selectrow(1,true) dw_ch.setrow( 1) end if dw_ch.SetRedraw(TRUE) end event type cb_func from w_publ_choice`cb_func within w_configure_pzmx_ch end type type cb_exit from w_publ_choice`cb_exit within w_configure_pzmx_ch integer x = 905 end type event cb_exit::clicked;SetNull(rst_str) Close(Parent) end event type sle_ch from w_publ_choice`sle_ch within w_configure_pzmx_ch boolean visible = false integer x = 325 end type type dw_ch from w_publ_choice`dw_ch within w_configure_pzmx_ch event ue_dwndropdown pbm_dwndropdown integer y = 180 integer width = 1783 integer height = 1432 string dataobject = "dw_configure_pz_ch" end type event dw_ch::ue_dwndropdown;if not edit_mode then return Long row row = THIS.GetRow() IF row <= 0 or isnull(row) THEN RETURN THIS.AcceptText( ) Long ll_pzid string rslt_pz s_pzwin_open arg_s_open arg_s_open.arg_x = THIS.X + THIS.PointerX() + PARENT.X arg_s_open.arg_y = THIS.Y + THIS.PointerY() + PARENT.Y arg_s_open.arg_dwname = "dddw_configure_pzmx" arg_s_open.arg_mtrlid = THIS.Object.pzid[row] OpenWithParm(w_pz_ch,arg_s_open) rslt_pz = Message.StringParm if rslt_pz <> '' then dw_ch.object.namemx[row] = rslt_pz end if RETURN 1 end event event dw_ch::doubleclicked;//if row<=0 then return //cb_CHOICE.PostEvent(Clicked!) end event event dw_ch::rowfocuschanged;call super::rowfocuschanged;IF NOT edit_mode THEN THIS.Modify("namemx.dddw.allowedit = no") RETURN END IF IF currentrow <= 0 OR IsNull(currentrow) THEN THIS.Modify("namemx.dddw.allowedit = no") RETURN END IF IF THIS.Object.inputtype[currentrow] = 0 THEN THIS.Modify("namemx.dddw.allowedit = NO") THIS.Modify("namemx.dddw.AutoHScroll = NO") ELSE THIS.Modify("namemx.dddw.allowedit = YES") THIS.Modify("namemx.dddw.AutoHScroll = YES") END IF end event type st_1 from w_publ_choice`st_1 within w_configure_pzmx_ch boolean visible = false integer width = 293 string text = "名称包含:" boolean righttoleft = false end type type cb_retrieve from w_publ_choice`cb_retrieve within w_configure_pzmx_ch end type event cb_retrieve::clicked; IF cur_typeid = -1 THEN wf_add_mx(ins_mtrlid) ELSE dw_ch.Retrieve(cur_typeid) END IF IF dw_ch.RowCount() > 0 THEN dw_ch.SetRow(1) dw_ch.SelectRow(0,FALSE) dw_ch.SelectRow(1,TRUE) END IF //yyx2015-10-7 修复刷新清空问题 IF UpperBound(s_mt.arg_configure_arr.pzid) > 0 THEN wf_slpit_arr(s_mt.arg_configure_arr) ELSEIF NOT IsNull(s_mt.arg_col_value) THEN wf_slpit(s_mt.arg_col_value) END IF end event type cb_choice from w_publ_choice`cb_choice within w_configure_pzmx_ch integer x = 754 end type event cb_choice::clicked;call super::clicked;Long ls_row,i String ls_name rst_str = "" dw_ch.AcceptText() FOR i = 1 TO dw_ch.RowCount( ) IF Trim(dw_ch.Object.namemx[i]) = "" THEN //rst_str += "|" ELSE rst_str += trim(dw_ch.Object.Name[i]) + ':' +trim(dw_ch.Object.namemx[i])+"|" END IF NEXT CLOSE(PARENT) end event type ln_bar from w_publ_choice`ln_bar within w_configure_pzmx_ch end type type ln_bar2 from w_publ_choice`ln_bar2 within w_configure_pzmx_ch end type type r_bar from w_publ_choice`r_bar within w_configure_pzmx_ch integer x = 1248 integer y = 4 end type type ln_1 from w_publ_choice`ln_1 within w_configure_pzmx_ch boolean visible = false end type type ln_2 from w_publ_choice`ln_2 within w_configure_pzmx_ch boolean visible = false end type type cb_clean from uo_imflatbutton within w_configure_pzmx_ch integer x = 302 integer width = 151 integer height = 164 integer taborder = 50 boolean bringtotop = true string text = "清除" string normalpicname = "DELETE.BMP" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;IF dw_ch.GetRow() > 0 THEN dw_ch.Object.namemx[dw_ch.GetRow()] = '' dw_ch.AcceptText() END IF end event type cb_del_all from uo_imflatbutton within w_configure_pzmx_ch integer x = 453 integer height = 164 integer taborder = 30 boolean bringtotop = true string text = "清除全部" string normalpicname = "DELETE.BMP" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;IF MessageBox('询问','是否确认清空全部配置项明细内容?',question!,yesno!) = 2 THEN RETURN Long ll_i dw_ch.SetRedraw(False) FOR ll_i = 1 To dw_ch.RowCount() dw_ch.Object.namemx[ll_i] = '' NEXT dw_ch.SetRedraw(True) dw_ch.AcceptText() end event