您的位置:首页 > 其它

如何得到当前活动的控件(判断那个控件得到了光标)

2009-04-18 17:41 225 查看
昨天晚上加班的时候遇到一个问题,大致要实现以下内容:

1.数据窗口控件:dw_1、dw_2;

2.如果dw_1得到光标,那么{dw_2.visible = true} ;

3.如果dw_1 失去焦点,那么:如果dw_2得到光标,{dw_2.visible = true} ;如果dw_2也没有得到光标,{dw_2.visible = false} 。

看起来很简单的样子(实际上也很简单),但是我试了很多次。一开始在dw_1的losefocus事件里加上:{dw_2.visible = true} ,这样一来,在dw_1失去光标的时候dw_2不可见了,即使你单击的是dw_2也是一样的效果,这就没有达到目的。所以需要在{dw_2.visible = true} 之前判断是否是dw_2得到了光标,如果是,那么就直接return,否则再set{dw_2.visible = true}。

可是要怎么实现呢?

经尝试,解决方法如下(PB9.0):

 

graphicobject lctl_control     //声明一个graphicobject 类型的变量,用来存储getfocus()的返回值

 

lctl_control = getfocus( )      //使用getfocus()函数,得到当前活动的控件

 

/*注意下面一句代码,判断当前活动控件是否是dw_2。因为dw_2本身是datawindow类型的,而lctl_control是graphicobject 类型的,此处需要进行强制类型转换以后才能进行比较,否则会报错。强制类型转换可以采取多种方式,在此我选择了把取两者的句柄来比较(handle函数的返回值是long类型,此处和C++中不一样,VC++中本身就有句柄类型)*/

 

//如果是dw_2得到了光标,return

if handle(lctl_control) = handle(dw_2) then return

//否则,将dw_2设置为不可见

 

dw_2.reset( )

dw_2.visible = false
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  活动 存储 c
相关文章推荐