var
FChild:TFrm_UserAdd;
begin
inherited;
//if not assigned(FChild) then
if assigned(FChild)<>nil then (我这句怎么通不过呢???)
begin
FChild:= TFrm_UserAdd.Create(Application);
FChild.Show ;
end
else
FChild.BringToFront; //把它Show在最前面
//Frm_UserAdd.Show;
end;
FChild:TFrm_UserAdd;
begin
inherited;
//if not assigned(FChild) then
if assigned(FChild)<>nil then (我这句怎么通不过呢???)
begin
FChild:= TFrm_UserAdd.Create(Application);
FChild.Show ;
end
else
FChild.BringToFront; //把它Show在最前面
//Frm_UserAdd.Show;
end;
解决方案 »
- 请教一个计算面积的算法问题
- 我怎么知道我页面上使用的控件是那个tool palettel上的?
- 怎么好像很少人用report machine??
- 求送分:解析dbgrideh.columns[i].OnUpdataData事件的个参数意义和用法示例
- 有没有什么VCL树控件和数据库联系紧密的?
- 有没有判断两个IP是不是在同一网段的方法
- 在MDIForm上如何访问MDIChild上的控件属性
- 请教高手:如何根据已知IP地址查询局域网中对应网卡的MAC地址
- 关于浏览文件夹
- 请教如何设置两个表之间的记录指针关系?急急急啊。
- 求:一条十分简单的SQL语句
- 请各路神仙讨论一下:D5、D6、D7之间到底有什么区别?
这样改不行啊,这样就不停打开新的了。
还有没有其他的什么方法?
我找过论坛上的问题了,好像就提供这个方法啊
我怎么搞都通不过编译啊
不能用nil去判断。
FChild:TFrm_UserAdd;
begin
inherited;
//if not assigned(FChild) then
if assigned(FChild)<>nil then (我这句怎么通不过呢???)
begin
FChild:= TFrm_UserAdd.Create(Application);
FChild.Show ;
end
else
begin
FChild.Show;
FChild.BringToFront; //把它Show在最前面
//Frm_UserAdd.Show;
end;
end;
FChild:TFrm_UserAdd;
begin
inherited;
if not assigned(FChild) then
//if assigned(FChild)<>nil then (我这句怎么通不过呢???)
begin
FChild:= TFrm_UserAdd.Create(Application);
FChild.Show ;
end
else
begin
FChild.Show;
FChild.BringToFront; //把它Show在最前面
//Frm_UserAdd.Show;
end;
end;
用来判断一个对象是否是nil,返回值是布尔类型。True/False。所以你不能够<>nil判断分析你的错误:var
FChild:TFrm_UserAdd;
begin
inherited;
if assigned(FChild)<>nil then (我这句怎么通不过呢???)
//应该改为 if not assigned(FChild) then
begin
FChild:= TFrm_UserAdd.Create(Application);//对象创建再堆上,而指向实例的指针却在栈上,这个过程一运行结束,栈上的指针就被弹出了,这就是为什么你总是在这里创建了很多子窗体的原因,FChild的生存期必须在这个函数外。例如作为全局函数或者这个函数(如果这个函数是某个类的成员函数)所在类的public/private/protected/oublished域内定义
FChild.Show ;
end
else
FChild.BringToFront; //把它Show在最前面
//Frm_UserAdd.Show;
end;
if Not Assigned(FChild) then
begin
//创建并显示.........
end;
....
sub sp,####
这实际上是在栈中为了局部变量做一个存储区
我还是有些不明白,你指的是在public/private/protected/oublished定义变量
FChild:TFrm_UserAdd;还是定义一个函数,然后通过调用这个函数来创建窗体?
我刚才是用定义变量,结果窗体关了之后,再打开就会出现“
Abstract Error.”的错误消息!是不是在没有释放对象?
var
FChild:TFrm_UserAdd;
begin
// ... ...
end;这是局部变量,解决的办法是在参数中加 var AChild: TFrm_UserAdd 项,
if not Assigned(AChild) then
try
AChild := TFrm_UserAdd.Create(Self);
except
end;
这样就可以了。
FChild:TFrm_UserAdd; 申明不要加在过程中begin
inherited;
if assigned(FChild)=nil then // 或者 if not assigned(FChild) then
begin
FChild:= TFrm_UserAdd.Create(Application);
FChild.Show ;
end
else
begin
FChild.Show;
FChild.BringToFront; //把它Show在最前面
//Frm_UserAdd.Show;
end;
end;
public
FChild:TFrm_UserAdd;
里面啊,可是还是出错啊?
然后再想打开FChild,结果就报错Abstract Error
Form1: TForm1;
FChild:TFrm_UserAdd; //定义在这儿吧implementation
http://expert.csdn.net/Expert/topic/2104/2104559.xml?temp=.2713129谢谢了。