Foxtable(狐表)用户栏目专家坐堂 → [求助]如何把DrawCell事件画图显示中间过程封闭掉?


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

主题:[求助]如何把DrawCell事件画图显示中间过程封闭掉?

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


加好友 发短信
等级:八尾狐 帖子:1959 积分:15526 威望:0 精华:0 注册:2011/7/16 20:59:00
[求助]如何把DrawCell事件画图显示中间过程封闭掉?  发帖心情 Post By:2021/7/4 18:56:00 [只看该作者]

某表在DrawCell事件对几个单元格进行了描图。
在加载该表时使用如下语句:
        DataTables("XXX").StopRedraw
        DataTables("XXX").LoadFilter=zc1
        DataTables("XXX").LoadTop=""
        DataTables("XXX").Load
        Tables(bm2).AutoSizeCols
        DataTables("XXX").ResumeRedraw
但是在数据出现前仍然有几秒显示,如下图一。如何把这个显示关闭掉?谢谢

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


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


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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/4 20:50:00 [只看该作者]

试试

        Tables("XXX").StopRedraw
        DataTables("XXX").LoadFilter=zc1
        DataTables("XXX").LoadTop=""
        DataTables("XXX").Load
        Tables(bm2).AutoSizeCols
        Tables("XXX").ResumeRedraw

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


加好友 发短信
等级:八尾狐 帖子:1959 积分:15526 威望:0 精华:0 注册:2011/7/16 20:59:00
  发帖心情 Post By:2021/7/7 8:18:00 [只看该作者]

   Dim bm2 as string= e.Form.Name & "_table2"
    ‘XXX“是真实表名
        dataTables("XXX").StopRedraw
        DataTables("XXX").LoadFilter=zc1
        DataTables("XXX").LoadTop=""
        DataTables("XXX").Load
        dataTables("XXX").ResumeRedraw

经测试发现取消  Tables(bm2).AutoSizeCols就可以封住了。加上这一句就不行。
用datatables(bm2).StopRedraw 执行出错

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/7 8:53:00 [只看该作者]


[此贴子已经被作者于2021/7/7 8:53:29编辑过]

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/7 8:56:00 [只看该作者]

副本可以使用tables(bm2),不能使用datatables(bm2)

        Tables(bm2).StopRedraw
        DataTables("XXX").LoadFilter=zc1
        DataTables("XXX").LoadTop=""
        DataTables("XXX").Load
        Tables(bm2).AutoSizeCols
        Tables(bm2).ResumeRedraw

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


加好友 发短信
等级:八尾狐 帖子:1959 积分:15526 威望:0 精华:0 注册:2011/7/16 20:59:00
  发帖心情 Post By:2021/7/7 15:55:00 [只看该作者]

Dim bm1 As String= e.Form.Name & "_table1"
DataTables("合同").StopRedraw
'Tables(bm1).StopRedraw
DataTables("合同").LoadFilter=zc
DataTables("合同").Loadtop=""
DataTables("合同").Load
'Tables(bm1).AutoSizeCols
'Tables(bm1).Cols("企业名称").Width=120
'Tables(bm1).Cols("项目名称").Width=100
'Tables(bm1).ResumeRedraw
DataTables("合同").ResumeRedraw
这样就全部封住了! 

把带有bm1语句解封就又出现了!这个可能是一个bug

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/7 16:03:00 [只看该作者]

可能我电脑配置比较好,测试不出来,方便做个例子看看。

或者换种方式,drawcell事件加个判断,比如
if vars("a") = false
原来drawcell事件代码
end if

加载
vars("a")=true
Dim bm1 As String= e.Form.Name & "_table1"
DataTables("合同").StopRedraw
'Tables(bm1).StopRedraw
DataTables("合同").LoadFilter=zc
DataTables("合同").Loadtop=""
DataTables("合同").Load
Tables(bm1).Cols("企业名称").Width=120
Tables(bm1).Cols("项目名称").Width=100
Tables(bm1).AutoSizeCols
Tables(bm1).ResumeRedraw
DataTables("合同").ResumeRedraw
vars("a") = false

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


加好友 发短信
等级:八尾狐 帖子:1959 积分:15526 威望:0 精华:0 注册:2011/7/16 20:59:00
  发帖心情 Post By:2021/7/7 20:13:00 [只看该作者]

采用变量控制,问题圆满解决!

 回到顶部