delphi 开发组件时添加一个全局键盘事件

在开发组件的时候希望添加一个全局键盘事件功能。按下一个键触发一个功能,因为组件正常状态下没有焦点,所以一般的键盘事件无法实现。... 在开发组件的时候希望添加一个全局键盘事件功能。按下一个键触发一个功能,因为组件正常状态下没有焦点,所以一般的键盘事件无法实现。 展开
 我来答
liu55721
2012-06-29 · TA获得超过922个赞
知道大有可为答主
回答量:1861
采纳率:100%
帮助的人:861万
展开全部
这都是很无聊的事情,DELPHI有那么多的组件可以获得焦点,你随便用一个就行了,只要能获得焦点的组件,都能实现你所说的那种功能.接受键盘或鼠标事件,比如标签组件不能获得焦点,但可以在它的上面放一个列表组件listbox来获得焦点,把这个列表组件缩小到人眼看不到就行了.然后在listbox的事件中写代码,来实现你所想要的功能.没有必要再去写一个组件.再说没有焦点的组件你把它搞的能获得焦点,这就失去了它存在的意义了.
熊冰昳5B
2012-06-19 · TA获得超过490个赞
知道小有建树答主
回答量:632
采纳率:0%
帮助的人:458万
展开全部
applicationEvent
更多追问追答
追问
控件开发里面该怎么做?
追答
开发组件的话,作用域不同,没办法。

或者按下边的那个,添加热键。那个是全局的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
neiljin1976
2012-06-19 · 超过15用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:31.6万
展开全部
可以定义热键
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.
追问
是开发程序控件不是软件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式