《L5--U8111客开培训文档--单据列表.docx》由会员分享,可在线阅读,更多相关《L5--U8111客开培训文档--单据列表.docx(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第45页 共45页U8单据列表控件开发培训部门:U8平台及公共开发部 U8版本号:V11.1讲师: 李亮 定稿时间:2013-11-110.变更记录变更阶段时间变更原因变更类型内容提出人1. 单据列表介绍1.1 单据列表发展历程单据列表发展经历了如下几个重大里程碑:1、U8V8.721)单据列表控件引用的UFSpGrid.ocx因代码超出VB工程“容量”,同时避免打破兼容性,更换为UFSpGrid2.ocx。2)同时单据列表支持的编辑功能,具体如下:单据列表对合并显示功能的支持:要使单据列表支持合并显示的功能,主要要对栏目设置功
2、能的进行设置,单据列表对参照输入的支持1、增加对事件BrowUser,FillList的支持,其用法与SuperGrid中的用法相同2、要使单据列表具有参照输入的功能,须在栏目设置中进行如下设置:a.AA_ColumnDic及AA_ColumnSet两个视图b.BrowUserType,如果为NULL或为0,则单据列表状态保持原样,其它类型同SuperGrid中的类型定义,其定义如下:列参照类型Enum BrowType BrowNull = 0 UserBrowButton DblBrowButton DateBrowButton BrowComEnd Enum其值按递增。增加对超字段选择范
3、围的支持,也就条件的字节数可以超过8k限制增加对UAP结构下分页组件的调用方式,用法如下:其大体调用方式与CS方式下的调用没有太大区别,与CS不同的地方在于要UAP的调用方式要声明一个算法变量,以支持UIP调用后结果集的导入,具体用法详见示例工程的Form2代码增加对枚举类型的支持在U8VouchList中增加分页的功能,用法如下:1、请按原有使用VouchList的方式使用单据列表2、将分页的按钮放在所使用的窗体中3、在数据库中执行脚本,创建分页引擎的存储过程SPPagediv2、U8V11.0单据列表整合了翻页和快捷过滤功能,同时增强了交互和易用性。如:着色、布局等20多个功能,具体参考
4、新单据列表迁移指导说明.doc1.2 单据列表示例代码及常用功能说明具体代码示例工程参见:列表测试工程1. 扩展:Private WithEvents m_pagediv As Pagediv 分页引擎,配合实现单据列表自身的翻页功能。Call objU8Tbl.InitExternalButton(strCardNum, m_Login)Call Me.UFToolbar1.SetFormInfo(VchLst, Me)单据列表及控件与toolbar绑定,以便后续二次开发功能拓展。2. 属性:VchLst.SumStyle = vlGridSum合计方式合计方式枚举Public Enum S
5、umStyleEum vlSumNone = 0 没有合计 vlRecordsum = 1 记录集合计 vlGridSum = 2 Grid合计 vlRecordAndGridsum = 3 记录集和Grid合计End EnumVchLst.ReadOnly = Not CBool(1)VchLst.LoginObj = m_LoginVchLst.FltState = FalseVchLst.ShiftUpDown = True是否支持shift+上下箭头连续选择行VchLst.HiddenRefreshView = FalseVchLst.FillMode = FillOverwrite填
6、充模式填充模式枚举Public Enum FillModeEnum FillAppend = 0 追加填充 FillOverwrite = 1 覆盖填充End EnumVchLst.Title=“列表的标题”VouchList.TextMatrix(row,col)=“单元格值” VouchList.LocateState定位状态 True:定位False:取消定位VouchList.TopRow纵向滚动后最顶上的当前行号3. 方法:Call VchLst.InitFlt(m_Login, clsVoucherLst.objFilter, , , , strErrorRes)初始化过滤对象Vc
7、hLst.InitHead oColSet.getColInfo()初始化表头 sHeadXml表头格式信息VchLst.SetPrintOtherInfo sXML设置打印其它信息-表尾Set domOption = VchLst.GetListDom(False)取得列表对应dom对象 bSelect true-返回选中行dom对象 false-返回整个列表dom对象sXML = Me.VchLst.GetColumnWidthXML()获取被调整列宽或列序的栏目串VchLst .SetFormatString fdtrate, 0.000000、VchLst.DoFormat 设置格式化
8、信息VchLst.ClearDataSource解除数据邦定VchLst.SetVchLstRst vltable.DataRecordset设置表体记录集VchLst.RecordCount = vltable.DataCount设置列表全部数据集记录数VchLst.SetSumRst rstSum合计记录集Call VchLst.BindPagediv(m_pagediv) 分页引擎邦定VchLst.AdJustGridWidth作废VchLst.ProtectUnload()数据合法性检查。当前对象状态安全检查,可在执行某些上层功能时调用。如增加/删除功能、窗口Form_QueryUnl
9、oad事件等地方Private Sub ButtonClick(strButtonKey As String) If VchLst.ReadOnly = False Then If VchLst.ProtectUnload() 2 Then Exit Sub End IfEnd If Call VchLst.ShowVoucherDesign(strPrintCardnum, ipvtidStr, SA)打印模板设计界面VchLst.AddItem , VchLst.rows增加项目VchLst.ShowBatchModify调用这个方法显示批量修改窗口/VchLst.AllSelect/Vc
10、hLst.AllNonelngMainCol = VchLst.GridColIndex(strMainKey)根据关键字来获取所在列的索引VchLst.Find查找:在定位状态下,查找下一个VchLst.InitPrintSetup strPrnXml初始化打印设置VouchList.VchLstPreview 预览VchLst.GetGridBody().XXX引用UFSpGrid2.ocx,用于直接操作UFSpGrid2控件VchLst.GetGridBody().GetGridBody().XXX引用vsflexgrid.ocx,用于直接操作vsflexgrid控件VouchList.
11、Locate定位Set domLine = VouchList.GetBodyLine(iRow)根据行索引取得表体行dom对象4. 事件:Private Sub VchLst_AfterColumnsDisplayRule()着色后事件Private Sub VchLst_BatchModify(sItemXML As String)批改窗口弹出前,对传入批改窗口的xml进行再构造,比如设置参照类型等Private Sub VchLst_BrowUser(RetValue As Variant, row As Long, Col As Long)单元格编辑参照事件Private Sub Vc
12、hLst_CellValueChanged(ByVal row As Integer, ByVal Col As Integer, NewValue As Variant, OldValue As Variant, KeepFocus As Boolean)单元格内容变化检查事件Private Sub VchLst_DblClick()双击Private Sub VchLst_FillList(ByVal r As Long, ByVal c As Long, pCom As Object)单元格编辑下拉事件Private Sub VchLst_MouseUp(ByVal Button As
13、Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)Private Sub VchLst_PrintSettingChanged(ByVal varLocalSettings As Variant, ByVal varModuleSettings As Variant)打印信息改变时触发Private Sub VchLst_RowColChange()单据列表支持切换行功能Private Sub VchLst_SelectClick2(ByVal Selected As Boolean, ByVal row
14、 As Long)SelectClick和SelectClick2使用一个就可以了,而且SelectClick2要逐渐替代SelectClickPrivate Sub VchLst_CopySelect(bAuther As Boolean)增加copy to cliborad的功能 ,返回权限。Private Sub VouchList_BeforeSendCommand(cmdType As U8VouchList.UFCommandType, pageSize As Long, pageCurrent As Long) 列表翻页事件2. 列表控件原有功能说明2.1 特性列表控件的安装位置
15、:U8SOFTufcomsqlU8VouchList.ocx列表控件主要用于初报表外的表格样式的展示,包括单据列表、生单列表、个别档案列表等等。列表控件主要和栏目控件配合使用,也可以单独使用。列表控件具备编辑能力,支持文本、数字、下拉框、参照等输入方式。下面介绍列表控件的属性、方法、事件。2.2 属性BottomRow属性说明:获取当前显示区域最后一行的索引。只读属性。语法:VouchList1. BottomRow参数说明:无返回值:当前显示区域最后一行的索引ColPoint属性说明:获取与设置某列的小数位数。语法:VouchList1. ColPoint (cFld) = value as
16、 long参数说明:VouchList1:控件名称cFld:列的字段名Value:小数位数EditLocked属性说明:获取或设置控件是否被编辑锁定,锁定后将不能编辑。语法:VouchList1. EditLocked () = value as Boolean参数说明:VouchList1:控件名称Value:true锁定,不能编辑,false不锁定,可编辑。FrozenCols属性说明:获取或设置列表控件冻结列的个数。语法:VouchList1. FrozenCols () = value as Long参数说明:VouchList1:控件名称Value:冻结列的个数IsSumSelect
17、edRows属性说明:获取和设置是否只对选中行进行合计。语法:VouchList1. IsSumSelectedRows () = value as Boolean参数说明:VouchList1:控件名称。Value:true-只对打上“Y”的行进行合计;false对所有行进行合计。LeftCol属性说明:获取和设置当前显示区域最左侧列的索引。语法:VouchList1. LeftCol = value as Long参数说明:Value:当前显示区域最左侧列的索引LoginObj属性说明:获取和设置登录对象,在批改时需要登录对象。如果使用批量替换必须设置该属性,而且在调用ShowBatchM
18、odify之前必须设置好,如果不使用批量替换,可以不设置。语法:VouchList1. LoginObj = value as Object参数说明:Value:当前U8的登录对象ReadOnly属性说明:获取和设置控件是否只读。语法:VouchList1. ReadOnly = value as Boolean参数说明:Value:true只读 false可编辑RightCol属性说明:获取当前显示区域最右侧列的索引。只读属性。语法:VouchList1. RightCol参数说明:无ShiftUpDown属性说明:获取和设置是否支持shift+上下箭头连续选择行。语法:VouchList1
19、. ShiftUpDown= value as Boolean参数说明:VouchList1:当前控件对象。Value:true支持 false不支持。ShowSelCol属性说明:获取和设置是否显示选择列。语法:VouchList1. ShowSelCol= value as Boolean参数说明:VouchList1:当前控件对象。Value:true显示选择列 false不显示选择列。SortASC属性说明:获取和设置当前排序是升序还是降序。语法:VouchList1. SortASC= value as Boolean参数说明:VouchList1:当前控件对象。Value:true
20、表示升序 false表示降序。SortCol属性说明:获取当前排序列的列号,如果返回值为-1表示没有排序列(还没有使用过排序)。语法:VouchList1. SortCol参数说明:VouchList1:当前控件对象。SumRows属性说明:获取和设置合计(小计)行的行数。有些合计行是业务组加进去的,不是用的SumStyle属性,这种情况处理选择行时就会把这样的行选中。增加这个属性后,业务组代码就可以更改合计行的行数,从而在选择行时排除这些行。注意:合计行必须是在末尾语法:VouchList1. SumRows= value as Long参数说明:VouchList1:当前控件对象。Valu
21、e:有多少个合计行。SumStyle属性说明:如果需要连续使用addline增加行,将会频繁地调用GridAutoSum(addline内调用)导致效率下降。解决办法:程序员在连续调用addline之前,把sumstyle设置为sumnone,调用addline结束后,再赋回原来的合计方式。示例代码如下:dim OldSumStyle As SumStyleEumOldSumStyle = Vouchlist.SumStyleVouchList.SumStyle = SumStyleEum.vlSumNone.VouchList.SumStyle = OldSumStyle语法:VouchLi
22、st1. SumStyle= value as SumStyleEum参数说明:VouchList1:当前控件对象。Value: Public Enum SumStyleEum vlSumNone = 0 没有合计 vlRecordsum = 1 记录集合计 vlGridSum = 2 Grid合计 vlRecordAndGridsum = 3 记录集和Grid合计End Enum TextMatrixName属性说明:返回表体中某一单元格的值,如果是枚举值,则返回枚举名称语法:VouchList1.TextMatrixName(row as long,col as long)参数说明:Vou
23、chList1:控件名称Row:行索引Col:列索引TopRow属性说明:获取和设置当前显示区域最顶端行的索引。语法:VouchList1. TopRow = value as Long参数说明:Value:当前显示区域最顶端行的索引2.3 方法AddLine方法说明:根据传入dom对象新增加一行,内部要调用AddItem方法。语法:Function AddLine(ByVal row As Long, ByVal oDom As DOMDocument) As Boolean参数说明:Row: 插入行索引,在该行后插入新增行 oDom: 行dom对象返回值:成功返回true,失败返回fals
24、e。AddSumLine方法说明:根据传入dom对象新增加一行合计行. 语法:Public Function AddSumLine(ByVal row As Long, ByVal oDom As DOMDocument) As Boolean参数说明:Row:插入行索引,在该行后插入新增行 oDom:行dom对象返回值:成功返回true,失败返回false。CalcSum方法说明:重新计算合计行的数值。语法:Public Sub CalcSum()参数说明:无返回值:无DisableTextMatrix方法说明:设置单元格是否可用,不可用后,既不能手工输入,也不能通过textmatrix赋值
25、。 语法:Public Sub DisableTextMatrix(ByVal bDisable As Boolean, ByVal sIndex As String, ByVal row As Long)参数说明:bDisable: true-disable false-enablesIndex: 列索引(字符串)row: 行索引(数值)返回值:无GetBodyLine方法说明:根据行索引取得表体行dom对象。 语法:Public Function GetBodyLine(ByVal row As Long) As DOMDocument参数说明:row: 行索引(数值)返回值:行dom对象
26、,其中包含行中的数据。GetColIndex方法说明:根据列的字段名称取列的顺序号。 语法:Public Function GetColIndex(ByVal ColName As String) As Long参数说明:ColName: 列的字段名称返回值:列的顺序号。GetColName方法说明:根据列的顺序号取列的字段名称。 语法:Public Function GetColName(ByVal ColIndex As Long) As String参数说明:ColName: 列的顺序号返回值:列的字段名称。GetGridBody方法说明:获取列表控件封装的SuperGrid控件。 语法
27、:Public Function GetGridBody() As Object参数说明:无返回值:SuperGrid控件对象。GetHeadLine方法说明:取得标题行的dom对象。 语法:Public Function GetHeadLine() As DOMDocument参数说明:无返回值:标题行的dom对象。GetListDom方法说明:取得列表数据的dom对象。 语法:Public Function GetListDom(ByVal bSelect As Boolean) As DOMDocument参数说明:bSelect:true-返回选中行dom对象 false-返回整个列表
28、dom对象返回值:列表数据的dom对象。HideCaption方法说明:隐藏列表的标题,如销售订单列表的标题“销售订单列表”。语法:Public Sub HideCaption()参数说明:无返回值:无Locate方法说明:弹出定位窗口,根据输入的条件定位。 语法:Public Sub Locate(ByVal LocState As Boolean)参数说明:LocState:true-定位 false-取消定位返回值:无。ProtectUnload方法说明:当前对象状态安全检查,可在执行某些上层功能时调用。如增加/删除功能、窗口Form_QueryUnload事件等地方 语法:Public
29、 Function ProtectUnload() As OpType参数说明:无返回值:Enum OpType dbCandel = 0取消操作 dbRetry-重试操作 dbsuccess-操作成功End EnumReadOnlyTextMatrix方法说明:设置单元格是否只读,只读单元格不能手工输入,但是可以通过textmatrix赋值。语法:Public Sub ReadOnlyTextMatrix(ByVal bReadOnly As Boolean, ByVal sIndex As String, ByVal row As Long)参数说明:bReadOnly: true-只读
30、false可编辑sIndex: 列索引(字符串)row: 行索引(数值)返回值:无RemoveItem方法说明:删除一行。语法:Public Sub RemoveItem(ByVal Index As Variant)参数说明:Index: 行索引(数值)返回值:无SetCellFocus方法说明:光标移至单元格(Row,Col)。语法:Public Function SetCellFocus(ByVal row As Long, ByVal col As Long)参数说明:row: 行索引(数值)col: 列索引(数值)返回值:无SetListDom方法说明:将dom对象内的数据刷新到列表
31、界面上,dom对象是一个recordset转换的对象。语法:Public Function SetListDom(ByVal oDom As DOMDocument) As Boolean参数说明:oDom:存放数据的dom对象返回值:执行成功返回true,否则返回false。ShowBatchModify方法说明:显示批量修改窗口,要支持批量修改功能,必须调用此方法。语法:Public Sub ShowBatchModify()参数说明:无返回值:无UpdateLine方法说明:根据传入dom对象数据更新一行。语法:Public Function UpdateLine(ByVal row A
32、s Long, ByVal oDom As DOMDocument) As Boolean参数说明:Row:行索引oDOM:dom对象返回值:更新成功返回true,否则返回false。2.4 事件AfterSort事件 触发时机:排序之后触发此事件功能: 处理列排序后的事件声明:Public Event AfterSort(ByVal col As Long, ByVal bAsc As Boolean)参数说明: bAsc:true升序 false降序col:排序的列号BatchModify事件 触发时机:批改窗口弹出前触发此事件功能: 批改窗口弹出前,对传入批改窗口的xml进行再构造,比如
33、设置参照类型等。声明:Public Event BatchModify(ByRef sItemXML As String)参数说明: sItemXML:出给批改出口的xml字符串。BeforeEdit事件 触发时机:单元格进入编辑状态前触发此事件功能: 进入编辑之前的事件,可以在这里做一些编辑前的设置和判断,如果Cancel返回true,则不进入编辑。声明:Public Event BeforeEdit(ByRef Cancel As Boolean)参数说明: Cancel:如果Cancel返回true,则不进入编辑。BeforeSort2事件 触发时机:将要排序之前触发此事件功能: 处理列
34、排序前的个性化需求声明:Public Event BeforeSort2(ByRef bSort As Boolean, ByVal col As Long, ByVal bAsc As Boolean)参数说明: bSort:是否继续排序,如果为false,则将不执行排序操作,也将不触发BeforeSort和AfterSort事件。bAsc:true将要执行的是升序 false将要执行的是降序col:排序的列号BeforeSort事件 此事件已废弃,由BeforSort2代替。Click事件 触发时机:鼠标在控件上点击时触发功能: 处理鼠标单击事件声明:Public Event Click(
35、)参数说明: 无DblClick事件 触发时机:鼠标在控件上双击时触发功能: 处理鼠标双击事件声明:Public Event DblClick()参数说明: 无IsAllowBatchModify事件 触发时机:批改窗口关闭后,执行批改过程中触发。功能: 是否允许批改事件,在进行批改前判断单元格是否可修改,如果bCanModify返回为false,则对此单元格不执行批改。声明:Event IsAllowBatchModify(ByRef bCanModify As Boolean, ByVal row As Long, ByVal colkey As String)参数说明: bCanModi
36、fy:false不执行批改 true执行批改row:行索引colkey:列字段名KeyDown事件 触发时机:键盘按键按下时触发功能: 处理键盘按键按下事件声明:Public Event KeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer)参数说明: KeyCode:按下的按键Shift:同时按下的其他功能键KeyPress事件 触发时机:键盘按键按下时触发功能: 处理键盘按键按下事件声明:Public Event KeyPress(ByVal KeyAscii As Integer)参数说明: KeyAscii:按下的按键KeyU
37、p事件 触发时机:键盘按键按下后又松开是触发功能: 处理键盘按键松开抬起时的事件声明:Public Event KeyUp(ByVal KeyCode As Integer, ByVal Shift As Integer)参数说明: KeyCode:按下的按键Shift:同时按下的其他功能键SelectClick2事件 触发时机:当选中/取消选(打上“Y”/去掉“Y”)中一行时触发此事件。代替SelectClick事件。功能: 处理行选中/取消选中时的个性化操作。声明:Public Event SelectClick2(ByVal Selected As Boolean, ByVal row
38、As Long)参数说明: Selected:当前所点击的选择列的状态,如果已选择,也就是被打上“Y”,则此值为True,否则为FalseRow:当前选中/取消选中的行索引。其他的属性、方法、事件列表控件其他的属性、方法、事件请参考:(html格式文件,双击图标可打开)2.5 Supergrid表格控件SuperGrid控件的安装位置:U8SOFTufcomsqlUFSPGrid.ocx属性方法AddItem方法说明:在列表表体中增加一行语法:VouchList1.AddItem(Item As String, Index As Long)参数说明:Item:待插入行的String表示,用vb
39、Tag或Chr(0)分隔开的字符串Index:待插入的行在列表中所在的位置,如果这个参数忽略,将在列表的表体最末行加入返回值:无Clear方法说明:清空Grid的数据。语法:VouchList1.AddItem(Item As String, Index As Long)参数说明:Item:待插入行的String表示,用vbTag或Chr(0)分隔开的字符串Index:待插入的行在列表中所在的位置,如果这个参数忽略,将在列表的表体最末行加入返回值:无事件BeforeEdit事件 触发时机:单元格进入编辑状态前触发此事件功能: 进入编辑之前的事件,可以在这里做一些编辑前的设置和判断,如果Canc
40、el返回true,则不进入编辑。声明:Event BeforeEdit(Cancel As Boolean, sReturnText As String)参数说明: Cancel:如果Cancel返回true,则不进入编辑sReturnText:可以通过这个参数返回单元格的值其他的属性、方法、事件Supergrid表格控件的属性、方法、事件请参考:(html格式文件,双击图标可打开)3. 栏目控件相关3.1 特性栏目控件是用来设置编辑栏目的位置、标题、宽度等信息的控件,开发者可以利用此控件返回的SQL语句动态拼写SQL语句。3.2 显示栏目Dim colset as New U8ColumnSet.clsSetCnnstr=”Data数据库连接串”Call colset.init(cnnstr,用户名)Call colset.setColMode(Key值,1)第二个参数为1返回显示列,为2返回默认列,为0返回所有列Colset.setcol3.3 得到返回值 GetSqlString 返回SQL语句的Select部分。 GetSqlSumString 返回SQL语句的汇总部分(需要将ShowSumType设置为True才有效)。 GetOrder