MVC Lazarus错误的参数数量

时间:2013-09-19 18:55:46

标签: model-view-controller controller compiler-errors lazarus

我正在尝试在lazarus中实现MVC模式,我已经创建了模型和视图(直接来自设计者)。现在,我正在编写“控制器”,但是当我尝试重新分配自动生成的方法“Button.OnClick”时,我遇到了编译错误:

controller.pas(31,44) Error: Wrong number of parameters specified for call to "QuitBtn"

控制器的构造函数:

constructor TController.Create(AModel : TGame ; AView : TFArena);
begin
  Model := AModel;
  FView := AView;

  {Compilation Error}
  FView.Quit.OnClick := TController.QuitBtn;
end;

程序:

procedure TController.QuitBtn(Sender : TObject);
begin
  ShowMessage('MVC READY');
end;       

从拉撒路自动生成的方法

procedure TFArena.QuitClick(Sender: TObject);
begin
  {Nothing because she's gonna be over assigned}
end;   

所以,两者都是相同的参数“Sender:TObject”

感谢您阅读

1 个答案:

答案 0 :(得分:3)

OnClick事件必须实现实例的方法。您已经传递了方法的代码部分,但是缺少数据,即实例。

您必须掌握TController的实例。现在,由于您的代码在TController的构造函数中运行,因此您手头有其中一个。所以就这样写:

FView.Quit.OnClick := Self.QuitBtn;

当然,你总是可以省略习惯性的自我。

FView.Quit.OnClick := QuitBtn;

我也不确定QuitBtn是一个很棒的事件处理程序名称。这听起来更像是UI小部件的名称。

也许您正在使用需要@运算符生成方法引用的编译器模式:

FView.Quit.OnClick := @QuitBtn;