有时,你希望对事件的响应函数只执行一次,比如当 Form 第一次显示时。你可以使用 OnShow 或 OnActivate 事件。问题是每次 form 显示或被激活时事件响应函数都会被调用,这不合我们的要求。其实有一个很简单的解决方法,就是在事件处理代码的第一行将此事件响应函数设为空(nil)。
回答:
下面列出代码:
procedure Tform1.FormActivate(Sender: TObject);
begin
OnActivate := nil;
// The rest of your code goes here
end;
procedure Tform1.FormShow(Sender: TObject);
begin
OnShow := nil;
// The rest of your code goes here
end;
就这么简单,你就可以达到对某个事件只响应一次的要求。显然它对所有事件都适用。