Foxtable(狐表)用户栏目专家坐堂 → 建议窗口增加BefoeLoad事件


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

主题:建议窗口增加BefoeLoad事件

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
建议窗口增加BefoeLoad事件  发帖心情 Post By:2015/9/17 19:24:00 [只看该作者]

建议窗口增加BefoeLoad事件

可以在这个事件里对窗口进行一些预处理,如果有这个事件,则窗口内的表结构的加载就好处理了。

 

现在要在打开窗口之前 用代码人为加载相关的表格比较麻烦和不人性化。

 

有了这个事件 ,则只管调用窗口就行,相关预处理好设计点,后面不用再管了。


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


加好友 发短信
等级:小狐 帖子:321 积分:1916 威望:0 精华:0 注册:2014/8/24 13:36:00
  发帖心情 Post By:2015/9/17 19:40:00 [只看该作者]

 

 

AfterLoad不是一样可以处理吗?

 

就算加了,也得写代码啊。


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


加好友 发短信
等级:四尾狐 帖子:953 积分:7252 威望:0 精华:0 注册:2011/9/6 13:36:00
  发帖心情 Post By:2015/9/17 22:11:00 [只看该作者]

那怎么一样呢?比如表A的窗口,动态加载表,现在的做法是在打开窗口前下代码判断,是否加载了表A,如果没有加载,则加载表A,这样没个打开的链接都要判断一次,维护起来也不方便
如果有BefoeLoad事件,只需要在BefoeLoad事件中写入代码就可以了,维护也方便很多!这只是说的一小部分的优点
窗口中的很多控件,该有的事件也没有,有时实现一个简单的功能,都要做个下拉窗口来实现,或者用两个控件来实现本来用一个控件就能完美解决的问题,还要写N多的代码
还有控件的边框,无边框+下划线很难看的有木有?而且输入框的高度小了很多,右侧的箭头也小了很多等等。
还有CheckedComboBox控件,想实现:选项来源于数据表,按编码排序,显示名称列,值为编码列,无法按编码排序,代码也不行,等等等等还有很多


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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2015/9/18 8:41:00 [只看该作者]

其它的不说,对于窗口来说,BefoeLoad确实意义不大,如果窗口里的控件都还没有加载完成,变量还没有初始化,基本是做不了任何事情的,如果说等控件都加载完,也就是AfterLoad了。

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/9/18 9:19:00 [只看该作者]

没有试验就没有发言权。 要写代码不是问题,自己写代码更有控制权。

问题是 代码如何写高效点才是问题

afterload 是在加载之后对窗口内表数据如数据加载,控件,及控件执行(在这里可以模拟控件单击事件)等操作,言外这意是窗口内的所有基本东西,如表结构,控件必须全部生成。

 

问题是如果采用表结构动态加载模式,直接加载窗口会提示 Datatable表不存在错误。解决方式是 在打开窗口前的代码里 写代码先加载窗口所涉及的表结构(一般不只一两个表,如果你窗口内功能还涉及到其它表,就要加载更多的表)。

 

问题是 这个窗口在系统中调用的地方可能不止一处,可能有三处,四处,十处,一个窗口可能有很多入口。这就要在多个地方频繁的定那个窗口的加载前代码,同样的代码写多处本来就是不对的。如果哪一天你窗口内功能变化了,你得变更多处的加载前代码,有一处忘记了,就有些麻烦。

 

但是如果窗口有了,加载前beforload 事件,则我只需要在这个事件中写好或变更好初始化前的处理事件就好,其它地方只需要调用这个窗口就好。这样系统就方便多了,beforload 事件在表结构加载过程中至少有这些好处,至于在其它方面,估计肯定也会有很多好处的。碰到相关问题自然可能用得到。


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


加好友 发短信
等级:小狐 帖子:321 积分:1916 威望:0 精华:0 注册:2014/8/24 13:36:00
  发帖心情 Post By:2015/9/18 14:07:00 [只看该作者]

哎!楼主适合当领导(能提问题),不适合做码农(解决问题)。

 

用自定义函数就能搞定的问题,还来这么长一段说词。


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/9/18 18:13:00 [只看该作者]

以下是引用在2015/9/18 14:07:00的发言:

哎!楼主适合当领导(能提问题),不适合做码农(解决问题)。

 

用自定义函数就能搞定的问题,还来这么长一段说词。


本人愚钝 ,还请明示


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


加好友 发短信
等级:小狐 帖子:321 积分:1916 威望:0 精华:0 注册:2014/8/24 13:36:00
  发帖心情 Post By:2015/9/18 19:41:00 [只看该作者]

1、最简单的

     你将Forms("窗口1").Open  改成  Functions.Execute("窗口1"))

 

    再写一个自定义函数 窗口1

             写你要做的环境检查代码

             写上Forms("窗口1").Open

 

      这样,你在那里调用都一样,要改就改这个函数。

 

2、略微复杂一点

    你还可以可以传一个参数,指定窗口要打开到的表格(OpenTo)或位置

 

3、……


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/9/19 11:04:00 [只看该作者]

方法一不错,差不多就是BEFORELOAD事件了,谢谢  你QQ多少呀,加一下我QQ :360-255-560

[此贴子已经被作者于2015/9/19 11:06:29编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/19 11:08:00 [只看该作者]


 回到顶部