1、一、 列表控件(V11.0)增加的特性:1. 集成【快捷过滤】功能;类似原来各列表界面里toolbar上的查询刷新滤设功能。查询按钮下拉查询方案:默认操作兼容原有功能。查询支持方案和快捷条件详细设置:【快捷过滤】相关的业务组代码调整:调整过滤对象的查询方法(UFGeneralFilter.FilterSrv.OpenFilter)调用,修改为调用过滤对象初始化方法(UFGeneralFilter.FilterSrv. InitBaseVarValue),参数传递与过滤对象查询原来的方法(UFGeneralFilter.FilterSrv.OpenFilter)兼容。然后调用新单据列表控件的快捷
2、过滤初始化方法(VouchList.InitFlt),把初始化好的过滤对象传入(如果没有过滤对象,也可以直接传入过滤对象ID或过滤对象名称+子系统号)。 代码修改前后对比示例如下(灰色字体部分是已经被注释的修改前的代码,下同):(引用的是服务协议列表代码修改模型)Set m_opub = CreateObject(UFGeneralFilter.FilterSrv) bSuccess = m_opub.OpenFilter(g_Login, 6729D410-233A-4674-A48A-2C34C17B82F6, , ErrInfo) lliang_2011-11-22_单据列表:快捷过滤
3、bSuccess = m_opub.InitBaseVarValue(g_Login, Call VouchList.InitFlt (g_Login, m_opub, , Err)参数1:Login对象参数2:过滤对象参数3:条件的Key参数4:过滤的名称参数5:子产品号参数6:返回的错误信息返回值:如果返回为False表明出现失败说明:你可以用参数2,忽略参数3、4、5或用参数3而忽略参数2和4、5或用参数4、5而忽略2和3.注意事项:调用此初始化方法的时机要求在Form_Load事件里,目前大部分产品的过滤对象调用(m_opub.OpenFilter)都是在相应的类模块或其他非窗体模块处
4、理,所以需要各模块根据实际情况把过滤对象变量有效传递到窗体然后在Form_Load事件里调用。推荐的方法是事前在窗体模块声明全局变量,然后在调用过滤对象的地方把已经初始化好的过滤对象暂时赋值给窗体的全局变量,最后在Form_Unload事件里即时的释放该全局变量。 / 直接在列表控件(V11.0)新增的查询事件中(FilterClick)调用原来的“查询”功能即可,同时把此事件返回的过滤对象参数一并传递到原查询功能。Private Sub VouchList_FilterClick(fldsrv As Object) Operating (filter,fldsrv)End Sub 注:是否显
5、示快捷过滤依据的是原列表是否支持查询功能。附:快捷过滤预置表:Data库 的 flt_quickconditionset表对应字段说明:filterid 过滤编号userid 用户编号,业务组预置用固定的 systemitemName 用于快捷过滤的项的名称 如:cDepName2. 集成【翻页】功能;取代原来各列表界面手工翻页或采用平台翻页控件的功能。【翻页】相关的业务组代码调整:1) 业务代码原列表界面中使用平台的翻页控件(PagedivCtl)的情况:在调用平台翻页控件绑定分页引擎的地方直接修改为用列表控件(V11.0)绑定分页引擎,接口方法和传递参数完全兼容,同时删除原平台翻页控件并把
6、相关的代码注释(包括原翻页控件涉及的事件),同时把原翻页控件对应的事件实现在列表控件对应的事件中实现(事件兼容)。(引用的是销售订单列表代码修改模型)Call PagedivCtl1.BindPagediv(m_pagediv) 翻页 Call VchLst.BindPagediv(m_pagediv)Private Sub PagedivCtl1_BeforeSendCommand(cmdType As U8VouchList.UFCommandType, pageSize As Long, pageCurrent As Long) Me.VchLst.SetVchLstRst Nothin
7、g Me.VchLst.FillMode = FillOverwriteEnd SubPrivate Sub VchLst_BeforeSendCommand(cmdType As U8VouchList.UFCommandType, pageSize As Long, pageCurrent As Long)2) 业务代码原列表界面没有采用平台的翻页控件,是自己处理的翻页功能的情况,时还不想采用先前到翻页控件的方式(原因:代码改动太大,可能出错的情况也多,而且直接影响由列表导航出的单据卡片翻页的界定范围),只是希望直接借用列表控件(V11.0)的翻页框架,而列表数据的获取保持不变(还是由业务
8、组直接获取传递给列表控件)。就此方案代码模板示例如下:/1、申明分页引擎变量(引用的是库存所有单据列表代码修改模型)lliang_2011-12-02_新单据列表:Private WithEvents m_pagediv As Pagediv分页引擎/2、FormLoad事件里初始化分页引擎并绑定到列表控件(V11.0)上(列表数据的加载过程保持不变,并且此必须放到列表数据加载之前执行,并且确认列表数据加载后给原有的列表属性RecordCount正确赋值了-应该是总记录数,而不是当前页显示的记录数) Set m_pagediv = New Pagediv m_pagediv.PageInfo.
9、CurrentPage = txtPage.Text m_pagediv.PageInfo.pageSize = txtSize.Text 注:此两处代码赋值逻辑需要在运行期检查原控件值是否存在 Call VouchList1.BindPagediv(m_pagediv)/3、在列表控件新增的翻页相关的事件中实现原来的手工翻页逻辑。Private Sub VouchList1_BeforeSendCommand(cmdType As U8VouchList.UFCommandType, pageSize As Long, pageCurrent As Long) txtSize.Text =
10、pageSize Select Case cmdType Case UFFirst cmdFirst_Click Case UFPrevious cmdPer_Click Case UFNext cmdNext_Click Case UFLast cmdLast_Click Case UFOK cmdOK_Click Case Else End Select是否显示翻页依据的是原列表是否支持翻页功能。3) 业务代码原列表界面没有采用平台的翻页控件,而是自己处理的翻页功能的情况:这种情况需要首先把业务组手工增加的列表翻页功能到平台翻页控件,然后再根据第1)种情况对应的方法到列表控件(V11.0)
11、,也可由手工的列表翻页功能直接到列表控件(V11.0)的翻页。至于如何从手工翻页功能到平台的翻页控件,这个可以咨询目前已经采用平台翻页控件的业务组成员处理(其中由列表导航出的单据卡片翻页的界定范围需要通过列表过滤条件串约束),在此也简单就代码修改过程示例说明一下:(新作单据列表时必须使用)(引用的是库存的其他入库单列表代码修改模型)Private WithEvents m_pagediv As Pagediv Private m_coni As IPagedivConi 条件,基本上都是从U8Colset中进行初始化/增加如下列表分页初始化方法,一个分页引擎事件。Private Sub Ini
12、tPagedivCtl(oColSet As Object, mCnn As Connection, VouchList As Object, strWhere As String) 初始化分页控件 Call InitConi(oColSet, strWhere , m_coni) Call m_pagediv.Initialize(mCnn, m_coni) Call PagedivCtl1.BindPagediv(m_pagediv) Call VouchList.BindPagediv(m_pagediv) Call m_pagediv.LoadData初始化分页条件Public Sub InitConi(ByVal oColSet As Object, strWhere As String, m_coni As IPagedivConi) On Error GoTo ErrHandler If m_coni Is Nothing Then Set m_coni = New DefaultPagedivConi End If m_coni.From = KCOtherInList此处需要通过一个专门的方法获取列表对应的数
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1