delphi 开发组件时添加一个全局键盘事件
在开发组件的时候希望添加一个全局键盘事件功能。按下一个键触发一个功能,因为组件正常状态下没有焦点,所以一般的键盘事件无法实现。...
在开发组件的时候希望添加一个全局键盘事件功能。按下一个键触发一个功能,因为组件正常状态下没有焦点,所以一般的键盘事件无法实现。
展开
3个回答
展开全部
applicationEvent
更多追问追答
追问
控件开发里面该怎么做?
追答
开发组件的话,作用域不同,没办法。
或者按下边的那个,添加热键。那个是全局的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以定义热键
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY;
public
end;
var
Form1: TForm1;
HotKeyId: Integer;
implementation
{$R *.dfm}
procedure TForm1.HotKeyDown(var Msg: Tmessage);
begin
if (Msg.LparamLo = MOD_Control) and (Msg.LParamHi = 13) then
begin
Button1.Click;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
HotKeyId := GlobalAddAtom('MyHotKey') - $C000;
RegisterHotKey(Handle, HotKeyId, Mod_Control, 13);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnRegisterHotKey(handle, HotKeyId);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage('ok');
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY;
public
end;
var
Form1: TForm1;
HotKeyId: Integer;
implementation
{$R *.dfm}
procedure TForm1.HotKeyDown(var Msg: Tmessage);
begin
if (Msg.LparamLo = MOD_Control) and (Msg.LParamHi = 13) then
begin
Button1.Click;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
HotKeyId := GlobalAddAtom('MyHotKey') - $C000;
RegisterHotKey(Handle, HotKeyId, Mod_Control, 13);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnRegisterHotKey(handle, HotKeyId);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage('ok');
end;
end.
追问
是开发程序控件不是软件。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |