$PBExportHeader$w_sptware_sptid_ch.srw forward global type w_sptware_sptid_ch from w_pageretr_ch end type type cbx_ml from checkbox within w_sptware_sptid_ch end type type cbx_showall from checkbox within w_sptware_sptid_ch end type type cb_ok from uo_imflatbutton within w_sptware_sptid_ch end type type cb_del from uo_imflatbutton within w_sptware_sptid_ch end type type cbx_mlselect from checkbox within w_sptware_sptid_ch end type type dw_choice from datawindow within w_sptware_sptid_ch end type type cbx_allselect from checkbox within w_sptware_sptid_ch end type end forward global type w_sptware_sptid_ch from w_pageretr_ch integer width = 3191 integer height = 2168 string title = "外协商库存选择 [按Ctrl键反选]" cbx_ml cbx_ml cbx_showall cbx_showall cb_ok cb_ok cb_del cb_del cbx_mlselect cbx_mlselect dw_choice dw_choice cbx_allselect cbx_allselect end type global w_sptware_sptid_ch w_sptware_sptid_ch type variables s_sptware_array INS_RT_STRU boolean if_changeselect=true int if_mlselect=0,cur_mtrlprp=0 long arg_sptid long arg_scid end variables forward prototypes public function integer wf_face_change () end prototypes public function integer wf_face_change ();//wf_face_change() if cbx_ml.checked then dw_pageretr.height=1744 dw_choice.visible=false cb_ok.visible=false cb_del.visible=false else dw_pageretr.height=1020 dw_choice.visible=true cb_ok.visible=true cb_del.visible=true end if return 1 end function on w_sptware_sptid_ch.create int iCurrent call super::create this.cbx_ml=create cbx_ml this.cbx_showall=create cbx_showall this.cb_ok=create cb_ok this.cb_del=create cb_del this.cbx_mlselect=create cbx_mlselect this.dw_choice=create dw_choice this.cbx_allselect=create cbx_allselect iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.cbx_ml this.Control[iCurrent+2]=this.cbx_showall this.Control[iCurrent+3]=this.cb_ok this.Control[iCurrent+4]=this.cb_del this.Control[iCurrent+5]=this.cbx_mlselect this.Control[iCurrent+6]=this.dw_choice this.Control[iCurrent+7]=this.cbx_allselect end on on w_sptware_sptid_ch.destroy call super::destroy destroy(this.cbx_ml) destroy(this.cbx_showall) destroy(this.cb_ok) destroy(this.cb_del) destroy(this.cbx_mlselect) destroy(this.dw_choice) destroy(this.cbx_allselect) end on event ue_before_open;call super::ue_before_open;if_ue_retr=true if_ue_sort=true end event event close;call super::close;cLOSEWITHRETURN(THIS,INS_RT_STRU) // 窗体级子定义结构变量,用于返回 end event event open;this.triggerevent('ue_before_open') wf_movetocenter() OLD_TITLE=THIS.TITLE s_tran=Message.PowerObjectParm IF not ISNULL(s_tran) then retrieve_all=s_tran.if_retrieve_all mode=s_tran.work_mode arg_pkid=s_tran.arg_pkid arg_string_code=s_tran.arg_string_code arg_sptid=s_tran.d_long arg_scid=s_tran.f_long end if dw_pageretr.RBUTTON_FILTER_USE=true //右键查询功能开关 dw_pageretr.titleclick_sort_use=true //单击标题排序功能开关 dw_pageretr.SetTransObject (sqlca) pkcolumndbtname=wf_get_pkcolumndbtname(dw_pageretr) //取第一列为关键字 ori_oldselect=dw_pageretr.Describe("DataWindow.Table.Select") ls_newselect=ori_oldselect ds_curquery=CREATE DATASTORE ds_curquery.DATAOBJECT='d_extr_find' ds_curquery.SetTransObject (sqlca) wf_editindex_lockf() if NOT retrieve_all AND trim(arg_string_code)<>'' then sle_usual_query.text=trim(arg_string_code) THIS.TRIGGEREVENT("ue_usual_query_RETR") //修改ls_newselect,retrieve else wf_retrieveuc(dw_pageretr,ls_newselect,1) this.TRIGGEREVENT('RETRIEVE_pageretr') end if IF retrieve_all AND trim(arg_string_code)<>'' THEN THIS.TRIGGEREVENT("ue_usual_query_filt") END IF INS_RT_STRU.mtrlwareid[1]=0 dw_choice.settransobject(sqlca) wf_face_change() s_hide_col s_col s_col.col_1 = 'cost' f_hide_col(490,dw_pageretr,s_col) f_hide_col(490,dw_choice,s_col) s_hide_col s_col_mtrlsectype s_col_mtrlsectype.col_1 = 'u_mtrldef_mtrlsectype' f_hide_col(1308,dw_pageretr,s_col_mtrlsectype) f_hide_col(1308,dw_choice,s_col_mtrlsectype) s_hide_col s_col_zxmtrlmode s_col_zxmtrlmode.col_1 = 'u_mtrldef_zxmtrlmode' f_hide_col(1309,dw_pageretr,s_col_zxmtrlmode) f_hide_col(1309,dw_choice,s_col_zxmtrlmode) end event event retrieve_pageretr;boolean cb_firstpage_enabled,cb_nextpage_enabled,cb_retrieveall_enabled boolean cb_priorpage_enabled,cb_func_enabled,cb_retrieve_enabled cb_nextpage_enabled=cb_nextpage.enabled cb_retrieveall_enabled=cb_retrieveall.enabled cb_func_enabled=cb_func.enabled cb_nextpage.enabled=false cb_retrieveall.enabled=false cb_func.enabled=false SetPointer(HourGlass!) if cbx_showall.checked then dw_pageretr.retrieve(arg_sptid,1,arg_scid) else dw_pageretr.retrieve(arg_sptid,0,arg_scid) end if if dw_pageretr.rowcount()>0 and dw_pageretr.getrow()=0 then dw_pageretr.setrow(1) SetPointer(Arrow!) cb_nextpage.enabled=cb_nextpage_enabled cb_retrieveall.enabled=cb_retrieveall_enabled cb_func.enabled=cb_func_enabled IF cbx_mlselect.Checked AND dw_pageretr.RowCount() > 1 THEN dw_pageretr.SelectRow(1,FALSE) END IF end event event ue_usual_query_filt;call super::ue_usual_query_filt;string obj_expr='' if trim(sle_usual_query.text)<>'' then IF POS(trim(sle_usual_query.text),'%')=0 THEN obj_expr=obj_expr+'( u_mtrldef_mtrlcode LIKE "%'+trim(sle_usual_query.text)+'%") ' obj_expr=obj_expr+' or ( u_mtrldef_mtrlname LIKE "%'+trim(sle_usual_query.text)+'%" )' ELSE obj_expr=obj_expr+'( u_mtrldef_mtrlcode LIKE "'+trim(sle_usual_query.text)+'" )' obj_expr=obj_expr+' or ( u_mtrldef_mtrlname LIKE "'+trim(sle_usual_query.text)+'" )' END IF end if dw_pageretr.setfilter(obj_expr) dw_pageretr.SetRedraw(False) dw_pageretr.filter() if dw_pageretr.rowcount()>=1 then dw_pageretr.selectrow(0,false) dw_pageretr.selectrow(1,true ) end if dw_pageretr.SetRedraw(TRUE ) end event event ue_usual_query_retr;call super::ue_usual_query_retr;String ls_querystrpart = '' ls_newselect = Lower(ori_oldselect) IF Trim(sle_usual_query.Text) <> '' THEN IF Pos(Trim(sle_usual_query.Text),'%') = 0 THEN ls_querystrpart = ls_querystrpart + "(u_mtrldef.mtrlcode like '%"+Trim(sle_usual_query.Text)+"%'" ls_querystrpart = ls_querystrpart + " or u_mtrldef.mtrlname like '%"+Trim(sle_usual_query.Text)+"%')" ELSE ls_querystrpart = ls_querystrpart + "( u_mtrldef.mtrlcode like '"+Trim(sle_usual_query.Text)+"'" ls_querystrpart = ls_querystrpart + " or u_mtrldef.mtrlname like '"+Trim(sle_usual_query.Text)+"')" END IF IF Pos(ls_newselect," where ") <> 0 THEN ls_newselect = ls_newselect+" AND ("+ls_querystrpart+')' ELSE ls_newselect = ls_newselect+" where ("+ls_querystrpart+')' END IF END IF wf_retrieveuc(dw_pageretr,ls_newselect,1) THIS.TriggerEvent('retrieve_pageretr') end event type cb_func from w_pageretr_ch`cb_func within w_sptware_sptid_ch end type type cb_exit from w_pageretr_ch`cb_exit within w_sptware_sptid_ch end type type sle_usual_query from w_pageretr_ch`sle_usual_query within w_sptware_sptid_ch integer x = 347 end type type cb_retrieveall from w_pageretr_ch`cb_retrieveall within w_sptware_sptid_ch integer x = 1102 end type type em_pagerowno from w_pageretr_ch`em_pagerowno within w_sptware_sptid_ch integer x = 773 end type type dw_pageretr from w_pageretr_ch`dw_pageretr within w_sptware_sptid_ch integer width = 3154 integer height = 1020 string dataobject = "dw_sptware_sptid_ch" end type event dw_pageretr::clicked;if row>0 then this.setrow(row) if if_mlselect=1 then if if_changeselect then this.selectrow(row,not this.IsSelected(row)) else if_changeselect=true end if else this.selectrow(0,false) this.selectrow(row,true) end if end if end event event dw_pageretr::doubleclicked;if cbx_ml.checked then cb_choice.TRIGGEREVENT(CLICKED!) else cb_ok.TRIGGEREVENT(CLICKED!) end if end event event dw_pageretr::rowfocuschanged;if if_mlselect=1 then if currentrow <=0 then return if keydown(keycontrol!) then if this.isselected(currentrow) then this.selectrow(currentrow,false) if_changeselect=false else if_changeselect=true end if else if not this.isselected(currentrow) then this.selectrow(currentrow,true) if_changeselect=false else if_changeselect=true end if end if else if dw_edit_mode then return if currentrow <=0 then return this.selectrow(0,false) this.selectrow(currentrow,true) end if end event event dw_pageretr::dwnkey;call super::dwnkey;if keydown(keyenter!) then return 1 end event type st_1 from w_pageretr_ch`st_1 within w_sptware_sptid_ch integer x = 14 integer width = 343 string text = "编码/名称含:" end type type cb_nextpage from w_pageretr_ch`cb_nextpage within w_sptware_sptid_ch integer x = 1253 end type type cb_choice from w_pageretr_ch`cb_choice within w_sptware_sptid_ch integer taborder = 120 end type event cb_choice::clicked;call super::clicked;LONG ROW,ls_i=0,chC=0 if cbx_ml.checked then ROW=dw_pageretr.GETROW() if ROW<=0 then messagebox('提示','请先选择目标行!',information!,OK!) return end if for ls_i=1 to dw_pageretr.rowcount() if dw_pageretr.isselected(ls_i) then chC++ INS_RT_STRU.mtrlwareid[chC]=dw_pageretr.OBJECT.mtrlwareid[ls_i] INS_RT_STRU.mtrlid[chC]=dw_pageretr.OBJECT.mtrlid[ls_i] INS_RT_STRU.u_mtrldef_mtrlcode[chC]=dw_pageretr.OBJECT.u_mtrldef_mtrlcode[ls_i] INS_RT_STRU.u_mtrldef_mtrlname[chC]=dw_pageretr.OBJECT.u_mtrldef_mtrlname[ls_i] INS_RT_STRU.u_mtrldef_mtrlmode[chC]=dw_pageretr.OBJECT.mtrlmode[ls_i] INS_RT_STRU.u_mtrldef_unit[chC]=dw_pageretr.OBJECT.u_mtrldef_unit[ls_i] INS_RT_STRU.u_mtrldef_prdpackcode[chC]=dw_pageretr.OBJECT.u_mtrldef_prdpackcode[ls_i] INS_RT_STRU.u_mtrldef_packqty[chC]=dw_pageretr.OBJECT.u_mtrldef_packqty[ls_i] INS_RT_STRU.noallocqty[chC]=dw_pageretr.OBJECT.noallocqty[ls_i] INS_RT_STRU.cost[chC]=dw_pageretr.OBJECT.ow_wfjgware_cost[ls_i] INS_RT_STRU.planprice[chC]=dw_pageretr.OBJECT.planprice[ls_i] INS_RT_STRU.sptid[chC]=dw_pageretr.OBJECT.ow_wfjgware_sptid[ls_i] INS_RT_STRU.plancode[chC]=dw_pageretr.OBJECT.plancode[ls_i] INS_RT_STRU.status[chC]=dw_pageretr.OBJECT.ow_wfjgware_status[ls_i] INS_RT_STRU.woodcode[chC]=dw_pageretr.OBJECT.ow_wfjgware_woodcode[ls_i] INS_RT_STRU.pcode[chC]=dw_pageretr.OBJECT.ow_wfjgware_pcode[ls_i] INS_RT_STRU.mtrlsectype[chC]=dw_pageretr.OBJECT.u_mtrldef_mtrlsectype[ls_i] INS_RT_STRU.zxmtrlmode[chC]=dw_pageretr.OBJECT.u_mtrldef_zxmtrlmode[ls_i] INS_RT_STRU.barcode[chC]=dw_pageretr.OBJECT.u_mtrldef_barcode[ls_i] INS_RT_STRU.mtrlengname[chC]=dw_pageretr.OBJECT.u_mtrldef_mtrlengname[ls_i] end if next if chC=0 then messagebox('提示','请至少选择一个目标行!',information!,OK!) return end if else dw_choice.accepttext() ROW=dw_choice.rowcount() if ROW<=0 then messagebox('提示','请先选择目标行!',information!,OK!) return end if for ls_i=1 to dw_choice.rowcount() INS_RT_STRU.mtrlwareid[ls_i]=dw_choice.OBJECT.mtrlwareid[ls_i] INS_RT_STRU.mtrlid[ls_i]=dw_choice.OBJECT.mtrlid[ls_i] INS_RT_STRU.u_mtrldef_mtrlcode[ls_i]=dw_choice.OBJECT.u_mtrldef_mtrlcode[ls_i] INS_RT_STRU.u_mtrldef_mtrlname[ls_i]=dw_choice.OBJECT.u_mtrldef_mtrlname[ls_i] INS_RT_STRU.u_mtrldef_mtrlmode[ls_i]=dw_choice.OBJECT.mtrlmode[ls_i] INS_RT_STRU.u_mtrldef_unit[ls_i]=dw_choice.OBJECT.u_mtrldef_unit[ls_i] INS_RT_STRU.u_mtrldef_prdpackcode[ls_i]=dw_choice.OBJECT.u_mtrldef_prdpackcode[ls_i] INS_RT_STRU.u_mtrldef_packqty[ls_i]=dw_choice.OBJECT.u_mtrldef_packqty[ls_i] INS_RT_STRU.noallocqty[ls_i]=dw_choice.OBJECT.noallocqty[ls_i] INS_RT_STRU.cost[ls_i]=dw_choice.OBJECT.ow_wfjgware_cost[ls_i] INS_RT_STRU.planprice[ls_i]=dw_choice.OBJECT.planprice[ls_i] INS_RT_STRU.plancode[ls_i]=dw_choice.OBJECT.plancode[ls_i] INS_RT_STRU.status[ls_i]=dw_choice.OBJECT.ow_wfjgware_status[ls_i] INS_RT_STRU.sptid[ls_i]=dw_choice.OBJECT.ow_wfjgware_sptid[ls_i] INS_RT_STRU.woodcode[ls_i]=dw_choice.OBJECT.ow_wfjgware_woodcode[ls_i] INS_RT_STRU.pcode[ls_i]=dw_choice.OBJECT.ow_wfjgware_pcode[ls_i] INS_RT_STRU.mtrlsectype[ls_i]=dw_choice.OBJECT.u_mtrldef_mtrlsectype[ls_i] INS_RT_STRU.zxmtrlmode[ls_i]=dw_choice.OBJECT.u_mtrldef_zxmtrlmode[ls_i] INS_RT_STRU.barcode[ls_i]=dw_choice.OBJECT.u_mtrldef_barcode[ls_i] INS_RT_STRU.mtrlengname[ls_i]=dw_choice.OBJECT.u_mtrldef_mtrlengname[ls_i] next end if CLOSE(PARENT) end event type cb_refresh from w_pageretr_ch`cb_refresh within w_sptware_sptid_ch end type type cb_help from w_pageretr_ch`cb_help within w_sptware_sptid_ch end type type ln_bar from w_pageretr_ch`ln_bar within w_sptware_sptid_ch end type type ln_bar2 from w_pageretr_ch`ln_bar2 within w_sptware_sptid_ch end type type r_bar from w_pageretr_ch`r_bar within w_sptware_sptid_ch end type type ln_1 from w_pageretr_ch`ln_1 within w_sptware_sptid_ch end type type ln_2 from w_pageretr_ch`ln_2 within w_sptware_sptid_ch end type type cbx_ml from checkbox within w_sptware_sptid_ch integer x = 878 integer y = 208 integer width = 357 integer height = 60 boolean bringtotop = true integer textsize = -9 integer weight = 700 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 16711680 long backcolor = 134217739 string text = "直接多选" end type event clicked;wf_face_change() int use_ml if this.checked then use_ml=1 else use_ml=0 end if f_SetProfileString (sys_empid,dw_pageretr.DATAOBJECT, "use_ml", string(use_ml)) end event event constructor;int use_ml use_ml=integer(f_ProfileString (sys_empid,dw_pageretr.DATAOBJECT, "use_ml", '0')) if use_ml=0 then this.checked=false else this.checked=true end if end event type cbx_showall from checkbox within w_sptware_sptid_ch integer x = 1253 integer y = 208 integer width = 613 integer height = 60 boolean bringtotop = true integer textsize = -9 integer weight = 700 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 255 long backcolor = 134217739 string text = "显示 0 库存物料批" end type event clicked;int if_zeromtrlware if this.checked then if_zeromtrlware=1 else if_zeromtrlware=0 end if f_SetProfileString (sys_empid,dw_pageretr.DATAOBJECT, "if_zeromtrlware", string(if_zeromtrlware)) parent.triggerevent("retrieve_pageretr") end event event constructor;int if_zeromtrlware if_zeromtrlware=integer(f_ProfileString (sys_empid,dw_pageretr.DATAOBJECT, "if_zeromtrlware", '0')) if if_zeromtrlware =0 then this.checked=false else this.checked=true end if end event type cb_ok from uo_imflatbutton within w_sptware_sptid_ch integer x = 2469 integer y = 1340 integer width = 379 integer taborder = 60 boolean bringtotop = true string text = "选定[Enter]" end type event clicked;call super::clicked;LONG ROW,ls_i,chC=0 ROW=dw_pageretr.GETROW() if ROW<=0 then messagebox('提示','请先选择目标行!',information!,OK!) return end if for ls_i=1 to dw_pageretr.rowcount() if dw_pageretr.isselected(ls_i) then if dw_choice.find('mtrlwareid ='+string(dw_pageretr.object.mtrlwareid[ls_i]),1,dw_choice.rowcount())=0 then chC++ dw_pageretr.RowsCopy(ls_i, ls_i, Primary!, dw_choice, dw_choice.rowcount() + 1, Primary!) end if end if next end event type cb_del from uo_imflatbutton within w_sptware_sptid_ch integer x = 2843 integer y = 1340 integer width = 311 integer taborder = 140 boolean bringtotop = true string text = "删除" string normalpicname = "delete.bmp" end type event clicked;call super::clicked;IF dw_choice.GETROW()=0 THEN MESSAGEBOX('提示','请选择删除的行对象!',information!,OK!) RETURN END IF dw_choice.DeleteRow (0) dw_choice.TriggerEvent (rowfocuschanged!) end event type cbx_mlselect from checkbox within w_sptware_sptid_ch integer x = 1947 integer y = 208 integer width = 256 integer height = 60 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long backcolor = 134217739 string text = "多选" end type event clicked;if this.checked then if_mlselect=1 cbx_allselect.enabled = true else if_mlselect=0 cbx_allselect.enabled = false end if f_SetProfileString (sys_empid,dw_pageretr.DATAOBJECT, "if_mlselect", string(if_mlselect)) end event event constructor;if_mlselect=integer(f_ProfileString (sys_empid,dw_pageretr.DATAOBJECT, "if_mlselect", '0')) if if_mlselect =0 then this.checked=false else this.checked=true end if end event type dw_choice from datawindow within w_sptware_sptid_ch integer y = 1452 integer width = 3154 integer height = 600 integer taborder = 130 string title = "none" string dataobject = "dw_sptware_sptid_ch" boolean minbox = true boolean hscrollbar = true boolean vscrollbar = true boolean hsplitscroll = true boolean livescroll = true borderstyle borderstyle = stylelowered! end type event rowfocuschanged;IF currentrow <=0 THEN RETURN this.selectrow(0,false) this.selectrow(currentrow,true) end event type cbx_allselect from checkbox within w_sptware_sptid_ch integer x = 2254 integer y = 208 integer width = 224 integer height = 60 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long backcolor = 134217739 string text = "全选" end type event clicked;Int li IF THIS.Checked AND cbx_mlselect.Checked THEN FOR li = 1 TO dw_pageretr.RowCount() dw_pageretr.SelectRow(li,TRUE) NEXT ELSE FOR li = 1 TO dw_pageretr.RowCount() dw_pageretr.SelectRow(li,FALSE) NEXT END IF end event