各位高手:
创建一个Form,上面只有一个Label控件,写下的这个函数是可以接收到用户在Form上按下“a”这个事件的:
if(Message.Msg == WM_KEYDOWN)
{
long t = Message.WParam;
AnsiString str1;
str1.sprintf("%d",t);
Label1->Caption = str1;
}
TForm::WndProc(Message);
我再在Form上面放置了一个Edit控件,这时这个函数就无法接收到用户按下“a”的事件了,
请问该如何解决?
注:在实际的应用中,我是希望为这个Form创建一个快捷键“q”,按下他可以关闭窗口。
这个窗口上有很多控件。
这个程序要求在同一台pc上运行多个且互不干扰。
创建一个Form,上面只有一个Label控件,写下的这个函数是可以接收到用户在Form上按下“a”这个事件的:
if(Message.Msg == WM_KEYDOWN)
{
long t = Message.WParam;
AnsiString str1;
str1.sprintf("%d",t);
Label1->Caption = str1;
}
TForm::WndProc(Message);
我再在Form上面放置了一个Edit控件,这时这个函数就无法接收到用户按下“a”的事件了,
请问该如何解决?
注:在实际的应用中,我是希望为这个Form创建一个快捷键“q”,按下他可以关闭窗口。
这个窗口上有很多控件。
这个程序要求在同一台pc上运行多个且互不干扰。
解决方案 »
- 怎么把文本框的默认输入法去掉?
- 我从数据库中提取出两个数,如何将两个字符型的变为数字型的然后相加得出个结果,30分
- 把cxGrid里面的一个字段的Properties属性设为ComboBox,如何在代码里动态往这个ComboBox里填加值
- 在dbgrid中如何实现象word中表格的移动??
- 怎样拦截Delphi的错误信息并用自己的信息代替?
- 一个有点好笑,但是非解决不可的问题。源代码中找不雅文字的问题!
- 报表的格式化问题?
- 如何获得表的字段
- 急急急!!!各位,如何处理Image(详见内容)
- 函数里如何访问外控件
- 关于在报表中一页中打印三张相同的发票,如果一页印不完,要移到下一页,期望高手指点
- 如何treeview中插入节点?
可能没有理解楼主的意思!
关注!
它是虚函数,所以你的EDIT控件ovrride它了,你把EDIT放在FORM上,现在焦点不在FORM上就会执行EDIT的
WndProc.
在EDIT的KEYDOWN里写下
SendMessage(Handle,WM_KEYDOWN,key,0);
begin
if key='a' then Label1.Caption:='a';
end;如果非要按你的麻烦的做法用ApplicationEvents捕捉的话,那就这样写了
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (msg.wParam=65) and (msg.message=256) then Label1.Caption:=Label1.Caption+'a';
end;
这个问题我也碰到过,就是因为edit获得了焦点.把他disabled掉就好了 再放个BUTTON上去看看,你不能都disabled啊
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm2 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure onAppMsg(var Msg: TMsg; var Handled: Boolean);
end;var
Form2: TForm2;implementation{$R *.dfm}procedure TForm2.FormCreate(Sender: TObject);
begin
Application.OnMessage:=onAppMsg;
end;
procedure TForm2.onAppMsg(var Msg: TMsg; var Handled: Boolean);
begin
if (Msg.message=WM_KEYDOWN) and (Msg.wParam=ord('B')) then
begin
close; //按下B即可关闭该窗口
end;
end;
end.