读书人

delphi 子窗体或者 formstyle:fsNorma

发布时间: 2012-02-27 10:00:22 作者: rapoo

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

读书人网 >.NET

热点推荐