如何得到当前活动的控件(判断那个控件得到了光标)
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
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#如何判断是哪个类的那个方法调用了当前方法
- 如何判断存在弹出窗体?如何判断当前窗口是活动窗口?
- 关于如何获取当前焦点控件并判断控件类型
- .NET C# 如何将光标置于 TextBox 控件中的文本的开头或末尾或当前位置
- .Net - C# 如何判断程序里某个窗体是否为Windows的当前活动窗体?(附代码)
- 如何得到 TextBox 或 richTextBox 的当前输入光标的屏幕坐标
- Atitit 网络设备的自动发现机制 需求如下: 1、自动获取当前设备所在网段及当前与当前网段有连接的网段的所有IP,并判断出是哪类设备。如:服务器、交换机、防火墙等。 2、如何根据第1点得到的
- [转载].NET C# 如何将光标置于 TextBox 控件中的文本的开头或末尾或当前位置
- .NET C# 如何将光标置于 TextBox 控件中的文本的开头或末尾或当前位置
- 关于如何获取当前焦点控件并判断控件类型
- 如何从backing bean中得到当前页面的URL?
- 关于如何判断当前用户对文件有无写权限
- 如何在驱动程序(sys)中得到当前进程的完整路径和进程名?
- Iphone如何判断当前网络的运营商
- android UiAutomator如何根据颜色判断控件的状态
- VC如何判断当前进程处在Administrator权限下
- 如何判断当前是否全屏程序
- 如何用js得到当前页面的url信息方法(JS获取当前网址信息)
- 如何通过代码判断当前使用的是什么浏览器(各个平台)
- 如何判断Android手机当前是否联网?