以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  表格锚定与列的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=88538)

--  作者:douglas738888
--  发布时间:2016/8/4 16:29:00
--  表格锚定与列的问题
请教老师,TABLE在主窗口设置了 锚定了 TOP,  BOTTOM ,LEFT,RIGHT  能根据不同电脑的像素展开了

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

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

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

--  作者:新航程小何
--  发布时间:2016/8/4 17:11:00
--  
个人思路:
  这类问题的原因是:没有将表列宽和窗口宽度的大小建立关联
解决思路:建立列宽和窗口大小的表达式,比如:
dim  formWidth as single=e.form.width
tables("table1").cols("第一列").width=formWidth/5 \'意思是第一列的宽度是窗口宽度的1/5

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

--  作者:大红袍
--  发布时间: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


--  作者:大红袍
--  发布时间:2016/8/4 17:29:00
--  

最简单,可以这样

 

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

 


--  作者:douglas738888
--  发布时间:2016/8/4 17:33:00
--  
老师

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


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



 


--  作者:大红袍
--  发布时间:2016/8/4 19:04:00
--  
看3楼代码。
--  作者:douglas738888
--  发布时间:2016/8/4 21:41:00
--  
老师,我做了个例子,但是没有实现老师指导的代码,请老师看看,谢谢!!!

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



--  作者:大红袍
--  发布时间: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
--  发布时间:2016/8/5 9:55:00
--  
大红袍老师,现在得到的结果是每列都平均了,能否只让一列的宽度来自适应,比如 “项目名称”,其他按设定好的不同列宽显示,这样用户使用可能会友好些。谢谢!!
--  作者:大红袍
--  发布时间: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