2010-03-20 5 views
0

나는이 나사로 프로그램이 있습니다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.OnClick에에 "OnTlacitkoClick"에 지정된 매개 변수의 수가 잘못을 = OnTlacitkoClick; 표현. 나는 이것을 델파이의 합법적 인 표현이라고 생각하고 생각했다. 이 절차를 호출하지 말고 tlac.OnClick 이벤트로 OnTlacitkoClick을 등록하기 만하면됩니다. 어떤 코드가 잘못되었거나 Lazarus/Freepascal에서 다르게해야합니까?

감사합니다.

답변

6

이미 알고 계시 겠지만 @을 추가하거나 Delphi 모드를 활성화하십시오.

(obj) fpc 모드에서 일부 명시적인 경우를 명확하게하려면 @를 사용해야합니다.

2

예, 이미 사용 중입니다. 나는 Tlac을해야합니다 .OnClick : = @ OnTlacitkoClick; 단순히 '@'대신에.

관련 문제