Aber der Wert Vec.b wird trotzdem angenommen.
Code: Alles auswählen
{ TVec }
TVec = class
a, b, c: integer;
end;
{ TTest }
TTest = class
private
FVec: TVec;
procedure SetVec(AValue: TVec);
public
property Vec: TVec read FVec write SetVec;
constructor Create;
destructor Destroy; override;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TTest }
procedure TTest.SetVec(AValue: TVec);
begin
WriteLn('SetVec');
FVec := AValue;
with FVec do begin
WriteLn(a, ' ', b, ' ', c);
end;
end;
constructor TTest.Create;
begin
inherited Create;
FVec := TVec.Create;
end;
destructor TTest.Destroy;
begin
FVec.Free;
inherited Destroy;
end;
var
Test: TTest;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
Test.Vec.b := 10;
with Test.Vec do begin
WriteLn('Click: ', a, ' ', b, ' ', c);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Test := TTest.Create;
end;