Foxtable(狐表)用户栏目专家坐堂 → 如何执行某个现成的事件?


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

主题:如何执行某个现成的事件?

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19403 威望:0 精华:20 注册:2008/9/2 10:09:00
如何执行某个现成的事件?  发帖心情 Post By:2009/7/29 19:03:00 [显示全部帖子]

例如,窗口上有个日期输入控件,还有个列表框控件。
在日期输入控件中有个事件设置,就是当日期改变时,会自动根据该日期生成一个选项列表。正常情况下,在日期框选择不同的日期时,都会动态改变列表框的内容。
我现在的问题是:窗口在AfterLoad之后、怎样让日期输入框中的事件自动执行?也就是说,我希望窗口加载完毕后,马上就能看到变化后的列表框内容。现在最大的难点就在于,不知道在窗口的AfterLoad事件中如何去直接执行日期输入框中的事件。
我也尝试写了以下代码,但无法运行:
e.Form.Controls("DateTimePicker1").Select()
Sendkeys.Send({ENTER})

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19403 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/7/29 19:19:00 [显示全部帖子]

以下是引用mr725在2009-7-29 19:11:00的发言:
试一试我的理解:
e.Form.Controls("DateTimePicker1").Select()
Sendkeys.Send({ENTER})            ‘这两行代码并没有使日期改变呀~ 

要不先清空DateTimePicker1后,再赋值呢。  

在AfterLoad事件中已经先将日期的默认值设置为当天的日期了,我没贴出来而已。完整的是这样的:
e.Form.Controls("DateTimePicker1").Value = Date.Today
e.Form.Controls("DateTimePicker1").Select()
Sendkeys.Send({ENTER})


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19403 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/7/29 19:21:00 [显示全部帖子]

难道是SendKeys的写法不对?请高手指教。

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19403 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/7/30 7:51:00 [显示全部帖子]

    谢谢mr725和lxl的回复。
    上面的代码中,就是Sendkeys的问题。改成Sendkeys.Send("{ENTER}")后,预览及调试时都正常,可以达到我需要的效果,但在关闭项目后,重新双击打开该foxtable文件时,提示“Sendkeys无法在此程序内执行”。按提示改用SendWait方法,则又达不到我要的效果。郁闷了!
    至于lxl所建议的把事件代码直接复制过去,我认为这不是一个好的办法。这样做,一方面会造成程序臃肿,另一方面维护起来也不方便。一旦代码修改就要同时修改多处。
    建议老六增加一个可执行现成任意事件的方法,这样可以使程序代码更加简洁、也更灵活!
[此贴子已经被作者于2009-7-30 10:37:20编辑过]

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19403 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/7/30 9:48:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-7-30 7:59:00的发言:
单击按钮之类的代码,以后可以提供直接执行的方法,就象菜单按钮有PerformClick方法一样

请老六用笔头记下来,我真担心你过段时间又忘了
图片点击可在新窗口打开查看


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19403 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/8/3 10:50:00 [显示全部帖子]

     随着应用的深入,我发现这个问题现在越来越严重。比如,在表属性的KeyDownEdit事件中,设置了一些特殊字符的快速输入。但在已经绑定该表相关列的窗口文本框中,要想实现快速输入,还要在该文本框的KeyDownEdit事件中再设置一次,真是非常麻烦。
    我知道可以将事件代码写成自定义函数进行调用,但这样总觉得不是很方便。建议做如下改进:
    1、窗口中的各种控件,凡是绑定到数据表的,都应该加一个属性“是否自动继承来源表的属性或事件设置”;
    2、事件方面,不仅要能模拟执行按钮中的事件,还要能模拟执行任何事件。如此例中,只要在文本框的KeyDownEdit事件中,设置一行模拟执行表中相关事件的代码,就OK了。这样的代码看起来很简洁,流程也清晰,比用自定义函数好的多了!

 回到顶部