【发布时间】:2014-06-08 16:17:14
【问题描述】:
如果没有分配一个事件处理程序,我想在构造函数中分配一个事件处理程序。因此,我想删除析构函数中最终分配的事件处理程序。我写的代码如下,但无法编译。
constructor TSomeControl.Create(Panel: TPanel);
begin
inherited Create;
FPanel := Panel;
if not Assigned(FPanel.OnResize) then
FPanel.OnResize := HandlePanelResize;
end;
destructor TSomeControl.Destroy;
begin
if @FPanel.OnResize = @HandlePanelResize then // [dcc32 Error] E2036 Variable required
FPanel.OnResize := nil;
FPanel := nil;
inherited;
end;
如何正确测试它?我知道一个解决方案是使用一个变量来记录,我是否已经分配了OnResize。但我不希望这是解决方案。
【问题讨论】:
标签: delphi event-handling