以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]opento的时候,界面闪烁  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=115915)

--  作者:chnfo
--  发布时间:2018/3/16 15:08:00
--  [求助]opento的时候,界面闪烁
界面上有两个窗口。A是共用窗口,用来导航。B是业务窗口(它是停靠窗口,假如属于表X,窗口中绑定表Y),用来指引显示主表数据。

在A中选择不同的导航菜单时,
1、 forms("B").opento("要切换到的主表") ;要切换到不同的主表---maintable = tables("要切换到的主表");
2、主表显示的数据要根据B窗口中的行过滤。即maintable.filter = “XID= ‘” & forms("B").controls("table1").table.current("ID")

问题是:切换导航菜单时,如果要切换到不同的主表,界面会闪烁。
有什么解决方案?
[此贴子已经被作者于2018/3/16 15:09:33编辑过]

--  作者:有点甜
--  发布时间:2018/3/16 15:12:00
--  

1、先opento,再切换到对应的mainTable;

 

2、闪烁的问题,做个例子看看,看能否处理。


--  作者:chnfo
--  发布时间:2018/3/16 15:56:00
--  
几乎没有什么逻辑的切换,都会闪。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:opento.zip


BCD间切换,会闪。
DE间切换不会闪(因为它们的maintable 是一样的)
[此贴子已经被作者于2018/3/16 15:58:01编辑过]

--  作者:有点甜
--  发布时间:2018/3/16 16:05:00
--  

延时

 

Select Case e.Link.Name
    Case "B"
        Forms("A").OpenTo("B")
        Dim sdt As Date = Date.Now
        While Date.Now < sdt.AddSeconds(2)
            Application.DoEvents
        End While
        MainTable = Tables("B")
    Case "C"
        Forms("A").OpenTo("C")
        Dim sdt As Date = Date.Now
        While Date.Now < sdt.AddSeconds(2)
            Application.DoEvents
        End While

       
        MainTable = Tables("C")
    Case "D"
        Forms("A").OpenTo("D")
        Dim sdt As Date = Date.Now
        While Date.Now < sdt.AddSeconds(2)
            Application.DoEvents
        End While
        MainTable = Tables("D")
    Case "E"
        Forms("A").OpenTo("D")
        MainTable = Tables("D")
    Case "F"
        MainTable = Tables("F")
    Case "G"
        MainTable = Tables("G")
End Select


--  作者:chnfo
--  发布时间:2018/3/16 16:15:00
--  
倒是一种方式,就是设的时间太短了,还是象闪烁。
时间长了,就象系统卡顿

--  作者:有点甜
--  发布时间:2018/3/16 16:40:00
--  

测试了一下,没找到办法。你只能用4楼的方式处理了。

 

不然你就把窗口A弄成主窗口,里面放两个table控件。


--  作者:chnfo
--  发布时间:2018/3/16 17:24:00
--  
另外,即使用你所说的方法,有两个问题 
1、卡顿是明显的。
2、例如导航菜单从B切换到C的时候,首先,界面会停顿一下,然后窗口B会关闭,然后当前主表会占满全屏;然后窗口B会打开,然后显示新的主表。这个实际效果是比较差的。

但是,如果把窗口B与主表内容合成一个,那要做的窗口就多了很多呀。

本来就是想尽量利用主表,少设计窗口,看来是不行了

这么看来,opento的功能有点鸡肋了
[此贴子已经被作者于2018/3/16 17:25:52编辑过]

--  作者:chnfo
--  发布时间:2018/3/16 17:40:00
--  
不过,跟导航窗口合并到一个页面上,用split控件,在导航的link切换时,再控制它是否显示,也不失为一个方法 
--  作者:有点甜
--  发布时间:2018/3/16 17:42:00
--  

窗口B只需要做一个,你点击导航的时候,动态绑定成不同的表,不就好了?

 

如果确实要用你自己的方法,为什么要弄成停靠?不能弄成共有,然后隐藏起来的形式?


--  作者:chnfo
--  发布时间:2018/3/17 8:50:00
--  
因为有些界面要显示主表和子表,有些界面只显示主表,用动态绑定表的方式,还要用模拟关联表,也要用split控件,控制显隐,代码工作量也不小。
如果把B窗口设为共有,问题是导航窗口A已经是共有了,两个共有窗口都放左边,不得行呀
所以,A窗口放导航控件和表,可能还合适点
要是两个共有窗口能并列在左边且同时显示就简单了

[此贴子已经被作者于2018/3/17 8:58:54编辑过]