关于事件的一些奇怪现象
建立一个form,里面放2个command控件,一个命名为:cmd1,另一个命名为cmd2。
在cmd2的when事件里写入以下代码:
IF TYPE('thisform.activecontrol')=='O'
messagebox('!')
endif
方法1:执行FORM,CMD1首先获得焦点,然后用鼠标点cmd2,立刻弹出对话框!
方法2:再次让CMD1获得焦点,然后按tab键盘,cmd2获得焦点,但是没有弹出对话框!
事实上是:在cmd2执行when的时候thisform.activecontrol不是一个控件,即FORM中没有任何控件获得焦点。
在方法1里事件发生的顺序为:valid>when>lostfocus>gotfocus
而到了方法2里事件发生的顺序就变为了valid>lostfocus>when>gotfocus
这个问题在VFP的《Visual FoxPro 的事件次序》里有例子说明,不过估计没有多少人认真看鼠标改变焦点和TAB改变焦点时的事件顺序变化。VFP,有时还真是不可思议。