以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [分享]解决各窗口不能保存表列宽的问题,希望对各位有用  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=57492)

--  作者:unverse
--  发布时间:2014/9/25 15:43:00
--  [分享]解决各窗口不能保存表列宽的问题,希望对各位有用
以前看过泡泡的关于表各窗口表中的列宽 的保存的视频,收获不小,
但此方法存在一个问题:
1、如果项目是第一次使用话保存的本地参数为空,会导致获取表列宽失败,而导致窗口副本表显示不正常,
2、如果系统有多个客户端使用,每个客户端第一次使用都会获取参数为空,
3、如果存在多个窗口的副本表会重复写很多代码
综合以上问题,故考虑用数据表加自定义函数来存放各个副本表的列宽,在窗口打开的时候判断当前打开窗口,及来源表是哪个,副本表的名称,来获取数据表的列宽,从来达到设置当前窗口的列宽

实现方法:
1、定义保存列宽、和获取列宽函数
保存:
Dim ck As String = args(0) \'窗口名称
Dim bm As String = args(1) \'窗口表名
Dim zb As String = args(2) \'数据主表
Dim r As DataRow = DataTables("窗口表列宽").Find("窗口名称=\'" & ck & "\' And 窗口表名=\'" & bm & "\' And 数据表名= \'" & zb & "\'")
If r IsNot Nothing    
    r("列配置") =Tables(ck & "_" & bm).GetColVisibleWidth()
Else
    MessageBox.Show("未找到表的默认值")
End If
Return Nothing 
读取:在窗口打开时候执行
Dim ck As String = args(0) \'窗口名称
Dim bm As String = args(1) \'窗口表名
Dim zb As String = args(2) \'数据表名
Dim r As DataRow = DataTables("窗口表列宽").Find("窗口名称=\'" & ck & "\' And 窗口表名=\'" & bm & "\' And 数据表名= \'" & zb & "\'")
If r IsNot Nothing
    If r.IsNull("列配置")= False
        Return  r("列配置")
    Else
        Return   r("默认值")
    End If
Else
    MessageBox.Show("缺少默认参数","提示",MessageBoxButtons.OK)
End If


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140925151450.png
图片点击可在新窗口打开查看

2、在主表的表事件afterResizecolumn 中添加代码:

If Forms("资产增加").Opened Then
    Functions.Execute("保存列宽","资产增加","table1","资产主表")
 End If
如果有多个窗口复制上面的代码,判断窗口打开名称

3、新建保存列宽的数据表:


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140925151827.png
图片点击可在新窗口打开查看

4、在窗口打开执行函数:

Tables(e.Form.Name & "_table1").SetColVisibleWidth(Functions.Execute("获取列宽",e.Form.Name,"Table1","资产主表"))




如果新添加新窗口需要在第2步中加上窗口是否打开判断和第3步的表中添加窗口名称,窗口表名,数据表名,以及默认列宽 ,然后在新的窗口中的afterload事件中添加第4步代码即可,

通过以上几步就可以实现在任意窗口打开表保存上次表的列宽

扩展:如何让不同的用户有不同的配置应该如何实现?

其实很简单只需要在第三步表中加上用户名称,将函数那里再添加一个用户过滤条件就可以了,再延伸一点可以将窗口的要显示 的列,以及列宽全部保存到数据表中,这样可以实现隐藏列及调整列宽功能 

抛砖引玉,希望大家能在此基础之上实现更强功能 

附加示例文件,请下载


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自动保存列宽.table











[此贴子已经被作者于2014-9-25 15:53:25编辑过]

--  作者:有点甜
--  发布时间:2014/9/25 15:46:00
--  
 很好
--  作者:lsy
--  发布时间:2014/9/25 15:53:00
--  
好。