Events 拉扎勒斯-为什么我能';是否将事件分配给运行时组件?

Events 拉扎勒斯-为什么我能';是否将事件分配给运行时组件?,events,onclick,pascal,lazarus,freepascal,Events,Onclick,Pascal,Lazarus,Freepascal,我有一个Lazarus计划: unit Unit2; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, ComCtrls; type { TForm2 } TForm2 = class(TForm) procedure OnTlacitkoClick(Sender:

我有一个Lazarus计划:

unit Unit2; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, ComCtrls;

type

  { TForm2 }

  TForm2 = class(TForm)
    procedure OnTlacitkoClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
    tlac:TButton;
  private
    { private declarations }
  public
    { public declarations }
  end;



var
  Form2: TForm2;

implementation

{ TForm2 }

procedure TForm2.OnTlacitkoClick(Sender: TObject);
begin
  showmessage('helloworld');
end;

procedure TForm2.FormCreate(Sender: TObject);
var i,j:integer;
begin
  tlac:=TButton.Create(Form2);
  tlac.OnClick:=OnTlacitkoClick;
  tlac.Parent:=Form2;
  tlac.Left:=100;
  tlac.Top:=100;
end;

initialization
  {$I unit2.lrs}

end.
但编译器说:unit2.pas(63,32)错误:为调用tlac中的“OnTlacitkoClick”指定的参数数目错误;表情。我搜索过,认为这是德尔菲的法律表达。我只想将OnTlacitkoClick注册为tlac.OnClick事件,而不是调用此过程。是否有人认为代码有问题,或者我必须在Lazarus/Freepascal中做不同的事情


谢谢。

是的,我已经有了!我必须执行Tlac.OnClick:=@OnTlacitkoClick;不要像您已经发现的那样简单地不使用“@”。

,而是添加@或启用Delphi模式

在(obj)fpc模式中,需要显式@来消除某些可疑情况的歧义