delphi里的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控件向左移动一下,实现微调功能,这样的话哪里去触发这个事件呢??上面的大虾好象不能解决吧??!
我是想按一下向左健能使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
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
Application.OnMessage := MyonMessage;
end;
end.
;//上面代码在连续操作的时候,会有闪烁,在create的时候,加上下面的内容
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered := true;//加上这一句。
Application.OnMessage := MyonMessage;
end;
end.