以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]记存三个表的高度怎么就能记住一个?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104612)

--  作者:新福星
--  发布时间:2017/8/1 20:20:00
--  [求助]记存三个表的高度怎么就能记住一个?
If r IsNot Nothing Then
    If Tables(bm4).Rows.Count<>0 Then
   
        r("a1")= Tables(bm4).Grid.Rows(Tables(bm4).Position+1).Height
        If   r("a1")<21 Then   r("a1")= 21
        
    End If
    If Tables(bm1).Rows.Count<>0 Then
   
        r("a2")= Tables(bm1).Grid.Rows(Tables(bm1).Position+1).Height
        If   r("a2")<21 Then   r("a2")= 21
    End If
    If Tables(bm5).Rows.Count<>0 Then
        r("a3")= Tables(bm5).Grid.Rows(Tables(bm5).Position+1).Height
        If   r("a3")<21 Then   r("a3")= 21
    End If
    r.save
End If

需要把一个窗口中三个表的高度记存下来。程序如上!
可是通过用MessageBox.Show显示数据,发现这三个表的高度不管怎么变化,只有一行会显示出实际高度,另两个是-1。只能记存其中一个。问题出在哪里?谢谢!

--  作者:有点蓝
--  发布时间:2017/8/1 20:31:00
--  
如果没有显式使用代码给行设置过高度,那么默认都是-1的。

你可以判断一下,如果是-1,那么就是默认的高度21

--  作者:新福星
--  发布时间:2017/8/1 20:36:00
--  
现在就是-1就设置成21。

我把这三个表的高度用Tables(bm).AutoSizeRows调整了行高。明显已经见到两个表的高度变宽了。
但是用MessageBox.Show(Tables(bmi).Grid.Rows(Tables(bmi).Position+1).Height)显示高度时,其高度只会有一个表显示是实际高度,另两个就显示为-1。好奇怪,为何?谢谢

--  作者:有点蓝
--  发布时间:2017/8/1 21:16:00
--  
如果数据仍然还只是一行的高度,AutoSizeRows不会导致高度变化
--  作者:新福星
--  发布时间:2017/8/1 21:27:00
--  
我也注意到这个问题。三个表用AutoSizeRows调整高度,有两个表的高度明显发生了变化。另一个没有变化!
在这种情况下,三个表的Tables(bmi).Grid.Rows(Tables(bmi).Position+1).Height 高度,只有一个显示实际高度。另两个是-1。
ABC三个表AC高度变化,B没有变。三个表中显示实际高度的表可能是A也可能是C。飘忽不定的!有什么办法获取实际高度?谢谢

--  作者:有点蓝
--  发布时间:2017/8/1 21:39:00
--  
每一行的高度都可能不一样的。只有高度有变化的行才能取到正确的Height值,没有变化的行统一就是-1。

不明白你到底想实现什么功能,上实例看看

--  作者:新福星
--  发布时间:2017/8/2 4:48:00
--  
要求是 :1 把表的行高记录下来.在下次打开时恢复关闭时的行高! 2 在输入数据时随着数据的录入行高自动适应,就象执行了AutoSizeRows。


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar

在这个项目中表A AfterResizeRow 的事件中设置代码   MessageBox.Show(e.Position & "/" &  e.Table.Grid.Rows(e.Position).Height)
然后拉动表A的行高,看到取到的行高怎么就是两个数呢?21 or -1。我想看到实际行高!谢谢

[此贴子已经被作者于2017/8/2 4:57:01编辑过]

--  作者:有点甜
--  发布时间:2017/8/2 9:58:00
--  

获取值,这样获取

 

MessageBox.Show(e.Position & "/" &  e.Table.Grid.Rows(e.Position+e.Table.HeaderRows).heightdisplay)

 

1、你可以用一列记录行高,打开的时候根据值设置。

 

    你可以直接用主表,你对主表的各种修改,都是可以保存下来的。

 

2、http://www.foxtable.com/webhelp/scr/1564.htm