Lazarus-実行時コンポーネントにイベントを割り当てられないのはなぜですか?
-
21-09-2019 - |
質問
私はこのラザロプログラムを持っています:
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;単に「@」なしではなく。
所属していません StackOverflow