pas2js/demo/rtl/democomponents.lpr
2017-12-27 11:07:20 +00:00

68 lines
1.4 KiB
ObjectPascal

program democomponents;
uses browserconsole, Classes;
Type
TMyGeneration = (first,second,third);
{ TMyParentComponent }
TMyParentComponent = Class(TComponent)
private
FMyProperty: TMyGeneration;
Published
Property MyProperty : TMyGeneration Read FMyProperty Write FMyProperty;
end;
{ TMyChildComponent }
TMyChildComponent = Class(TMyParentComponent)
Public
destructor Destroy; override;
end;
Var
DestroyCount : Integer;
{ TMyChildComponent }
destructor TMyChildComponent.Destroy;
begin
DestroyCount:=DestroyCount+1;
Writeln('Destroying child "',Name,'", current count : ',DestroyCount);
inherited Destroy;
end;
Var
P : TMyParentComponent;
C : TMyChildComponent;
Ci : TComponent;
begin
P:=TMyParentComponent.Create(Nil);
try
P.Name:='Parent1';
P.MyProperty:=First;
C:=TMyChildComponent.Create(P);
C.Name:='Child1';
C.MyProperty:=Second;
C:=TMyChildComponent.Create(C);
C.Name:='Child2';
C.MyProperty:=Third;
C:=TMyChildComponent.Create(P);
C.Name:='Child3';
C.MyProperty:=Second;
Writeln('Components for loop');
For CI in P do
begin
Write(CI.Name,', is child : ',C is TMyChildComponent,' ');
If C is TMyChildComponent then
Write('My property : ',TMyChildComponent(C).MyProperty);
Writeln('');
end;
finally
P.Destroy;
end;
end.