首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi 子窗体或者 formstyle:fsNormal 打开第一次没有事,再打开出错,为什么?解决方案

2012-02-27 
delphi 子窗体或者 formstyle:fsNormal打开第一次没有事,再打开出错,为什么?procedure TDayFundReportForm

delphi 子窗体或者 formstyle:fsNormal 打开第一次没有事,再打开出错,为什么?
procedure TDayFundReportForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := Cafree;
end;  


这个是我从网上查的。急呀。同志们。兄弟们。

[解决办法]
因为你已经把TDayFundReportForm,free掉,第二次打开要重新创建才可以。

建议如果在关闭事件中,不需要执行其他操作。就不要用FormClose事件。

直接在TDayFundReportForm上加个按钮,里面写close;即可。
[解决办法]
Action := Cafree;你这句话是在关闭的时候释放窗体,所以你再次打开的时候,需要重新创建,或者你把Action := caHide就可以了。
[解决办法]
Action := Cafree只是在窗体关闭的时候把对象内存释放,但是你的DayReport1Form变量指针没有变,依然指向一个内存地址,所以你的Assigned(DayReport1Form)的时候,依然返回True,只不过这时候指针指向的内存地址数据已经没有了,所以你调用下面这几个句子就会报错。
 begin //子窗体已存在
DayReport1Form.bringtofront; //放到最前面
DayReport1Form.setfocus; //获得焦点
DayReport1Form.WindowState := wsMaximized;
end;

建议用2楼说的那种方式,手动释放窗体,FreeAndNil(DayReport1Form)
[解决办法]
应该是先Free了,第二次打开时没有Create
[解决办法]
窗体 释放时用freeandnil

热点排行