$PBExportHeader$w_workprice_pro_ch.srw forward global type w_workprice_pro_ch from w_pageretr_ch end type type cbx_mlselect from checkbox within w_workprice_pro_ch end type type cbx_all from checkbox within w_workprice_pro_ch end type end forward global type w_workprice_pro_ch from w_pageretr_ch integer width = 3250 integer height = 2236 string title = "物料工价表工序选择 [按Ctrl键反选]" cbx_mlselect cbx_mlselect cbx_all cbx_all end type global w_workprice_pro_ch w_workprice_pro_ch type variables s_workpricetable_array INS_RT_STRU Boolean if_changeselect = TRUE Int if_mlselect = 0 string ins_procode end variables forward prototypes public function integer wf_retrieveuc (datawindow arg_dw, string arg_newselect, integer arg_retrmode) end prototypes public function integer wf_retrieveuc (datawindow arg_dw, string arg_newselect, integer arg_retrmode);//==================================================================== // Function: wf_retrieveuc() //-------------------------------------------------------------------- // Description: 分页拼retr语句 //-------------------------------------------------------------------- // Arguments: // integer arg_retrmode: 0 retrieve all;1 first page ;2 prior page;3 next page;4 last page //-------------------------------------------------------------------- // Returns: integer //-------------------------------------------------------------------- // Author: yyx Date: 2003.10.17 //-------------------------------------------------------------------- // Modify History: // //==================================================================== //取得当前的最大\最小ID //按上下翻页命令,拼接最新SELECT语句 retrmode=arg_retrmode IF arg_retrmode=0 or retrieve_all THEN arg_dw.Modify("datawindow.table.select = ~"" + arg_newselect+ "~"") GOTO EXT END IF string cur_page_newselect,ls_pkcolname,LS_PAGE_ter='' cur_page_newselect=lower(trim(arg_newselect)) LONG MAX_ID=0,MIN_ID=0,LS_I,ls_id ls_pkcolname=arg_dw.Describe("#1.name") //取得ID列名称 if arg_retrmode<>1 then MAX_ID=0 Min_ID=0 FOR LS_I=1 TO arg_dw.ROWCOUNT() ls_id=arg_dw.GetItemNumber(ls_i, ls_pkcolname) if LS_I=1 then MAX_ID=ls_id Min_ID=ls_id end if if not isnull(ls_id) then if MAX_IDls_id then Min_ID=ls_id end if NEXT FOR LS_I=1 TO arg_dw.FilteredCount() ls_id=arg_dw.GetItemNumber(ls_i, ls_pkcolname,filter!,true) if LS_I=1 and MAX_ID=0 and Min_ID=0 then MAX_ID=ls_id Min_ID=ls_id end if if not isnull(ls_id) then if MAX_IDls_id then Min_ID=ls_id end if NEXT end if cur_page_newselect=trim(cur_page_newselect) IF not (retrieve_all or retrmode=0) then cur_page_newselect='select top '+string(onepage_rowlmno)+' '+mid( cur_page_newselect , 16) end if CHOOSE CASE arg_retrmode CASE 1 //第一页 LS_PAGE_ter='' CASE 2 //上一页 LS_PAGE_ter=pkcolumndbtname+'>'+STRING(MAX_ID) CASE 3 //下一页 LS_PAGE_ter=pkcolumndbtname+'<'+STRING(Min_ID) CASE 4 //末页 LS_PAGE_ter='' END CHOOSE IF TRIM(LS_PAGE_ter)<>'' THEN if Pos(cur_page_newselect," where ") <> 0 then cur_page_newselect=cur_page_newselect+" AND ("+LS_PAGE_ter+')' else cur_page_newselect=cur_page_newselect+" WHERE ("+LS_PAGE_ter+')' end if END IF IF arg_retrmode=2 or arg_retrmode=4 THEN cur_page_newselect=cur_page_newselect+' ORDER BY '+pkcolumndbtname ELSE cur_page_newselect=cur_page_newselect+' ORDER BY '+pkcolumndbtname+' DESC' END IF arg_dw.Modify("datawindow.table.select = ~"" + cur_page_newselect+ "~"") EXT: RETURN 1 end function on w_workprice_pro_ch.create int iCurrent call super::create this.cbx_mlselect=create cbx_mlselect this.cbx_all=create cbx_all iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.cbx_mlselect this.Control[iCurrent+2]=this.cbx_all end on on w_workprice_pro_ch.destroy call super::destroy destroy(this.cbx_mlselect) destroy(this.cbx_all) 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 ins_procode = s_tran.c_string 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 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!) dw_pageretr.Retrieve(ins_procode) 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 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_sc_workprice.proname like '%"+Trim(sle_usual_query.Text)+"%'" ELSE ls_querystrpart = ls_querystrpart + " or u_sc_workprice.proname 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_workprice_pro_ch end type type cb_exit from w_pageretr_ch`cb_exit within w_workprice_pro_ch end type type sle_usual_query from w_pageretr_ch`sle_usual_query within w_workprice_pro_ch boolean visible = false integer x = 357 end type type cb_retrieveall from w_pageretr_ch`cb_retrieveall within w_workprice_pro_ch boolean visible = false end type type em_pagerowno from w_pageretr_ch`em_pagerowno within w_workprice_pro_ch boolean visible = false end type type dw_pageretr from w_pageretr_ch`dw_pageretr within w_workprice_pro_ch integer width = 3223 integer height = 1848 string dataobject = "dw_workprice_pro_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; cb_choice.TriggerEvent(Clicked!) 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_workprice_pro_ch boolean visible = false integer x = 23 integer width = 343 string text = "工序名称含:" end type type cb_nextpage from w_pageretr_ch`cb_nextpage within w_workprice_pro_ch boolean visible = false string normalpicname = "" end type type cb_choice from w_pageretr_ch`cb_choice within w_workprice_pro_ch integer taborder = 120 end type event cb_choice::clicked;call super::clicked;Long ROW,ls_i = 0,chC = 0 dw_pageretr.AcceptText() ROW = dw_pageretr.RowCount() IF ROW <= 0 THEN MessageBox('系统提示','请先选择目标行!',StopSign!) RETURN END IF FOR ls_i = 1 TO dw_pageretr.RowCount() IF dw_pageretr.IsSelected(ls_i) THEN chC++ ins_rt_stru.mtrlid[chC] = dw_pageretr.Object.mtrlid[ls_i] ins_rt_stru.mtrlname[chC] = dw_pageretr.Object.u_mtrldef_mtrlname[ls_i] ins_rt_stru.mtrlcode[chC] = dw_pageretr.Object.u_mtrldef_mtrlcode[ls_i] ins_rt_stru.mtrlsectype[chC] = dw_pageretr.Object.u_mtrldef_mtrlsectype[ls_i] ins_rt_stru.mtrlmode[chC] = dw_pageretr.Object.u_mtrldef_mtrlmode[ls_i] ins_rt_stru.dscrp[chC] = dw_pageretr.Object.dscrp[ls_i] ins_rt_stru.procode[chC] = dw_pageretr.Object.procode[ls_i] ins_rt_stru.proname[chC] = dw_pageretr.Object.u_sc_workprice_proname[ls_i] ins_rt_stru.worklevel[chC] = dw_pageretr.Object.worklevel[ls_i] ins_rt_stru.techlevel[chC] = dw_pageretr.Object.techlevel[ls_i] ins_rt_stru.workhour[chC] = dw_pageretr.Object.workhour[ls_i] ins_rt_stru.workprice[chC] = dw_pageretr.Object.workprice[ls_i] ins_rt_stru.workqty[chC] = dw_pageretr.Object.workqty[ls_i] ins_rt_stru.lastflag[chC] = dw_pageretr.Object.lastflag[ls_i] ins_rt_stru.wrkgrpid[chC] = dw_pageretr.Object.wrkgrpid[ls_i] ins_rt_stru.lsxtype[chC] = dw_pageretr.Object.lsxtype[ls_i] ins_rt_stru.ifstandard[chC] = dw_pageretr.Object.u_sc_workprice_ifstandard[ls_i] ins_rt_stru.zxmtrlmode[chC] = dw_pageretr.Object.u_mtrldef_zxmtrlmode[ls_i] ins_rt_stru.status[chC] = dw_pageretr.Object.u_sc_workprice_status[ls_i] END IF NEXT Close(PARENT) end event type cb_refresh from w_pageretr_ch`cb_refresh within w_workprice_pro_ch end type type ln_bar from w_pageretr_ch`ln_bar within w_workprice_pro_ch end type type ln_bar2 from w_pageretr_ch`ln_bar2 within w_workprice_pro_ch end type type r_bar from w_pageretr_ch`r_bar within w_workprice_pro_ch integer x = 2272 end type type ln_1 from w_pageretr_ch`ln_1 within w_workprice_pro_ch end type type ln_2 from w_pageretr_ch`ln_2 within w_workprice_pro_ch end type type cbx_mlselect from checkbox within w_workprice_pro_ch integer x = 32 integer y = 200 integer width = 256 integer height = 60 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_all.Enabled = TRUE ELSE if_mlselect = 0 cbx_all.Enabled = FALSE cbx_all.Checked = FALSE Long li FOR li = 1 TO dw_pageretr.RowCount() dw_pageretr.SelectRow(li,FALSE) NEXT END IF SetProfileString (sys_inifilename,dw_pageretr.DataObject, "if_mlselect", String(if_mlselect)) end event event constructor;if_mlselect = Integer(ProfileString (sys_inifilename,dw_pageretr.DataObject, "if_mlselect", '0')) IF if_mlselect = 0 THEN THIS.Checked = FALSE cbx_all.enabled = false ELSE THIS.Checked = TRUE cbx_all.enabled = true END IF end event type cbx_all from checkbox within w_workprice_pro_ch integer x = 261 integer y = 200 integer width = 256 integer height = 60 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 boolean enabled = false string text = "全选" end type event clicked;IF dw_pageretr.RowCount() <= 0 THEN RETURN Long li IF THIS.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