是否可以在事件处理程序中停止事件消息传递?

时间:2017-12-06 00:34:53

标签: delphi

我处于不愉快的境地。当一个孩子改变其状态时,它会调用其父级来响应此更改。在我的情况下,父母会摧毁它的所有孩子并重新创建它们。之后,程序返回到原始调用者已被解除引用的位置。

虽然我现在看到,这是一个不好的做法,我必须改变整个哲学,但为了好奇,是否有可能在例程结束时停止执行?

这只是一个简单的说明:

 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;

0 个答案:

没有答案