怎么让当前窗口失去焦点?

rainlovesea 2008-09-20 04:52:06
Rt,如果我在窗体的BUTTONCLICK事件里写,:让当前窗体失去焦点,再取当前焦点,是不是得到的就是前一个窗体的焦点!如果是,那怎么让窗体失去焦点?
...全文
1768 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
-海盗旗- 2008-09-20
  • 打赏
  • 举报
回复
呵呵。。。如果想深入研究的话,去研究一线windows消息机制吧!会对你有帮助的。
bob008 2008-09-20
  • 打赏
  • 举报
回复
//-----------------------------------
Self.SendToBack;
sleep(1000);
showmessage(inttostr(getfocus));
self.BringToFront;
//===================================这个和最小化最大化就没啥区别... 我那上面看着多,是做实验的


//=======================================================
showmessage(inttostr(GetNextWindow(handle,GW_HWNDNEXT)));
//=======================================================貌似就个是取得下个窗口的句柄..与上面的相比
SHOW出的数据压根就不一样
僵哥 2008-09-20
  • 打赏
  • 举报
回复
在一般的情况下,当一个窗口A失去焦点转到另一个窗口B之后,在窗口的ZOrder当中B的下一个窗口仍然是A,于是可以不用切换焦点,直接GetNextWindow.但是很明确的是,ZOrder很容易被改变.
lihuasoft 2008-09-20
  • 打赏
  • 举报
回复
12楼打错字了, 更正:

BringWindowToTop

汗自己
lihuasoft 2008-09-20
  • 打赏
  • 举报
回复
找了一下, 除上面说的BringToFront和SendToBack这两个TControl的方法可以使用,
还有以下几个API函数可以使用:

GetNextWindow -- 可以返回某窗口(Window)前面或后面按Z序排列的窗口句柄
BringWindowToFront --- 这个就不用说了

...MicroSoft Windows提供了更多API可以查找使用.
lihuasoft 2008-09-20
  • 打赏
  • 举报
回复
也可以这样:

Self.SendToBack;
lihuasoft 2008-09-20
  • 打赏
  • 举报
回复
楼上, 可试:

OtherWindow.BringToFront;
bob008 2008-09-20
  • 打赏
  • 举报
回复
楼主肯定是在不知道下个窗体是什么的情况下提这个要求撒.. 楼主可以搞个CHECKEDBOX 控制TIMER1的ENABLE属性,这样就可以反复获得下个焦点的句柄了
bob008 2008-09-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hoposky 的回复:]
很简单
SendMessage(Handle,WM_KillFocus,0,0);
[/Quote]

你纯粹捣蛋... 你自己试验一下...
bob008 2008-09-20
  • 打赏
  • 举报
回复
哎...我想了半天,它当前就是焦点所在最前面的窗口,如果不最小化的话真的很难把焦点传到下面的窗口,消息过滤也不行.你还是最小化的时候写然后恢复大小吧

procedure TForm1.Timer1Timer(Sender: TObject);
begin
application.Minimize;
timer2.Enabled:=true;
timer1.Enabled:=false;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
edit1.Text:=inttostr(getforegroundwindow);
application.Restore;
timer2.Enabled:=false; //TIMER2开始是FALSE
end;
石头--- 2008-09-20
  • 打赏
  • 举报
回复
很简单
SendMessage(Handle,WM_KillFocus,0,0);
lihuasoft 2008-09-20
  • 打赏
  • 举报
回复
让希望的窗体得到焦点, 那你的窗体也就自然失去焦点了
bob008 2008-09-20
  • 打赏
  • 举报
回复
她要的当然不是这样的了...

这样的就简单了...还用问么...
etomahawk 2008-09-20
  • 打赏
  • 举报
回复
把当前窗体隐藏了或最小化就失去焦点了。
当前焦点就转移到下一个窗体。
bob008 2008-09-20
  • 打赏
  • 举报
回复
n你问的问题真的很猛... 你点BUTTON那么你的窗体就是处在焦点状态,除非你SHOW别的WINDOW..我搞一下先

wargrey 2008-09-20
  • 打赏
  • 举报
回复
友情帮顶

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧