我处于不愉快的境地。当一个孩子改变其状态时,它会调用其父级来响应此更改。在我的情况下,父母会摧毁它的所有孩子并重新创建它们。之后,程序返回到原始调用者已被解除引用的位置。
虽然我现在看到,这是一个不好的做法,我必须改变整个哲学,但为了好奇,是否有可能在例程结束时停止执行?
这只是一个简单的说明:
TPerson = class(TPersistent)
private
FOnChange:TNotifyEvent;
FName:string;
published
property OnStatusChange:TNotifyEvent read FOnChange write FOnChange;
property Name:string read FName write FName;
end;
.... form declaration....
implementation
procedure TForm1.FormCreate(Sender: TObject);
begin
FPerson.OnStatusChange:=ProcessStatusChange;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FPerson.Free;
end;
procedure TForm1.ProcessStatusChange(Sender:TObject);
begin
btn1.free;
// and here I would like to call something like STOP
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
if Assigned(FPerson.OnStatusChange) then FPerson.OnStatusChange(Self);
ShowMessage(btn1.Name); //btn1 does not exist anymore
end;