delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
请教如何在onshow事件里退出. Delphi / Windows SDK/API
http://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);

posted on 2009-04-22 10:44 delphi2007 阅读(346) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。