以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 建议窗口增加BefoeLoad事件 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=74736) |
-- 作者:supwork -- 发布时间:2015/9/17 19:24:00 -- 建议窗口增加BefoeLoad事件 建议窗口增加BefoeLoad事件 可以在这个事件里对窗口进行一些预处理,如果有这个事件,则窗口内的表结构的加载就好处理了。
现在要在打开窗口之前 用代码人为加载相关的表格比较麻烦和不人性化。
有了这个事件 ,则只管调用窗口就行,相关预处理好设计点,后面不用再管了。 |
-- 作者:游 -- 发布时间:2015/9/17 19:40:00 --
AfterLoad不是一样可以处理吗?
就算加了,也得写代码啊。 |
-- 作者:yinyb36 -- 发布时间:2015/9/17 22:11:00 -- 那怎么一样呢?比如表A的窗口,动态加载表,现在的做法是在打开窗口前下代码判断,是否加载了表A,如果没有加载,则加载表A,这样没个打开的链接都要判断一次,维护起来也不方便 如果有BefoeLoad事件,只需要在BefoeLoad事件中写入代码就可以了,维护也方便很多!这只是说的一小部分的优点 窗口中的很多控件,该有的事件也没有,有时实现一个简单的功能,都要做个下拉窗口来实现,或者用两个控件来实现本来用一个控件就能完美解决的问题,还要写N多的代码 还有控件的边框,无边框+下划线很难看的有木有?而且输入框的高度小了很多,右侧的箭头也小了很多等等。 还有CheckedComboBox控件,想实现:选项来源于数据表,按编码排序,显示名称列,值为编码列,无法按编码排序,代码也不行,等等等等还有很多 |
-- 作者:Hyphen -- 发布时间:2015/9/18 8:41:00 -- 其它的不说,对于窗口来说,BefoeLoad确实意义不大,如果窗口里的控件都还没有加载完成,变量还没有初始化,基本是做不了任何事情的,如果说等控件都加载完,也就是AfterLoad了。 |
-- 作者:supwork -- 发布时间:2015/9/18 9:19:00 -- 没有试验就没有发言权。 要写代码不是问题,自己写代码更有控制权。 问题是 代码如何写高效点才是问题 afterload 是在加载之后对窗口内表数据如数据加载,控件,及控件执行(在这里可以模拟控件单击事件)等操作,言外这意是窗口内的所有基本东西,如表结构,控件必须全部生成。
问题是如果采用表结构动态加载模式,直接加载窗口会提示 Datatable表不存在错误。解决方式是 在打开窗口前的代码里 写代码先加载窗口所涉及的表结构(一般不只一两个表,如果你窗口内功能还涉及到其它表,就要加载更多的表)。
问题是 这个窗口在系统中调用的地方可能不止一处,可能有三处,四处,十处,一个窗口可能有很多入口。这就要在多个地方频繁的定那个窗口的加载前代码,同样的代码写多处本来就是不对的。如果哪一天你窗口内功能变化了,你得变更多处的加载前代码,有一处忘记了,就有些麻烦。
但是如果窗口有了,加载前beforload 事件,则我只需要在这个事件中写好或变更好初始化前的处理事件就好,其它地方只需要调用这个窗口就好。这样系统就方便多了,beforload 事件在表结构加载过程中至少有这些好处,至于在其它方面,估计肯定也会有很多好处的。碰到相关问题自然可能用得到。 |
-- 作者:游 -- 发布时间:2015/9/18 14:07:00 -- 哎!楼主适合当领导(能提问题),不适合做码农(解决问题)。
用自定义函数就能搞定的问题,还来这么长一段说词。 |
-- 作者:supwork -- 发布时间:2015/9/18 18:13:00 -- 以下是引用游在2015/9/18 14:07:00的发言:
哎!楼主适合当领导(能提问题),不适合做码农(解决问题)。
用自定义函数就能搞定的问题,还来这么长一段说词。 本人愚钝 ,还请明示 |
-- 作者:游 -- 发布时间:2015/9/18 19:41:00 -- 1、最简单的 你将Forms("窗口1").Open 改成 Functions.Execute("窗口1"))
再写一个自定义函数 窗口1 写你要做的环境检查代码 写上Forms("窗口1").Open
这样,你在那里调用都一样,要改就改这个函数。
2、略微复杂一点 你还可以可以传一个参数,指定窗口要打开到的表格(OpenTo)或位置
3、…… |
-- 作者:supwork -- 发布时间:2015/9/19 11:04:00 -- 方法一不错,差不多就是BEFORELOAD事件了,谢谢 你QQ多少呀,加一下我QQ :360-255-560 [此贴子已经被作者于2015/9/19 11:06:29编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/9/19 11:08:00 -- http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=69811&skin=0
|