这样为什么也报错:(请进来一瞧,刚才的问题,转眼间已给翻到后页)(100分)

  • 主题发起人 主题发起人 tl_lyq
  • 开始时间 开始时间
T

tl_lyq

Unregistered / Unconfirmed
GUEST, unregistred user!
这样为什么也报错:
procedure MouseDown(Sender: TObject
Button: TMouseButton;
Shift: TShiftState
X, Y: Integer);
begin
if Button <> mbRight then
begin
ReleaseCapture;
(sender as tspeedbutton).Perform(WM_SysCommand, $f017, 0);
end;
end;

procedure Tjtplt1.SpeedButton1Click(Sender: TObject);
begin
(sender as tspeedbutton).OnMouseDown :=mousedown;{运行至此报错。incompatible types:"tobject" and "tmousedown"}
end;
 
运行时sender的实例诺不是tspeedbutton或其子类的话就会报错

而且mousedown应该是一个方法而不是普通的过程。这样的代码应该无法通过的
 
首先,不应该把过程名命名为mousedown,这样会和delphi的mousedown事件同名,
改一下名字就好了;
另外,是不是声明不对?
procedure MouseDown(Sender: TObject
Button: TMouseButton;
Shift: TShiftState
X, Y: Integer);
==>procedure Tjtplt1.MouseDown(Sender: TObject
Button: TMouseButton;
Shift: TShiftState
X, Y: Integer);
还要在接口部分加上声明.
 
同意firemetror的说法
 
后退
顶部