以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  窗口属性建议  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=178656)

--  作者:z769036165
--  发布时间:2022/7/14 9:15:00
--  窗口属性建议
能不能增加个加载窗口前执行BeforeLoad的属性?
--  作者:有点蓝
--  发布时间:2022/7/14 9:51:00
--  
有什么用处?
--  作者:z769036165
--  发布时间:2022/7/14 13:48:00
--  
项目大,很多表都处于卸载状态,需要这个窗口启动前先加载表
--  作者:有点蓝
--  发布时间:2022/7/14 14:08:00
--  
只能自己控制窗口的打开,然后在打开前加载表格,比如

datatables.load("某某表")
forms("窗口1").open

--  作者:z769036165
--  发布时间:2022/7/15 19:40:00
--  
但是这种情况就很头疼
如有2个主窗口,一个窗口A,一个窗口B,其绑定的表都是表1,每个窗口其关闭后事件都是卸载表1
在自定义菜单中有N个按钮,其中有2个按钮btn1和btn2,一个设置打开窗口A,一个设置打开窗口B,这2个按钮都同时设置打开窗口前,判断是否存在表1,如不存在则加载表1,

如果,btn1和btn2不相互连点的情况下,是没问题不报错的,但是一旦先点击btn1,然后点击btn2就会报错,

分析原因是,在菜单中点击btn1后,会加载表1,打开窗口A,然后在点击btn2时,先判断是否存在表1,这时确实也已经加载了,但是在切换窗口B时,会关闭窗口A,此时,窗口A把表1给卸载了,这样btn2就报错了


主窗口A----绑定表1(关闭后卸载表1)
主窗口B----绑定表1(关闭后卸载表1)

btn1--打开窗口A(加载表1)
btn2--打开窗口B(加载表1)

当先点击btn1

加载表1--显示窗口A

如果点击其他按钮,然后点击btn2(表1不存在,加载表1),功能正常
如果直接点击btn2时(表1已存在,不加载表1),然后打开窗口B,同时关闭窗口A(卸载表1),此时表1不存在了,窗口B报错

[此贴子已经被作者于2022/7/15 19:50:04编辑过]

--  作者:lgzhao
--  发布时间:2022/7/16 9:11:00
--  
我的系统也是。觉得这个事件很有必要
--  作者:有点蓝
--  发布时间:2022/7/16 9:34:00
--  
这种情况本来就是互斥的。就算加个BeforeLoad也一样没有用。

如果多个窗口会用到同一个表,最好的做法就是不要卸载表

--  作者:lgz518
--  发布时间:2022/7/16 10:03:00
--  
1.其实很简单,狐表把它复杂化,因为狐表是以表模式开发,不是以窗口模式开发,要以狐表用窗口模板开发,相当复杂,因为大家都用右手拿餐具吃饭,狐表是用左手,你要用狐表,你只能适应狐表,也要左手。
2.狐表一般不接受建议,它有它想法,论坛有很建议多,现在大家懂,比较少再提建议。
3.有一点,我想不明白,EXECL想变得专业,加上VBA,建立窗口,使它越来越专业,为什么狐表本是开发台,却走向EXECL,但不是EXEC模式
4.论坛上有一贴子,以窗口开发为主的贴子的浏览人数非常多,不知道狐表官方是否注意。
5.也许有人说,大家都在用,也开发界面不错,也有窗口,其实,一种被大部分用户说情况加上,它的本质还是表模式。

如果以窗口模式开发,是很简单,只一个窗口即可,在窗口事件只加载你需要表即可,不是考虑什么系统加载表,却表,这样加工作,还容易失错,大家都知道,言多必失,写太多,设置太多,必然会有冲突。


--  作者:z769036165
--  发布时间:2022/7/16 10:13:00
--  
如果多个窗口会用到同一个表,最好的做法就是不要卸载表

多窗口使用同一个表,不是这些多窗口都会打开,这些功能会用上这个表,如果都不卸载表,那这个表内容太多了,然后回到之前提的一个问题,加载表太多,占用内存多,任何操作速度就都会变慢,变卡

如果BeforeLoad这样解决不了,那想想办法看是否有方法去解决呢?

--  作者:有点蓝
--  发布时间:2022/7/16 10:34:00
--  
加载表本身用不了多少内存的,主要是加载的数据占用内存。可以考虑改为移除数据,比如
datatables().removefor("")

或者
datatables().loadfilter = "1=2"
datatables().load

或者
关闭窗口A,然后打开窗口B的时候,窗口B的表格根据需要按条件加载自己需要的数据
datatables().loadfilter = "窗口B需要的条件"
datatables().load