Array Properties SubClass
|
Smart pascal source code
type
TSub = class
Field: Integer;
procedure Proc;
procedure SetProp(v: string);
property Prop: string write SetProp;
end;
type
TTest = class
function GetSub(x: Integer): TSub;
property Sub[x: Integer]: TSub read GetSub; default;
end;
procedure TSub.Proc;
begin
Writeln('Sub ' + IntToStr(Field));
end;
procedure TSub.SetProp(v: string);
begin
Writeln('SetProp ' + IntToStr(Field) + ': ' + v);
end;
function TTest.GetSub(x: Integer): TSub;
begin
Result := TSub.Create;
Result.Field := x;
end;
{ TApplication }
procedure TApplication.RunApp;
var
t := TTest.Create;
Begin
(t).Sub[0].Proc;
(t.Sub[1]).Proc;
t.Sub[2].Proc;
(t).Sub[0].Prop := 'a';
(t.Sub[1]).Prop := 'b';
t.Sub[2].Prop := 'c';
(t).GetSub(10).Proc;
(t.GetSub(11)).Proc;
t.GetSub(12).Proc;
(t).GetSub(10).Prop := 'a';
(t.GetSub(11)).Prop := 'b';
t.Sub[12].Prop := 'c';
{ CONSOLE OUTPUT
SetProp 0: a
SetProp 1: b
SetProp 2: c
SetProp 10: a
SetProp 11: b
SetProp 12: c
}