[代码]Delphi实现窗体始终前台显示且获得焦点
之前想利用窗体的OnActivate和OnDeactive事件对窗体进行强行置顶并设置焦点,接着就发现窗体的 Form.Active 属性并不靠谱,无法准确的得到窗体是否得到焦点。
既然这样,索性利用Timer定时,每隔一段时间就对窗体去激活+置顶+激活+设置焦点,实践证明效果良好。
新建窗体,放置一个文本框 edt1,再放置一个Timer控件 tmr1,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 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 . |
程序运行后,窗体始终置顶显示,文本框始终获得焦点,键盘输入内容全在文本框内显示。
爱生活,爱拉风
分类:
Delphi
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!