123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574 |
- $PBExportHeader$w_publ_pageretr.srw
- $PBExportComments$翻页窗口
- forward
- global type w_publ_pageretr from w_publ_base
- end type
- type sle_usual_query from u_sleedit within w_publ_pageretr
- end type
- type cb_retrieveall from uo_imflatbutton within w_publ_pageretr
- end type
- type em_pagerowno from editmask within w_publ_pageretr
- end type
- type dw_pageretr from u_dw_rbtnfilter within w_publ_pageretr
- end type
- type st_1 from statictext within w_publ_pageretr
- end type
- type cb_nextpage from uo_imflatbutton within w_publ_pageretr
- end type
- end forward
- global type w_publ_pageretr from w_publ_base
- integer width = 3675
- integer height = 2892
- string title = "分页"
- event ue_usual_query_filt ( )
- event ue_usual_query_retr ( )
- event user_key ( )
- event retrieve_pageretr ( )
- event ue_page1 ( )
- event ue_page2 ( )
- event ue_page3 ( )
- event ue_page4 ( )
- sle_usual_query sle_usual_query
- cb_retrieveall cb_retrieveall
- em_pagerowno em_pagerowno
- dw_pageretr dw_pageretr
- st_1 st_1
- cb_nextpage cb_nextpage
- end type
- global w_publ_pageretr w_publ_pageretr
- type variables
- datastore ds_curquery //缓存查询条件
- String ori_oldselect //保存原始SELECT
- String ls_newselect //保存加入查询条件后的SELECT
- String pkcolumndbtname //PK列数据库中列名
- Long onepage_rowlmno = 100 //页行最大行数
- Boolean retrieve_all = FALSE //是否全部RETRIEVE(不分页)
- Int mode = 0
- boolean ChkStorage = False //是否检查仓库权限
- //工作模式:0-编辑 1-带字符串参数预选择的选择/编辑
- Long arg_pkid //目标定位id //备用
- String arg_string_code //默认常用查询内容
- String OLD_TITLE = ''
- s_edit_index_tran s_tran //传递参数使用
- Int retrmode = 0 // 0 retrieve all;1 first page ;2 prior page;3 next page;4 last page
- Boolean if_sharedata = FALSE //是否接受share
- datastore ds_share //用于存放share的数据
- Boolean if_power_sendout = TRUE
- Boolean if_power_print = TRUE
- end variables
- forward prototypes
- public function integer wf_editindex_lockf ()
- public function integer wf_retrieveuc (datawindow arg_dw, string arg_newselect, integer arg_retrmode)
- public function string wf_get_pkcolumndbtname (datawindow arg_dw)
- end prototypes
- event 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+'( inwarecode like "%'+trim(sle_usual_query.text)+'%" )'
- // else
- // obj_expr=obj_expr+'( inwarecode 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.SetRow(1)
- // dw_pageretr.SelectRow(1,True)
- //END IF
- //dw_pageretr.TriggerEvent(RowFocusChanged!)
- //dw_pageretr.SetRedraw(True)
- end event
- event 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_inware.inwarecode like '%"+trim(sle_usual_query.text)+"%')"
- // else
- // ls_querystrpart=ls_querystrpart + "(u_inware.inwarecode 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
- event user_key();IF KeyDown(KeyPageUp!) THEN
- IF NOT dw_edit_mode THEN THIS.TriggerEvent('ue_page3')
- ELSEIF KeyDown(KeyPageDown!) THEN
- IF NOT dw_edit_mode THEN THIS.TriggerEvent('ue_page2')
- END IF
- end event
- event retrieve_pageretr();Boolean cb_retrieveall_enabled,cb_nextpage_enabled
- Boolean cb_func_enabled,cb_retrieve_enabled
- cb_retrieveall_enabled = cb_retrieveall.Enabled
- cb_nextpage_enabled = cb_nextpage.Enabled
- cb_func_enabled = cb_func.Enabled
- cb_retrieveall.Enabled = FALSE
- cb_nextpage.Enabled = FALSE
- cb_func.Enabled = FALSE
- SetPointer(HourGlass!)
- dw_pageretr.Retrieve()
- 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_page1();wf_retrieveuc(dw_pageretr,ls_newselect,1)
- THIS.TriggerEvent('RETRIEVE_pageretr')
- end event
- event ue_page2();wf_retrieveuc(dw_pageretr,ls_newselect,2)
- THIS.TriggerEvent('RETRIEVE_pageretr')
- end event
- event ue_page3();wf_retrieveuc(dw_pageretr,ls_newselect,3)
- THIS.TriggerEvent('RETRIEVE_pageretr')
- end event
- event ue_page4();wf_retrieveuc(dw_pageretr,ls_newselect,4)
- THIS.TriggerEvent('RETRIEVE_pageretr')
- end event
- public function integer wf_editindex_lockf ();//wf_editindex_lockf
- IF retrieve_all OR dw_edit_mode THEN
- cb_nextpage.Enabled = FALSE
- cb_retrieveall.Enabled = FALSE
- em_pagerowno.Enabled = FALSE
- ELSE
- cb_nextpage.Enabled = TRUE
- cb_retrieveall.Enabled = TRUE
- em_pagerowno.Enabled = TRUE
- END IF
- IF dw_edit_mode THEN
- sle_usual_query.Enabled = FALSE
- cb_func.Enabled = FALSE
- ELSE
- sle_usual_query.Enabled = TRUE
- cb_func.Enabled = TRUE
- END IF
- RETURN 1
- end function
- 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_ID<ls_id then MAX_ID=ls_id
- if Min_ID>ls_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_ID<ls_id then MAX_ID=ls_id
- if Min_ID>ls_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 , 8)
- 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
- public function string wf_get_pkcolumndbtname (datawindow arg_dw);//====================================================================
- // Function: wf_get_pkcolumndbtname()
- //--------------------------------------------------------------------
- // Description: 取第一列为关键字
- //--------------------------------------------------------------------
- // Arguments:
- // value datawindow arg_dw
- //--------------------------------------------------------------------
- // Returns: string
- //--------------------------------------------------------------------
- // Author: yyx Date: 2003.10.22
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- string ls_pkcolumndbtname,ls_str,tmp_oldselect
- long l_pos
- ls_pkcolumndbtname=arg_dw.Describe("#1.dbname")
- if pos(ls_pkcolumndbtname,'.')<=0 then
- tmp_oldselect=trim(arg_dw.Describe("DataWindow.Table.Select"))
- ls_str=mid(tmp_oldselect,8)
- if pos(ls_str,'.')>pos(ls_str,',') then
- goto ext
- else
- ls_pkcolumndbtname=left(ls_str,pos(ls_str,',') - 1)
- end if
- end if
-
- ext:
- return ls_pkcolumndbtname
- end function
- on w_publ_pageretr.create
- int iCurrent
- call super::create
- this.sle_usual_query=create sle_usual_query
- this.cb_retrieveall=create cb_retrieveall
- this.em_pagerowno=create em_pagerowno
- this.dw_pageretr=create dw_pageretr
- this.st_1=create st_1
- this.cb_nextpage=create cb_nextpage
- iCurrent=UpperBound(this.Control)
- this.Control[iCurrent+1]=this.sle_usual_query
- this.Control[iCurrent+2]=this.cb_retrieveall
- this.Control[iCurrent+3]=this.em_pagerowno
- this.Control[iCurrent+4]=this.dw_pageretr
- this.Control[iCurrent+5]=this.st_1
- this.Control[iCurrent+6]=this.cb_nextpage
- end on
- on w_publ_pageretr.destroy
- call super::destroy
- destroy(this.sle_usual_query)
- destroy(this.cb_retrieveall)
- destroy(this.em_pagerowno)
- destroy(this.dw_pageretr)
- destroy(this.st_1)
- destroy(this.cb_nextpage)
- end on
- event open;call super::open;OLD_TITLE = This.Title
- s_tran = Message.PowerObjectParm
- IF Not IsNull(s_tran) THEN
- retrieve_all = local_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
- if_sharedata = s_tran.if_sharedata //是否应用sharedata,当retrieve_all=true是生效
- ds_share = s_tran.ds_share
- if_power_sendout = s_tran.if_sendout
- if_power_print = s_tran.if_print
- 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")
- IF ChkStorage THEN
- ori_oldselect = f_modify_selectstr(ori_oldselect) //只显示所管的仓库单据
- END IF
- ls_newselect = ori_oldselect
- ds_curquery = Create DATASTORE
- ds_curquery.DataObject = 'd_extr_find'
- ds_curquery.SetTransObject (sqlca)
- wf_editindex_lockf()
- sle_usual_query.Text = Trim(arg_string_code)
- IF Not retrieve_all THEN
- This.TriggerEvent("ue_usual_query_RETR") //修改ls_newselect,retrieve
- ELSE
- IF if_sharedata THEN
- ds_share.ShareData(dw_pageretr)
- ELSE
- wf_retrieveuc(dw_pageretr,ls_newselect,1)
- This.TriggerEvent('RETRIEVE_pageretr')
- END IF
- END IF
- IF retrieve_all THEN
- This.TriggerEvent("ue_usual_query_filt")
- END IF
- end event
- event ue_retr;call super::ue_retr;s_extrtriequery_tran s_dbdw
- s_dbdw.query_dw=dw_pageretr
- s_dbdw.ptn_ds=ds_curquery
- s_dbdw.query_oldselect=ori_oldselect
- string ls_select=''
- openwithparm(w_extr_query,s_dbdw)
- ls_select = message.stringparm
- if trim(ls_select)="" or isnull(ls_select) then
- return
- else
- ls_newselect=ls_select
- end if
- dw_pageretr.setredraw(false)
- wf_retrieveuc(dw_pageretr,ls_newselect,1)
- this.triggerevent('retrieve_pageretr')
- dw_pageretr.setredraw(true)
- end event
- type cb_func from w_publ_base`cb_func within w_publ_pageretr
- integer x = 731
- integer y = 4
- integer height = 84
- integer taborder = 30
- end type
- type cb_exit from w_publ_base`cb_exit within w_publ_pageretr
- integer x = 3255
- integer y = 2144
- integer height = 92
- integer taborder = 20
- end type
- type sle_usual_query from u_sleedit within w_publ_pageretr
- integer x = 219
- integer y = 4
- integer height = 92
- end type
- event inputchanged;call super::inputchanged;IF retrieve_all THEN
- PARENT.TRIGGEREVENT("ue_usual_query_filt")
- END IF
- end event
- event keyup;call super::keyup;IF NOT dw_edit_mode THEN
- If Key = KeyDownArrow! Then //
- dw_pageretr.ScrollNextRow()
- End If
- If Key = KeyUPArrow! Then //
- dw_pageretr.ScrollPriorRow()
- End If
- END IF
- end event
- event modified;call super::modified;IF retrieve_all or retrmode=0 THEN
- // PARENT.TRIGGEREVENT("ue_usual_query_filt")
- ELSE
- PARENT.TRIGGEREVENT("ue_usual_query_RETR")
- END IF
- end event
- type cb_retrieveall from uo_imflatbutton within w_publ_pageretr
- integer x = 1202
- integer width = 165
- integer height = 84
- integer taborder = 70
- string text = "首页"
- end type
- event clicked;call super::clicked;PARENT.TriggerEvent('ue_page1')
- end event
- type em_pagerowno from editmask within w_publ_pageretr
- integer x = 901
- integer width = 293
- integer height = 84
- integer taborder = 60
- integer textsize = -9
- integer weight = 400
- fontcharset fontcharset = gb2312charset!
- fontpitch fontpitch = variable!
- string facename = "宋体"
- long textcolor = 33554432
- string text = "1000"
- borderstyle borderstyle = stylelowered!
- string mask = "#####0"
- boolean spin = true
- end type
- event constructor;this.text=f_ProfileString (sys_empid,dw_pageretr.DATAOBJECT, "pagerowno",'100')
- onepage_rowlmno=long(this.text)
- end event
- event modified;IF LONG(THIS.TEXT)>0 THEN
- else
- THIS.TEXT='1'
- end if
- onepage_rowlmno=LONG(THIS.TEXT)
- f_SetProfileString (sys_empid,dw_pageretr.DATAOBJECT, "pagerowno", THIS.TEXT)
- end event
- type dw_pageretr from u_dw_rbtnfilter within w_publ_pageretr
- integer y = 104
- integer width = 1184
- integer height = 1984
- integer taborder = 40
- boolean titlebar = true
- boolean maxbox = true
- boolean hscrollbar = true
- boolean vscrollbar = true
- boolean resizable = true
- boolean border = false
- boolean hsplitscroll = true
- borderstyle borderstyle = styleraised!
- end type
- event clicked;call super::clicked;IF Not( dw_edit_mode OR row <= 0 ) THEN THIS.SetRow(row)
- end event
- event rowfocuschanged;call super::rowfocuschanged;IF dw_edit_mode THEN RETURN
- IF currentrow > 0 THEN
- THIS.SelectRow(0,FALSE)
- THIS.SelectRow(currentrow,TRUE)
- END IF
- end event
- event dwnkey;call super::dwnkey;parent.postevent('user_key')
- end event
- event rowfocuschanging;call super::rowfocuschanging;IF dw_edit_mode THEN RETURN 1
- end event
- type st_1 from statictext within w_publ_pageretr
- integer x = 27
- integer y = 24
- integer width = 219
- integer height = 48
- integer textsize = -9
- integer weight = 400
- fontcharset fontcharset = gb2312charset!
- fontpitch fontpitch = variable!
- string facename = "宋体"
- long textcolor = 33554432
- long backcolor = 134217739
- string text = "编码含:"
- boolean focusrectangle = false
- end type
- type cb_nextpage from uo_imflatbutton within w_publ_pageretr
- integer x = 1367
- integer width = 110
- integer height = 84
- integer taborder = 80
- boolean bringtotop = true
- string text = "▼"
- end type
- event clicked;call super::clicked;m_Dfc_Control_PopupMenu dmPopupMenu
- string menustr
- menustr="Text=下页~tEvent=ue_page3"
- menustr = menustr + "|" + "Text=上页~tEvent=ue_page2"
- menustr = menustr + "|" + "Text=末页~tEvent=ue_page4"
-
- if len(trim(menustr))<>0 then
- dmPopupMenu = Create m_Dfc_Control_PopupMenu
- dmPopupMenu.mf_BuildMenu(This, menustr)
- dmPopupMenu.mf_PopMenu()
- Destroy dmPopupMenu
- end if
- end event
|