$PBExportHeader$w_cus_price_ch.srw forward global type w_cus_price_ch from w_pageretr_ch end type type cbx_ml from checkbox within w_cus_price_ch end type type dw_choice from datawindow within w_cus_price_ch end type type cb_ok from uo_imflatbutton within w_cus_price_ch end type type cb_del from uo_imflatbutton within w_cus_price_ch end type type cbx_mlselect from checkbox within w_cus_price_ch end type type cbx_all from checkbox within w_cus_price_ch end type end forward global type w_cus_price_ch from w_pageretr_ch integer width = 3186 integer height = 2156 string title = "客户价格选择 [按Ctrl键反选]" event ue_cmp_qty ( ) event ue_cmp_qty_all ( ) event ue_retrieve_info ( ) cbx_ml cbx_ml dw_choice dw_choice cb_ok cb_ok cb_del cb_del cbx_mlselect cbx_mlselect cbx_all cbx_all end type global w_cus_price_ch w_cus_price_ch type variables s_cus_price_ch INS_RT_STRU Boolean if_changeselect = TRUE Int if_mlselect = 0 int select_mode = 0 //0-多选 2-单选 long ins_cusid = 0 long ins_moneyid = 0 end variables forward prototypes public function integer wf_face_change () end prototypes public function integer wf_face_change ();//wf_face_change() IF NOT cbx_ml.Checked THEN dw_pageretr.Height = dw_choice.Y + dw_choice.Height - dw_pageretr.Y dw_choice.Visible = FALSE cb_ok.Visible = FALSE cb_del.Visible = FALSE ELSE dw_pageretr.Height = 1032 dw_choice.Visible = TRUE cb_ok.Visible = TRUE cb_del.Visible = TRUE END IF RETURN 1 end function on w_cus_price_ch.create int iCurrent call super::create this.cbx_ml=create cbx_ml this.dw_choice=create dw_choice this.cb_ok=create cb_ok this.cb_del=create cb_del this.cbx_mlselect=create cbx_mlselect this.cbx_all=create cbx_all iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.cbx_ml this.Control[iCurrent+2]=this.dw_choice 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.cbx_all end on on w_cus_price_ch.destroy call super::destroy destroy(this.cbx_ml) destroy(this.dw_choice) destroy(this.cb_ok) destroy(this.cb_del) 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_cusid = s_tran.c_long select_mode = s_tran.e_long ins_moneyid = s_tran.f_long END IF //////////////// // String ls_cusname SELECT name INTO :ls_cusname FROM u_cust Where cusid = :ins_cusid; IF sqlca.SQLCode <> 0 THEN ls_cusname = '' END IF THIS.Title = '['+ls_cusname+']' + THIS.Title //////////////// // 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.mtrlid[1] = 0 dw_choice.SetTransObject(sqlca) //select_mode = 1 ,只允许单选 IF select_mode = 1 THEN cbx_mlselect.Visible = FALSE cbx_all.Visible = FALSE cbx_ml.Visible = FALSE if_mlselect = 0 cbx_ml.Checked = FALSE END IF wf_face_change() end event event retrieve_pageretr;Boolean cb_nextpage_enabled,cb_retrieveall_enabled Boolean 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_cusid,ins_moneyid) 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_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_cus_price_ch integer taborder = 100 end type type cb_exit from w_pageretr_ch`cb_exit within w_cus_price_ch integer x = 466 integer taborder = 40 end type type sle_usual_query from w_pageretr_ch`sle_usual_query within w_cus_price_ch integer x = 357 integer taborder = 20 end type type cb_retrieveall from w_pageretr_ch`cb_retrieveall within w_cus_price_ch integer x = 919 integer taborder = 80 end type type em_pagerowno from w_pageretr_ch`em_pagerowno within w_cus_price_ch integer x = 617 integer y = 32 end type type dw_pageretr from w_pageretr_ch`dw_pageretr within w_cus_price_ch integer width = 3154 integer height = 1032 integer taborder = 10 string dataobject = "dw_cus_mtrlnewprice_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 NOT 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 PARENT.TriggerEvent('ue_retrieve_info') end event event dw_pageretr::dwnkey;call super::dwnkey;IF KeyDown(keyenter!) and not KeyDown(KeyControl!) AND cbx_ml.Checked THEN cb_ok.TriggerEvent(Clicked!) END IF end event type st_1 from w_pageretr_ch`st_1 within w_cus_price_ch integer x = 23 integer width = 343 string text = "编码/名称含:" end type type cb_nextpage from w_pageretr_ch`cb_nextpage within w_cus_price_ch integer x = 1070 integer taborder = 90 string normalpicname = "" end type type cb_choice from w_pageretr_ch`cb_choice within w_cus_price_ch string tag = "Ctrl+Enter选定" integer x = 302 integer width = 165 integer taborder = 120 end type event cb_choice::clicked;call super::clicked;Long ROW,ls_i = 0,chC = 0 IF NOT cbx_ml.Checked THEN ROW = dw_pageretr.GetRow() 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.u_cus_price_mtrlid[ls_i] INS_RT_STRU.cusid[chC] = dw_pageretr.Object.u_cus_price_cusid[ls_i] INS_RT_STRU.status[chC] = dw_pageretr.Object.u_cus_price_status[ls_i] INS_RT_STRU.woodcode[chC] = dw_pageretr.Object.u_cus_price_woodcode[ls_i] INS_RT_STRU.pcode[chC] = dw_pageretr.Object.u_cus_price_pcode[ls_i] INS_RT_STRU.mtrlcode[chC] = dw_pageretr.Object.u_mtrldef_mtrlcode[ls_i] INS_RT_STRU.mtrlname[chC] = dw_pageretr.Object.u_mtrldef_mtrlname[ls_i] INS_RT_STRU.mtrlmode[chC] = dw_pageretr.Object.u_mtrldef_mtrlmode[ls_i] INS_RT_STRU.mtrltype[chC] = dw_pageretr.Object.u_mtrldef_mtrltype[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.usermtrlmode[chC] = dw_pageretr.Object.u_mtrldef_usermtrlmode[ls_i] INS_RT_STRU.unit[chC] = dw_pageretr.Object.u_mtrldef_unit[ls_i] INS_RT_STRU.fprice[chC] = dw_pageretr.Object.u_cus_price_fprice[ls_i] INS_RT_STRU.zqrate[chC] = dw_pageretr.Object.u_cus_price_zqrate[ls_i] END IF NEXT IF chC = 0 THEN MessageBox('系统提示','请至少选择一个目标行!',StopSign!) RETURN END IF ELSE dw_choice.AcceptText() ROW = dw_choice.RowCount() IF ROW <= 0 THEN MessageBox('系统提示','请先选择目标行!',StopSign!) RETURN END IF FOR ls_i = 1 TO dw_choice.RowCount() INS_RT_STRU.mtrlid[ls_i] = dw_choice.Object.u_cus_price_mtrlid[ls_i] INS_RT_STRU.cusid[ls_i] = dw_choice.Object.u_cus_price_cusid[ls_i] INS_RT_STRU.status[ls_i] = dw_choice.Object.u_cus_price_status[ls_i] INS_RT_STRU.woodcode[ls_i] = dw_choice.Object.u_cus_price_woodcode[ls_i] INS_RT_STRU.pcode[ls_i] = dw_choice.Object.u_cus_price_pcode[ls_i] INS_RT_STRU.mtrlcode[ls_i] = dw_choice.Object.u_mtrldef_mtrlcode[ls_i] INS_RT_STRU.mtrlname[ls_i] = dw_choice.Object.u_mtrldef_mtrlname[ls_i] INS_RT_STRU.mtrlmode[ls_i] = dw_choice.Object.u_mtrldef_mtrlmode[ls_i] INS_RT_STRU.mtrltype[ls_i] = dw_choice.Object.u_mtrldef_mtrltype[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.usermtrlmode[ls_i] = dw_choice.Object.u_mtrldef_usermtrlmode[ls_i] INS_RT_STRU.unit[ls_i] = dw_choice.Object.u_mtrldef_unit[ls_i] INS_RT_STRU.fprice[ls_i] = dw_choice.Object.u_cus_price_fprice[ls_i] INS_RT_STRU.zqrate[ls_i] = dw_choice.Object.u_cus_price_zqrate[ls_i] NEXT END IF Close(PARENT) end event type cb_refresh from w_pageretr_ch`cb_refresh within w_cus_price_ch integer taborder = 30 end type type cb_help from w_pageretr_ch`cb_help within w_cus_price_ch boolean visible = false end type type ln_bar from w_pageretr_ch`ln_bar within w_cus_price_ch end type type ln_bar2 from w_pageretr_ch`ln_bar2 within w_cus_price_ch end type type r_bar from w_pageretr_ch`r_bar within w_cus_price_ch integer x = 1019 end type type ln_1 from w_pageretr_ch`ln_1 within w_cus_price_ch end type type ln_2 from w_pageretr_ch`ln_2 within w_cus_price_ch end type type cbx_ml from checkbox within w_cus_price_ch integer x = 1376 integer y = 196 integer width = 393 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 = 0 ELSE use_ml = 1 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 = TRUE ELSE THIS.Checked = FALSE END IF end event type dw_choice from datawindow within w_cus_price_ch integer y = 1428 integer width = 3154 integer height = 600 integer taborder = 140 boolean bringtotop = true string title = "none" string dataobject = "dw_cus_mtrlnewprice_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 cb_ok from uo_imflatbutton within w_cus_price_ch integer x = 2405 integer y = 1324 integer width = 411 integer height = 96 integer taborder = 70 boolean bringtotop = true string text = "↓选择[Enter]" end type event clicked;call super::clicked;Long ROW,ls_i,chC = 0 String ls_findstr ROW = dw_pageretr.GetRow() IF ROW <= 0 THEN MessageBox('系统提示','请先选择目标行!',StopSign!) RETURN END IF dw_choice.SetRedraw(FALSE) FOR ls_i = 1 TO dw_pageretr.RowCount() IF dw_pageretr.IsSelected(ls_i) THEN ls_findstr = '' ls_findstr = 'u_cus_price_mtrlid ='+String(dw_pageretr.Object.u_cus_price_mtrlid[ls_i]) + ' and ' ls_findstr = ls_findstr + 'u_cus_price_cusid ='+String(dw_pageretr.Object.u_cus_price_cusid[ls_i]) + ' and ' ls_findstr = ls_findstr + 'u_cus_price_status = "'+String(dw_pageretr.Object.u_cus_price_status[ls_i]) + '" and ' ls_findstr = ls_findstr + 'u_cus_price_woodcode = "'+String(dw_pageretr.Object.u_cus_price_woodcode[ls_i]) + '" and ' ls_findstr = ls_findstr + 'u_cus_price_pcode = "'+String(dw_pageretr.Object.u_cus_price_pcode[ls_i]) + '"' IF dw_choice.Find(ls_findstr,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 dw_choice.SetRedraw(TRUE) end event type cb_del from uo_imflatbutton within w_cus_price_ch integer x = 2821 integer y = 1324 integer width = 334 integer height = 96 integer taborder = 150 boolean bringtotop = true string text = "↑删除" end type event clicked;call super::clicked;IF dw_choice.GETROW()=0 THEN MESSAGEBOX('NO','请选择删除的行对象!') RETURN END IF dw_choice.DeleteRow (0) dw_choice.TriggerEvent (rowfocuschanged!) end event type cbx_mlselect from checkbox within w_cus_price_ch integer x = 901 integer y = 196 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 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 cbx_all.Enabled = FALSE ELSE THIS.Checked = TRUE cbx_all.Enabled = TRUE END IF end event type cbx_all from checkbox within w_cus_price_ch integer x = 1111 integer y = 196 integer width = 242 integer height = 60 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" 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