收藏 分销(赏)

客开培训文档单据列表.docx

上传人:精**** 文档编号:3903517 上传时间:2024-07-23 格式:DOCX 页数:60 大小:323.79KB 下载积分:16 金币
下载 相关 举报
客开培训文档单据列表.docx_第1页
第1页 / 共60页
客开培训文档单据列表.docx_第2页
第2页 / 共60页


点击查看更多>>
资源描述
U8单据列表控件开发 培训部门:U8平台及公共开发部 U8版本号:V11.1 讲师: 李亮 定稿时间:2023-11-11 0.变更记录 变更阶段 时间 变更因素 变更类型 内容 提出人 1. 单据列表介绍 1.1 单据列表发展历程 单据列表发展经历了如下几个重大里程碑: 1、U8V8.72 1)单据列表控件引用的UFSpGrid.ocx 因代码超过VB工程“容量”,同时避免打破兼容性,更换为UFSpGrid2.ocx。 2)同时单据列表支持的编辑功能,具体如下: 单据列表对合并显示功能的支持: 要使单据列表支持合并显示的功能,重要要对栏目设立功能的进行设立, 单据列表对参照输入的支持 1、增长对事件BrowUser,FillList的支持,其用法与SuperGrid中的用法相同 2、要使单据列表具有参照输入的功能,须在栏目设立中进行如下设立: a.AA_ColumnDic及AA_ColumnSet两个视图 b.BrowUserType,假如为NULL或为0,则单据列表状态保持原样,其它类型同SuperGrid中的类型定义,其定义如下: '列参照类型 Enum BrowType BrowNull = 0 UserBrowButton DblBrowButton DateBrowButton BrowCom End Enum 其值按1递增。 增长对超字段选择范围的支持,也就条件的字节数可以超过8k限制 增长对UAP结构下分页组件的调用方式,用法如下: 其大体调用方式与CS方式下的调用没有太大区别,与CS不同的地方在于要UAP的调用方式要声明一个算法变量,以支持UIP调用后结果集的导入,具体用法详见示例工程的Form2代码 增长对枚举类型的支持 在U8VouchList中增长分页的功能,用法如下: 1、请按原有使用VouchList的方式使用单据列表 2、将分页的按钮放在所使用的窗体中 3、在数据库中执行脚本,创建分页引擎的存储过程SPPagediv 2、U8V11.0 单据列表整合了翻页和快捷过滤功能,同时增强了交互和易用性。如:着色、布局等20多个功能,具体参考 《新单据列表迁移指导说明.doc》 1.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 SumStyleEum vlSumNone = 0 '没有合计 vlRecordsum = 1 '记录集合计 vlGridSum = 2 'Grid合计 vlRecordAndGridsum = 3 '记录集和Grid合计 End Enum VchLst.ReadOnly = Not CBool(1) VchLst.LoginObj = m_Login VchLst.FltState = False VchLst.ShiftUpDown = True ‘是否支持shift+上下箭头连续选择行 VchLst.HiddenRefreshView = False VchLst.FillMode = FillOverwrite '填充模式 '填充模式枚举 Public Enum FillModeEnum FillAppend = 0 '追加填充 FillOverwrite = 1 '覆盖填充 End Enum VchLst.Title=“列表的标题” VouchList.TextMatrix(row,col)=“单元格值” VouchList.LocateState ‘定位状态 True:定位False:取消定位 VouchList.TopRow ‘纵向滚动后最顶上的当前行号 3. 方法: Call VchLst.InitFlt(m_Login, clsVoucherLst.objFilter, "", "", "", strErrorRes) ‘初始化过滤对象 VchLst.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 ‘设立格式化信息 VchLst.ClearDataSource ‘解除数据邦定 VchLst.SetVchLstRst vltable.DataRecordset ‘设立表体记录集 VchLst.RecordCount = vltable.DataCount ‘设立列表所有数据集记录数 VchLst.SetSumRst rstSum ‘合计记录集 Call VchLst.BindPagediv(m_pagediv) ‘分页引擎邦定 VchLst.AdJustGridWidth ‘作废 VchLst.ProtectUnload() ‘数据合法性检查。当前对象状态安全检查,可在执行某些上层功能时调用。如增长/删除功能、窗口Form_QueryUnload事件等地方 Private Sub ButtonClick(strButtonKey As String) If VchLst.ReadOnly = False Then If VchLst.ProtectUnload() <> 2 Then Exit Sub End If End If Call VchLst.ShowVoucherDesign(strPrintCardnum, ipvtidStr, "SA") ‘打印模板设计界面 VchLst.AddItem "", VchLst.rows ‘增长项目 VchLst.ShowBatchModify ‘调用这个方法显示批量修改窗口 //VchLst.AllSelect //VchLst.AllNone lngMainCol = VchLst.GridColIndex(strMainKey) ‘根据关键字来获取所在列的索引 VchLst.Find ‘查找:在定位状态下,查找下一个 VchLst.InitPrintSetup strPrnXml ‘初始化打印设立 VouchList.VchLstPreview ` '预览 VchLst.GetGridBody().XXX ‘引用UFSpGrid2.ocx,用于直接操作UFSpGrid2控件 VchLst.GetGridBody().GetGridBody().XXX ‘引用vsflexgrid.ocx,用于直接操作vsflexgrid控件 VouchList.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 VchLst_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 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 As Long) ‘SelectClick和SelectClick2使用一个就可以了,并且SelectClick2要逐渐替代SelectClick Private 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 特性 列表控件的安装位置:\U8SOFT\ufcomsql\U8VouchList.ocx 列表控件重要用于初报表外的表格样式的展示,涉及单据列表、生单列表、个别档案列表等等。 列表控件重要和栏目控件配合使用,也可以单独使用。 列表控件具有编辑能力,支持文本、数字、下拉框、参照等输入方式。 下面介绍列表控件的属性、方法、事件。 2.2 属性 BottomRow属性 说明: 获取当前显示区域最后一行的索引。只读属性。 语法:  VouchList1. BottomRow 参数说明: 无 返回值: 当前显示区域最后一行的索引 ColPoint属性 说明: 获取与设立某列的小数位数。 语法:  VouchList1. ColPoint (cFld) = [value as long] 参数说明:  VouchList1:控件名称  cFld:列的字段名 Value:小数位数 EditLocked属性 说明: 获取或设立控件是否被编辑锁定,锁定后将不能编辑。 语法:  VouchList1. EditLocked () = [value as Boolean] 参数说明:  VouchList1:控件名称  Value:true—锁定,不能编辑,false—不锁定,可编辑。 FrozenCols属性 说明: 获取或设立列表控件冻结列的个数。 语法:  VouchList1. FrozenCols () = [value as Long] 参数说明:  VouchList1:控件名称  Value:冻结列的个数 IsSumSelectedRows属性 说明: 获取和设立是否只对选中行进行合计。 语法:  VouchList1. IsSumSelectedRows () = [value as Boolean] 参数说明:  VouchList1:控件名称。 Value:true--只对打上“Y”的行进行合计;false—对所有行进行合计。 LeftCol属性 说明: 获取和设立当前显示区域最左侧列的索引。 语法:  VouchList1. LeftCol = [value as Long] 参数说明:  Value:当前显示区域最左侧列的索引 LoginObj属性 说明: 获取和设立登录对象,在批改时需要登录对象。 假如使用批量替换必须设立该属性,并且在调用ShowBatchModify之前必须设立好,假如不使用批量替换,可以不设立。 语法:  VouchList1. LoginObj = [value as Object] 参数说明:  Value:当前U8的登录对象 ReadOnly属性 说明: 获取和设立控件是否只读。 语法:  VouchList1. ReadOnly = [value as Boolean] 参数说明:  Value:true—只读 false—可编辑 RightCol属性 说明: 获取当前显示区域最右侧列的索引。只读属性。 语法:  VouchList1. RightCol 参数说明:  无 ShiftUpDown属性 说明: 获取和设立是否支持shift+上下箭头连续选择行。 语法:  VouchList1. 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表达升序 false表达降序。 SortCol属性 说明: 获取当前排序列的列号,假如返回值为-1表达没有排序列(还没有使用过排序)。 语法:  VouchList1. SortCol 参数说明:  VouchList1:当前控件对象。 SumRows属性 说明: 获取和设立合计(小计)行的行数。 有些合计行是业务组加进去的,不是用的SumStyle属性,这种情况解决选择行时就会把这样的行选中。增长这个属性后,业务组代码就可以更改合计行的行数,从而在选择行时排除这些行。 注意:合计行必须是在末尾 语法:  VouchList1. SumRows= [value as Long] 参数说明:  VouchList1:当前控件对象。 Value:有多少个合计行。 SumStyle属性 说明: 假如需要连续使用addline增长行,将会频繁地调用GridAutoSum(addline内调用)导致效率下降。 解决办法:程序员在连续调用addline之前,把sumstyle设立为sumnone,调用addline结束后,再赋回本来的合计方式。示例代码如下: dim OldSumStyle As SumStyleEum OldSumStyle = Vouchlist.SumStyle VouchList.SumStyle = SumStyleEum.vlSumNone ........ VouchList.SumStyle = OldSumStyle 语法:  VouchList1. 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) 参数说明:  VouchList1:控件名称  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,失败返回false。 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赋值。 语法:      Public Sub DisableTextMatrix(ByVal bDisable As Boolean, ByVal sIndex As String, ByVal row As Long) 参数说明:  bDisable: true-disable false-enable sIndex: 列索引(字符串) row: 行索引(数值)  返回值: 无 GetBodyLine方法 说明: 根据行索引取得表体行dom对象。 语法:      Public Function GetBodyLine(ByVal row As Long) As DOMDocument 参数说明:  row: 行索引(数值)  返回值: 行dom对象,其中包含行中的数据。 GetColIndex方法 说明: 根据列的字段名称取列的顺序号。 语法:      Public Function GetColIndex(ByVal ColName As String) As Long 参数说明:  ColName: 列的字段名称  返回值: 列的顺序号。 GetColName方法 说明: 根据列的顺序号取列的字段名称。 语法:      Public Function GetColName(ByVal ColIndex As Long) As String 参数说明:  ColName: 列的顺序号 返回值: 列的字段名称 。 GetGridBody方法 说明: 获取列表控件封装的SuperGrid控件。 语法:      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-返回整个列表dom对象 返回值: 列表数据的dom对象 。 HideCaption方法 说明: 隐藏列表的标题,如销售订单列表的标题“销售订单列表”。 语法:      Public Sub HideCaption() 参数说明: 无 返回值: 无 Locate方法 说明: 弹出定位窗口,根据输入的条件定位。 语法:      Public Sub Locate(ByVal LocState As Boolean) 参数说明:  LocState:true-定位 false-取消定位 返回值: 无。 ProtectUnload方法 说明: 当前对象状态安全检查,可在执行某些上层功能时调用。如增长/删除功能、窗口Form_QueryUnload事件等地方 语法:      Public Function ProtectUnload() As OpType 参数说明:  无 返回值: Enum OpType dbCandel = 0—取消操作 dbRetry---------重试操作 dbsuccess-------操作成功 End Enum ReadOnlyTextMatrix方法 说明: 设立单元格是否只读,只读单元格不能手工输入,但是可以通过textmatrix赋值。 语法:      Public Sub ReadOnlyTextMatrix(ByVal bReadOnly As Boolean, ByVal sIndex As String, ByVal row As Long) 参数说明:  bReadOnly: true-只读 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对象内的数据刷新到列表界面上,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 As 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进行再构造,比如设立参照类型等。 声明:  Public Event BatchModify(ByRef sItemXML As String) 参数说明: sItemXML:出给批改出口的xml字符串。 BeforeEdit事件 触发时机:  单元格进入编辑状态前触发此事件 功能:   进入编辑之前的事件,可以在这里做一些编辑前的设立和判断,假如Cancel返回true,则不进入编辑。 声明:  Public Event BeforeEdit(ByRef Cancel As Boolean) 参数说明: Cancel:假如Cancel返回true,则不进入编辑。 BeforeSort2事件 触发时机:  将要排序之前触发此事件 功能:   解决列排序前的个性化需求 声明:  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() 参数说明: 无 DblClick事件 触发时机:  鼠标在控件上双击时触发 功能:   解决鼠标双击事件 声明:  Public Event DblClick() 参数说明: 无 IsAllowBatchModify事件 触发时机:  批改窗口关闭后,执行批改过程中触发。 功能:   是否允许批改事件,在进行批改前判断单元格是否可修改,假如bCanModify返回为false,则对此单元格不执行批改。 声明:  Event IsAllowBatchModify(ByRef bCanModify As Boolean, ByVal row As Long, ByVal colkey As String) 参数说明: bCanModify: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:按下的按键 KeyUp事件 触发时机:  键盘按键按下后又松开是触发 功能:   解决键盘按键松开抬起时的事件 声明:  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 As Long) 参数说明: Selected:当前所点击的选择列的状态,假如已选择,也就是被打上“Y”,则此值为True,否则为False Row:当前选中/取消选中的行索引。 其他的属性、方法、事件 列表控件其他的属性、方法、事件请参考:(html格式文献,双击图标可打开) 2.5 Supergrid表格控件 SuperGrid控件的安装位置:\U8SOFT\ufcomsql\UFSPGrid.ocx 属性 方法 AddItem方法 说明: 在列表表体中增长一行 语法:       VouchList1.AddItem(Item As String, [Index As Long]) 参数说明:  Item:待插入行的String表达,用vbTag或Chr(0)分隔开的字符串  Index:待插入的行在列表中所在的位置,假如这个参数忽略,将在列表的表体最末行加入  返回值: 无  Clear方法 说明: 清空Grid的数据。 语法:       VouchList1.AddItem(Item As String, [Index As Long]) 参数说明:  Item:待插入行的String表达,用vbTag或Chr(0)分隔开的字符串  Index:待插入的行在列表中所在的位置,假如这个参数忽略,将在列表的表体最末行加入  返回值: 无 事件 BeforeEdit事件 触发时机:  单元格进入编辑状态前触发此事件 功能:   进入编辑之前的事件,可以在这里做一些编辑前的设立和判断,假如Cancel返回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.clsSet Cnnstr=”Data数据库连接串” Call colset.init(cnnstr,用户名) Call colset.setColMode(Key值,1) ‘第二个参数为1返回显示列,为2返回默认列,为0返回所有列 Colset.setcol 3.3 得到返回值 ² GetSqlString 返回SQL语句的Select部分。 ² GetSqlSumString 返回SQL语句的汇总部分(需要将ShowSumType设立为True才有效)。 ² GetOrderString、GetOrderStringEx返回SQL语句的Order by部分。 ² GetSQLGr
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服