Image控件怎么响应键盘信息??
我现在在一个delphi窗体上覆盖了一个Image控件,可是Image控件的事件里没有键盘的响应函数,不知道压哦怎么解决,希望大虾们赐教啊!
直接写再窗体的onKeyPress上
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
ShowMessage('on key press'+key);
end;
或者截获wm_keydown消息
直接写在窗体的onKeyPress上我试了不行啊?我现在是在Image控件上又加了个Image控件,一个是作为背景,另一个才是要响应键盘信息的。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure MyonMessage(var Msg: tagMSG;
var Handled: Boolean);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.MyonMessage(var Msg: tagMSG; var Handled: Boolean);
begin
if msg.message = WM_KEYDOWN then
Caption := 'OnKeyDown:'+chr(msg.wParam)+':'+inttostr(Msg.wParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := MyonMessage;
end;
end.
注:所有设置都是默认的。
IMAGE是没有键盘事件的,所以你需要自己添加
举个简单的例子,响应回车键
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
Image1.Canvas.TextOut(20,20,'Image成功响应回车键');
end;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure MyonMessage(var Msg: tagMSG;
var Handled: Boolean);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.MyonMessage(var Msg: tagMSG; var Handled: Boolean);
begin
if (msg.message = WM_KEYDOWN) then
begin
case Msg.wParam of
VK_LEFT : Image2.Left := Image2.Left-1;
VK_RIGHT : Image2.Left := Image2.Left+1;
end;
end;
// Caption := 'OnKeyDown:'+chr(msg.wParam)+':'+inttostr(Msg.wParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered := true;//
Application.OnMessage := MyonMessage;
end;
end.