请教关于不用Image控件实现Image.OnMouseDown事件的方法!(40分)

  • 主题发起人 主题发起人 大福星
  • 开始时间 开始时间

大福星

Unregistered / Unconfirmed
GUEST, unregistred user!
我没有用Image控件,而是直接调用了TImage对象:
var
Image1:TImage;
begin
Image1:=TImage.Create(self);
Image1.Parent:=Form1;
................
现在想用Image的OnMouseDown事件,应该怎么实现呢?

倾情大奉送,最后40分!
 
先声明如下过程:
procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
......
end;

然后
Image1:=TImage.Create(self);
Image1.Parent:=Form1;
Image1.Onmousedown:=mousedown;

 
Brave 提供的方法报incompatible type 的错误!
 
你从控件那里建立一个MouseDown事件看看应该是怎样的,再建一个相同的过程试试。
 
自己看看是哪句报错吧。
方法定义是没有问题的
 
好像动态事件响应赋值方法MouseDown必须是类方法,在你的Form类的private part声明。
 
我的例子,image1创建了,没有释放,为了说明问题就行了。
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
image1:TImage;
procedure MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
Image1:=TImage.Create(self);
Image1.Parent:=Form1;
Image1.Onmousedown:=mousedown;
end;

procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
showmessage('sdf');
end;

end.
 
接受答案了.
 
这是一个事件指针的问题
楼上所说
Image1.Onmousedown:=mousedown;就是对时间指针复直
 
后退
顶部