mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-12 09:09:37 +02:00
61 lines
1.0 KiB
ObjectPascal
61 lines
1.0 KiB
ObjectPascal
{$mode objfpc}{$H+}
|
|
|
|
uses classes,typinfo;
|
|
type
|
|
TA = class(TPersistent)
|
|
private
|
|
FOnTest: TNotifyEvent;
|
|
procedure SetOnTest(value: TNotifyEvent);
|
|
public
|
|
procedure CallTest;
|
|
published
|
|
property OnTest: TNotifyEvent read FOnTest Write SetOnTest;
|
|
end;
|
|
|
|
TB = class
|
|
public
|
|
procedure Test(Sender: TObject);
|
|
end;
|
|
|
|
procedure TA.SetOnTest(value: TNotifyEvent);
|
|
begin
|
|
FOnTest := Value
|
|
end;
|
|
|
|
procedure TA.CallTest;
|
|
begin
|
|
if Assigned(FOnTest) then
|
|
OnTest(self)
|
|
else
|
|
WriteLn('OnTest no set');
|
|
end;
|
|
|
|
procedure TB.Test(Sender: TObject);
|
|
begin
|
|
WriteLn('Test Called');
|
|
end;
|
|
|
|
var
|
|
A: TA;
|
|
B: TB;
|
|
PropInfo: PPropInfo;
|
|
Method: TMethod;
|
|
begin
|
|
A := TA.Create;
|
|
B := TB.Create;
|
|
|
|
Method:=TMethod(@B.Test);
|
|
|
|
PropInfo:=GetPropInfo(A.ClassInfo, 'OnTest');
|
|
if Assigned(PropInfo) then begin
|
|
SetMethodProp(A, PropInfo, Method);
|
|
WriteLn('Testing SetMethodProp method');
|
|
A.CallTest;
|
|
end
|
|
else begin
|
|
WriteLn('PropInfo for ''OnTest'' not found');
|
|
Halt(1);
|
|
end;
|
|
end.
|
|
|