Foxtable(狐表)用户栏目专家坐堂 → [分享]解决各窗口不能保存表列宽的问题,希望对各位有用


  共有3402人关注过本帖树形打印复制链接

主题:[分享]解决各窗口不能保存表列宽的问题,希望对各位有用

帅哥哟,离线,有人找我吗?
unverse
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1088 积分:8247 威望:0 精华:4 注册:2012/3/31 18:08:00
[分享]解决各窗口不能保存表列宽的问题,希望对各位有用  发帖心情 Post By: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编辑过]

 回到顶部