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):عدد خاطئ من المعلمات المحددة لاستدعاء "OnTlacitkoClick" في tlac.OnClick:=OnTlacitkoClick؛تعبير.لقد بحثت وأعتقد أن هذا هو التعبير القانوني في دلفي.أريد ببساطة تسجيل OnTlacitkoClick كحدث tlac.OnClick، وليس استدعاء هذا الإجراء.هل هناك خطأ ما في الكود أم يجب أن أفعل ذلك بشكل مختلف في Lazarus/Freepascal؟
شكرًا.
المحلول
كما تعلمت بالفعل، أضف @ أو قم بتمكين وضع دلفي.
في وضع (obj)fpc، يكون @ الصريح مطلوبًا لتوضيح بعض الحالات المشبوهة.
نصائح أخرى
نعم، لدي بالفعل!يجب أن أفعل Tlac.OnClick:=@OnTlacitkoClick;بدلاً من ببساطة بدون "@".
لا تنتمي إلى StackOverflow