Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1260291
  • 博文数量: 788
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 7005
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-19 15:52
文章存档

2017年(81)

2011年(1)

2009年(369)

2008年(337)

分类:

2009-04-22 11:00:58



本人用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);



--------------------------
新闻:大脑推客:通过电脑思考即可发布Twitter消息
网站导航: 博客园首页  新闻  .NET频道  社区  博问  闪存  找找看
阅读(1346) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~