以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何把DrawCell事件画图显示中间过程封闭掉?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=169869)

--  作者:新福星
--  发布时间:2021/7/4 18:56:00
--  [求助]如何把DrawCell事件画图显示中间过程封闭掉?
某表在DrawCell事件对几个单元格进行了描图。
在加载该表时使用如下语句:
        DataTables("XXX").StopRedraw
        DataTables("XXX").LoadFilter=zc1
        DataTables("XXX").LoadTop=""
        DataTables("XXX").Load
        Tables(bm2).AutoSizeCols
        DataTables("XXX").ResumeRedraw
但是在数据出现前仍然有几秒显示,如下图一。如何把这个显示关闭掉?谢谢

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


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


--  作者:有点蓝
--  发布时间: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

--  作者:新福星
--  发布时间: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 执行出错

--  作者:有点蓝
--  发布时间:2021/7/7 8:53:00
--  

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

--  作者:有点蓝
--  发布时间: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

--  作者:新福星
--  发布时间: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

--  作者:有点蓝
--  发布时间: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

--  作者:新福星
--  发布时间:2021/7/7 20:13:00
--  
采用变量控制,问题圆满解决!