可以实现某个窗体的
ME:=NIL;这个样子?
ME:=NIL;这个样子?
解决方案 »
- Delphi做的第一个ie插件
- fastreport导出PDF后会丢失局部
- 关于combobox.selstart的问题
- ComPort Library这个控件的使用问题
- 如何每次将新添加到数据库的记录移到最底部? 就好像写字一样. 急, pls help!!!
- 主从表问题
- 谁能帮我设计一个10进制转换到60进制的程序呀
- 主明细表中,父表记录用dbedit录入,明细表记录要根据主表字段的值从其它表中挑出供修改后保存。那么,明细表的记录的插入写在哪个事件中较好?
- 能制造音乐贺卡的软件是怎么做出来的?是封装了编译器吗?
- 使用API函数,有没有什么技巧????
- 高人帮忙,为何我用不了PosEx?
- 用ODBC连sybase12.5的问题,急急急急!在线等!
action:=cafree;
self:=nil;但是关闭子窗体的时候没有问题,再次打开子窗体时报错误。
begin
Application.CreateForm(TfrmPrdtSet, frmPrdtSet);
frmPrdtSet.Show;
end
else
begin
frmPrdtSet.Show;
frmPrdtSet.BringToFront;
end;
这个是我打开窗体的代码,这样还是出错误
self:=nil; // 这里没有意义了,编译器优化掉了这里问题是你销毁了frmPrdtSet的实体部分,但他的指针可能指向了一个无效空间,Assigned的时候,判断出错,你跟踪这里吧。
改为frmPrdtSet:=nil才可以
if not Assigned(frmPrdtSet) then
那么,应该改成如何判断呢?
self=nil;
改为frmPrdtSet:=nil就行了
除非你有其他的功能要求
if not Assigned(frmPrdtSet) then
begin
Application.CreateForm(TfrmPrdtSet, frmPrdtSet);
frmPrdtSet.Show;
end
else
begin
frmPrdtSet.Show;
frmPrdtSet.BringToFront;
end;
既然在关闭frmPrdtSet后就释放它了,为什么还需要写else里面的语句。直接改成这样更好点吧:
if not Assigned(frmPrdtSet) then
begin
Application.CreateForm(TfrmPrdtSet, frmPrdtSet);
frmPrdtSet.ShowModal;
frmPrdtSet:=nil;
end;
在一个类的实现里要把它的一个实例的变量置为nil是做不到的,只能是在创建这个实例的地方做这个工作