delphi 控件焦点问题

2024-11-06 15:27:57
推荐回答(4个)
回答(1):

你的问题说的不清楚。不知道你是不想用个热键的方式。
帮你写个例子吧。
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
//定义一个热键消息事件
procedure HotKeyDown(var Msg:Tmessage);message WM_HOTKEY;
public
{ Public declarations }
end;

var
Form1: TForm1;
HotKeyid:Integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
RegKey:longbool;

begin
//GlobalAddAtom函数得到唯一标识
HotKeyid:=GlobalAddAtom('MyHotKey')-$C00;
//HotKeyId的合法取之范围是0x0000到0xBFFF之间, GlobalAddAtom函数得到的值
//在0xC000到0xFFFF之间,所以减掉0xC000来满足调用要求。
RegKey:= RegisterHotKey(Handle,HotKeyid,0,VK_F5);
if RegKey=false then showmessage('热键注册失败');

//热键的辅助按键包括Mod_Ctrl 、Mod_Alt、Mod_Shift,对于Windows兼容键盘还支持Windows
//键,即其键面上有Windows标志的那个键,其值为Mod_win。
//上面 的代码注册了一个热键:F5。

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnRegisterHotKey(handle,HotKeyid); //注销热键

end;

procedure TForm1.HotKeyDown(var Msg: Tmessage);
begin
//如果按下F5键, 响应你想要的操作
if Msg.LParamHi=VK_F5 then
begin

form1.Visible := not form1.Visible;

end

end;

end.

回答(2):

在Form1的Active事件里添加代码:Web1.SetFocus. // Web1为你所说的Web控件。

procedure TForm1.FormActivate(Sender: TObject);
begin
Web1.SetFocus;
end;

有问题再Hi我~

回答(3):

最小化了还能获取焦点吗?
劫持postmessage或者sendmessage吧

回答(4):

不明白你的问题,再说清楚点吧。