请教如何在onshow事件里退出. Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiBase/html/delphi_20061206144507264.html
本人用delphi 6写了一个dll,dll里创建了名为frm_user_defined_report_forms的from。本人想在这个from的onshow事件做个判断然后符合件就退出。代码如下:
procedure Tfrm_user_defined_report_forms.FormShow(Sender: TObject);
begin
inherited;
Init;
BtnOpenClick(BtnOpen);
if fa=1 then
begin
if Assigned(frm_user_defined_report_forms) then
frm_user_defined_report_forms.Close;
end;
end;
结果能退出,但再进去或退出这个系统时出现地址端口栏错误。本人也试用freeandnil()函数去清空,但仍然不行。请教各位如何修改这段onshow事件的代码令到它能在onshow事件里退出。
halt(0)
halt(0)开始我也想过用,但是它是退出整个系统,而我只是想退出这个dll并清空它再进去不会出现地址端口错误,所以这个halt(0)不合适.
在窗体的Destory事件里写代码释放掉不可以吗
先D顺便JF
FreeAndNil(frm_user_defined_report_forms);
退出是最安全的,窗体内存被释放。
不过,不知道你从DLL外面如何创建的窗体。这个也是后面可能会出错的地方呢。因为这一次退出时释放了资源,那么下一次进入时创建不正确就会出错。
楼主你思路不对。 为什么非要在他已经SHOW后才判断它。
将没SHOW之前就判断它。
buttonOnclick()
begin
if not Assigned(frm_user_defined_report_forms) then
frm_user_defined_report_forms.show;
end;
最好的解决办法是象楼上说的一样,从设计上就避免这样的情况.
想法上的问题。
--------------------------------------------------------------
程序,犹如人生。
既然都已经show了,为什么非要在onshow的时候退出呢?
程序设计有问题
这个窗口能打开么?
在OnShow的时候Post一个Message,WM_QUIT
PostMessage(Handle, WM_QUIT, 0, 0);