如何判断获取焦点是窗口?

路人甲cw 2010-12-30 09:01:17
现在有一个单行文本框Sle_name的losefocus事件中有这样一段代码:
if classname(getfocus())='dw_1' then return
if dw_1.visible then
dw_1.visible=false
end if
dw_1是一个用于动态查询Sle_name中输入姓名的DW,我是想当焦点离开Sle_name时如果不是移到DW那么就将已经显示的DW隐藏,但是如果这个时候我点击了MDI主窗口的最小化,那么就报错说if classname(getfocus())='dw_1' then return这代语句存在空对象引用,这个问题应该怎么解决比较好呢?能不能有办法先判断点击的是不是MDI主窗口?
...全文
156 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
路人甲cw 2010-12-30
[Quote=引用 8 楼 samoon 的回复:]

习惯问题,不加也可以。在你这个案例里面 加不加是 等价的

以上代码是否解决了问题了?
[/Quote]
中午回去试试,先谢谢你的帮助!
回复
Samoon 2010-12-30
习惯问题,不加也可以。在你这个案例里面 加不加是 等价的

以上代码是否解决了问题了?
回复
路人甲cw 2010-12-30
[Quote=引用 6 楼 samoon 的回复:]

if isnull(this.getfocus()) then
if dw_1.visible then
dw_1.visible=false
end if
else
if classname(getfocus())='dw_1' then return
if dw_1.visible then
dw_1.visible=false
end if……
[/Quote]
为什么要用this.getfocus()呢?不明白
回复
Samoon 2010-12-30
if isnull(this.getfocus()) then
if dw_1.visible then
dw_1.visible=false
end if
else
if classname(getfocus())='dw_1' then return
if dw_1.visible then
dw_1.visible=false
end if

end if
回复
Samoon 2010-12-30
前面多加一个 if isnull(this.getfocus()) then... end if

回复
路人甲cw 2010-12-30
[Quote=引用 3 楼 lijianhe043 的回复:]

引用楼主 gaoqiangz 的回复:
if classname(getfocus())='dw_1' then return

等价于:if classname(this.getfocus())='dw_1' then return
这样的话就是你在失去焦点的事件里引用得到焦点,肯定不行,getfoucs()应该写到主窗口里事件里~
[/Quote]
其它没问题,就是点击主窗口的最小化按钮或将主窗口隐藏时才报错,没看明白你的意思...
回复
灰色轨迹 2010-12-30
[Quote=引用楼主 gaoqiangz 的回复:]
if classname(getfocus())='dw_1' then return
[/Quote]
等价于:if classname(this.getfocus())='dw_1' then return
这样的话就是你在失去焦点的事件里引用得到焦点,肯定不行,getfoucs()应该写到主窗口里事件里~
回复
路人甲cw 2010-12-30
错误代码:2
错误信息:null object reference at line4 in losefocus event of object sle_name of w_brdj
line4就是:
if classname(getfocus())='dw_1' then return
回复
pb8 2010-12-30
应该不是判断getfocus报错的,你把报错的内容贴上来看看先~~
通过classname可以得到mdi的名称,还有就是你可以在sle_name的losefocus事件中postevent一个事件,在那里面去设置dw_1是否显示~~
回复
发动态
发帖子
脚本语言
创建于2007-09-28

728

社区成员

PowerBuilder 脚本语言
申请成为版主
社区公告
暂无公告