Lazarus-実行時コンポーネントにイベントを割り当てられないのはなぜですか?

StackOverflow https://stackoverflow.com/questions/2482949

質問

私はこのラザロプログラムを持っています:

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.onclick:= ontlacitkoclickで「ontlacitkoclick」への呼び出しに指定されたパラメーターの間違った数。表現。私は検索し、これがデルファイで法的表現であると考えています。この手順を呼び出すのではなく、ontlacitkoclickをtlac.onclickイベントとして登録するだけです。コードの問題はありますか、それともLazarus/Freepascalで違うことをしなければなりませんか?

ありがとう。

役に立ちましたか?

解決

すでにご存知のように、 @を追加するか、Delphiモードを有効にします。

(obj)fpcモードでは、明示的な @が怪しげなケースを明確にするために必要です。

他のヒント

はい、私はすでにそれを持っています!私はtlac.onclickをしなければなりません:=@ontlacitkoclick;単に「@」なしではなく。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top