我在程序里动态创建多个窗体,把写好的close程序指定给它们。在关闭这些窗体的时候都调用同一个close,我想在close事件里用fillandnil实现free与赋Nil值,代码是:
procedure myform.subformclose(sender:tobject;var Action: TCloseAction);
begin
fillandnil(sender);
end;执行以后发现如果调用assigned(被关闭窗体),还是返回true,这是怎么回事啊?
能只利用窗体的name来完成对窗体的free与赋Nil吗?
procedure myform.subformclose(sender:tobject;var Action: TCloseAction);
begin
fillandnil(sender);
end;执行以后发现如果调用assigned(被关闭窗体),还是返回true,这是怎么回事啊?
能只利用窗体的name来完成对窗体的free与赋Nil吗?
begin
fillandnil(sender);
end;看一下区别的地方。
原因:引用过来的 Sender 没有修改最初的变量。
procedure subformclose(var sender:tobject)
这样写呢?
是不是想搞个for 循环,把所有Form的OnClose 都定位到这个函数上?
……
或许一条条写,也没什么吧?!
毕竟,在跑之前,还是得先走。
跑起来容易摔跤,走着可能安心很多。
不过现在已经解决了,我通过application.fincomponent定位窗体,然后把窗体赋值给TCOMPONENT变量,把这个这是传递给freeandnil。