[代码]Delphi实现窗体始终前台显示且获得焦点
2011-07-20 15:34
369 查看
之前想利用窗体的OnActivate和OnDeactive事件对窗体进行强行置顶并设置焦点,接着就发现窗体的 Form.Active 属性并不靠谱,无法准确的得到窗体是否得到焦点。
既然这样,索性利用Timer定时,每隔一段时间就对窗体去激活+置顶+激活+设置焦点,实践证明效果良好。
![](http://images.cnblogs.com/cnblogs_com/journeyonmyway/201107/2011072015342098.png)
新建窗体,放置一个文本框 edt1,再放置一个Timer控件 tmr1,代码如下:
程序运行后,窗体始终置顶显示,文本框始终获得焦点,键盘输入内容全在文本框内显示。
Technorati 标签: Delphi,SetForegroundWindow,Activate,Deactivate
既然这样,索性利用Timer定时,每隔一段时间就对窗体去激活+置顶+激活+设置焦点,实践证明效果良好。
![](http://images.cnblogs.com/cnblogs_com/journeyonmyway/201107/2011072015342098.png)
新建窗体,放置一个文本框 edt1,再放置一个Timer控件 tmr1,代码如下:
unit frmTestTopWindow; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) edt1: TEdit; tmr1: TTimer; procedure tmr1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin FormStyle := fsStayOnTop; // 窗口置顶 tmr1.Interval := 1000; // 每隔200ms处理一次 tmr1.Enabled := True; // 启动Timer end; procedure TForm1.tmr1Timer(Sender: TObject); begin Self.Deactivate; // 去激活窗体 SetForegroundWindow(Handle); // 将窗体置顶 Self.Activate; // 激活窗体 edt1.SetFocus; // Edit获得焦点 end; end.
程序运行后,窗体始终置顶显示,文本框始终获得焦点,键盘输入内容全在文本框内显示。
Technorati 标签: Delphi,SetForegroundWindow,Activate,Deactivate
相关文章推荐
- Delphi无需代码实现透明窗体显示文字
- 实现aspx页面中,获得焦点,高亮显示,离开时恢复 效果(完整代码)
- 实现Form窗体始终在桌面最前端显示
- C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并在最前端显示)
- 求解答:JS控制按钮切换页面,实现显示公共的部分前台代码如下:
- c#实现Form窗体始终在桌面最前端显示
- delphi 无代码实现背景透明及窗体异形方法及原理
- Android 自定义EditText 实现获得焦点并且有内容显示右侧图片并点击清空内容
- C# WINFORM 强制让窗体获得焦点(可实现单次置顶或持续置顶)
- C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并在最前端显示)
- C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并在最前端显示)
- javaScript让文本框内的最后一个文字的后面获得焦点实现代码
- Delphi实现窗体感知鼠标滑过并自动隐藏与显示窗口的方法
- c#实现Form窗体始终在桌面最前端显示
- C# WINFORM 强制让窗体获得焦点(可实现单次置顶或持续置顶)
- [代码]Delphi实现窗体内嵌其他应用程序窗体
- 在Delphi 中用程序实现自定义窗体的创建和显示顺序(1)
- 仿QQ会员右下角提示框c#实现,提示窗体不获得焦点
- 在Delphi 中用程序实现自定义窗体的创建和显示顺序(2)
- C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并在最前端显示)