delphi里的IMAGE控件怎么响应键盘啊?急!

我现在在一个delphi窗体上覆盖了一个Image控件,可是Image控件的事件里没有键盘的响应函数,不知道压哦怎么解决,希望大虾们赐教啊!
[70 byte] By [sjlvhj-吻星揽月] at [2008-4-9]
# 1
直接写再窗体的onKeyPress上
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
ShowMessage('on key press'+key);
end;

或者截获wm_keydown消息
# 2
直接写在窗体的onKeyPress上我试了不行啊?我现在是在Image控件上又加了个Image控件,一个是作为背景,另一个才是要响应键盘信息的。
sjlvhj-吻星揽月 at 2007-10-20 > top of Msdn China Tech,Delphi,非技术区...
# 3
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.
# 4
我是想按一下向左健能使Image控件向左移动一下,实现微调功能,这样的话哪里去触发这个事件呢??上面的大虾好象不能解决吧??!
sjlvhj-吻星揽月 at 2007-10-20 > top of Msdn China Tech,Delphi,非技术区...
# 5
我是想按一下向左健能使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.
# 6

;//上面代码在连续操作的时候,会有闪烁,在create的时候,加上下面的内容
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered := true;//加上这一句。
Application.OnMessage := MyonMessage;
end;

end.
# 7
谢谢!
sjlvhj-吻星揽月 at 2007-10-20 > top of Msdn China Tech,Delphi,非技术区...

Delphi Hot Topic