Foxtable(狐表)用户栏目专家坐堂 → 列窗口不显示的问题


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

主题:列窗口不显示的问题

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


加好友 发短信
等级:一尾狐 帖子:440 积分:3489 威望:0 精华:0 注册:2017/3/8 0:04:00
列窗口不显示的问题  发帖心情 Post By:2019/7/12 8:58:00 [只看该作者]

For Each c As Col In Tables("表A").Cols
    c.CloseWindow()    'Table中的列窗口默认关闭
Next

如果一个表的列数比较多, 列窗口比较多.
希望默认隐藏(关闭)列窗口
执行上述代码可以达到效果.

但是: 屏幕上列窗口首先会显示出来(堆叠),然后一个一个关闭(消失)
这个过程非常难看,有什么办法让用户感受不到吗?(比如我切换到该表时,执行什么样的代码可以避免发生这么难堪的界面……)
最好是:直接不显示列窗口.


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


加好友 发短信
等级:五尾狐 帖子:1093 积分:6682 威望:0 精华:0 注册:2013/7/1 9:05:00
  发帖心情 Post By:2019/7/12 9:08:00 [只看该作者]

1、列窗口可以不自动打开的:
http://www.foxtable.com/webhelp/topics/0075.htm
http://www.foxtable.com/webhelp/topics/0078.htm

2、关于闪烁,可以参考这一节:
http://www.foxtable.com/webhelp/topics/2914.htm

通过表的StopRedraw和ResumeRedraw方法,可以在执行某些操作之前停止绘制表,操作完成之后恢复绘制表,以避免屏幕闪烁。
但是某些特殊情况,这一招可能会失效,例如上面的代码中连续使用了RemoveFor和AppendLoad,此时单单依靠表的StopRedraw和
ResumeRedraw,屏幕依然会有明显的闪烁。

Foxtable提供了一对
方法,分别为LockBaseMainForm和UnLockBaseMainForm方法,前者用于停止绘制主界面,后者用于恢复绘制主界面。


如果使用常规的方法无法解决屏幕闪烁问题,可以如本节的示例代码一样,将相关的代码放在这一对方法之间即可。

如果表位于窗口之中,需要将代码放在Form的StopRedraw和ReseumeRedraw方法之间,才能避免闪烁:

Forms("窗口名").StopRedraw() '停止绘制窗口
DataTables
("订单").StopRedraw()
DataTables
("订单").RemoveFor("日期 = #" & Date.Today & "#")
DataTables
("订单").AppendLoad("日期 = #" & Date.Today & "#")
DataTables
("订单").ResumeRedraw()
Forms("窗口名").ReseumeRedraw() '停止绘制窗口

并非所有的操作都需要如此处理,多数时候只需使用表的StopRedraw和ResumeRedraw方法,就可以避免闪烁的发生,到目前为止,我也只发现连续使用RemoveFor和AppendLoad的时候,才需要做这样的特殊处理。



 回到顶部