Foxtable(狐表)用户栏目专家坐堂 → 表格锚定与列的问题


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

主题:表格锚定与列的问题

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


加好友 发短信
等级:五尾狐 帖子:1174 积分:8782 威望:0 精华:0 注册:2012/4/18 16:28:00
表格锚定与列的问题  发帖心情 Post By:2016/8/4 16:29:00 [只看该作者]

请教老师,TABLE在主窗口设置了 锚定了 TOP,  BOTTOM ,LEFT,RIGHT  能根据不同电脑的像素展开了

问题: TABLE里面的各列宽,怎样自适应与TABLE锚定的变动,否则,就会出现最后一列的右边根据不同像素电脑出现不同程度的空白区

         如果已经设定好TABLE各列的宽度,是否无法自适应TABLE根据不同像素电脑向右扩展,也会在右边出现大片空白

这种问题,一般是怎样解决的。

 回到顶部
帅哥哟,离线,有人找我吗?
新航程小何
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4786 威望:0 精华:0 注册:2014/9/17 11:34:00
  发帖心情 Post By:2016/8/4 17:11:00 [只看该作者]

个人思路:
  这类问题的原因是:没有将表列宽和窗口宽度的大小建立关联
解决思路:建立列宽和窗口大小的表达式,比如:
dim  formWidth as single=e.form.width
tables("table1").cols("第一列").width=formWidth/5 '意思是第一列的宽度是窗口宽度的1/5

将此代码卸载窗口的SizeChanged事件中。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/4 17:26:00 [只看该作者]

 平均,然后设置各列列宽

 

Dim width As Double = Tables("表A").grid.width
Dim w As Double = width / Tables("表A").cols.count
For Each c As Col In Tables("表A").cols
    c.width = w
Next


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/4 17:29:00 [只看该作者]

最简单,可以这样

 

http://www.foxtable.com/webhelp/scr/2380.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
douglas738888
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1174 积分:8782 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2016/8/4 17:33:00 [只看该作者]

老师

“平均,然后设置各列列宽”


设置各列列宽,可以在属性里面设置,还是要用代码来设置?



 


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/4 19:04:00 [只看该作者]

看3楼代码。

 回到顶部
帅哥哟,离线,有人找我吗?
douglas738888
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1174 积分:8782 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2016/8/4 21:41:00 [只看该作者]

老师,我做了个例子,但是没有实现老师指导的代码,请老师看看,谢谢!!!

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



 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/5 1:18:00 [只看该作者]

你隐藏了列,要这样处理

 

Dim t As Table = e.Form.controls("Table1").Table
Dim width As Double = t.grid.width
Dim w As Double = width / (t.getColVisibleWidth.split("|").length / 2)
For Each c As Col In t.cols
    c.width = w
Next


 回到顶部
帅哥哟,离线,有人找我吗?
douglas738888
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1174 积分:8782 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2016/8/5 9:55:00 [只看该作者]

大红袍老师,现在得到的结果是每列都平均了,能否只让一列的宽度来自适应,比如 “项目名称”,其他按设定好的不同列宽显示,这样用户使用可能会友好些。谢谢!!

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/5 10:16:00 [只看该作者]

 

Dim t As Table = Tables("表A")
Dim cname As String = "第二列"
Dim width As Double = t.grid.width
Dim sum As Double = 0
For Each c As Col In t.cols
    If c.Visible = True Then
        sum += iif(c.width=-1, 98, c.width)
    End If
Next
t.cols(cname).width = width - sum + t.cols(cname).width


 回到顶部