以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关闭列窗口出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=190253)

--  作者:lur320
--  发布时间:2024/1/26 10:16:00
--  关闭列窗口出错
如下代码在一个菜单按钮上,生产进度这个表有2个列窗口,一个是关联表,一个是备注列的列窗口。
在第一次切换到这个表格的时候,会报错,未将对象引用设置到对象的实例。

而第二次不会。

另外,并且每次在这个生产进度表格不停按按钮时,备注列的尺寸会不断缩小,直至达到400。而不是第一就400宽,为啥?

MainTable = Tables("生产进度")
Application.DoEvents()



For Each a As Object In Tables("生产进度").grid.parent.controls
    For Each b As Object In a.controls
        
        If b.text = "备注" Then
            b.width = 400
        End If
    Next
Next
Tables("生产进度.物料统计").visible = True

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

图片点击可在新窗口打开查看此主题相关图片如下:捕获2.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:捕获3.png
图片点击可在新窗口打开查看





--  作者:有点蓝
--  发布时间:2024/1/26 10:25:00
--  
请上传实例测试
--  作者:lur320
--  发布时间:2024/1/26 13:52:00
--  
我单独做了一个没有问题。但是在我的项目里面,下面的代码就是会不停的修改width。
直至其尺寸=400

For Each a As Object In MainTable.grid.parent.controls
    For Each b As Object In a.controls

        If b.text = "备注" Then
            b.width = 400
        End If
    Next
Next

--  作者:lur320
--  发布时间:2024/1/26 13:52:00
--  
在两个表里面都是这样

--  作者:lur320
--  发布时间:2024/1/26 13:54:00
--  
For Each a As Object In MainTable.grid.parent.controls
    For Each b As Object In a.controls

        If b.text = "备注" Then
            b.width = 400
            b.width = 400
            b.width = 400
            b.width = 400
            b.width = 400
            Output.Show(b.width)
            Else
                Output.Show(b.text)
        End If
    Next
Next

这样子反而有效,为啥?

--  作者:lur320
--  发布时间:2024/1/26 14:13:00
--  
 
图片点击可在新窗口打开查看此主题相关图片如下:捕获.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2024/1/26 14:36:00
--  
应该是有其它的列窗口,或者停靠窗口,关联表窗口等影响了
--  作者:lur320
--  发布时间:2024/1/26 15:56:00
--  
 对,旁边有关联表。如何排除影响?


--  作者:有点蓝
--  发布时间:2024/1/26 16:02:00
--  
试试把关联表隐藏,设置完毕后再重新显示
--  作者:lur320
--  发布时间:2024/1/26 20:11:00
--  
 没用,
我现在用这个改善。
 Dim sdt As Date = Date.Now
While Date.Now < sdt.AddSeconds(0.5)
    Application.DoEvents
End While

能不能帮我看看为啥会这样。在开发模式会流畅很多,在用户模式就慢,感觉尺寸移动到一半就停了的样子。要多设定几次才行。