大家来看在函数体内用Assigned测试形参ASubForm: TSubForm,为什么总是False???
我想向函数传递一个form,如果该form已经构造,那么直接显示,否则create后再显示
但是Assigned(ASubForm)总是为Falseprocedure TMainForm.LoadSubForm(ASubForm: TSubForm;
ASubFormClass: TSubFormClass; AAction: TAction);
begin
if (not Assigned(ASubForm)) then //这一句
ASubForm := ASubFormClass.Create(Application); with ASubForm do
begin
Title := AAction.Caption;
Parent := pnlClient;
OnDestroy := SubFormDestroy;
Show;
end;
end;
我想向函数传递一个form,如果该form已经构造,那么直接显示,否则create后再显示
但是Assigned(ASubForm)总是为Falseprocedure TMainForm.LoadSubForm(ASubForm: TSubForm;
ASubFormClass: TSubFormClass; AAction: TAction);
begin
if (not Assigned(ASubForm)) then //这一句
ASubForm := ASubFormClass.Create(Application); with ASubForm do
begin
Title := AAction.Caption;
Parent := pnlClient;
OnDestroy := SubFormDestroy;
Show;
end;
end;
解决方案 »
- 如何在DBGrid中取得某一单元格中的内容,100分相送
- adotable添加记录时的问题
- 怎么获得路径?(在线等!)
- ***********怎样写代码使大的JPG图片文件,象ACDSEE的Fit image功能一样显示一个完整而不失真的效果!****
- Delphi中如何连接打开VFP数据库?
- 菜鸟提问,在线等待~~~~~~~~
- 如何在form上,直接输出数值?
- 怎么样把A表中一条记录,移植到B表中,A表中这条记录自动删除?
- 请熟悉c++builder+sql的朋友帮我看看下面这段adoquery的SQL使用参数传递变量的代码错在哪
- 老大们,各位帅哥们,帮帮忙吧(数据库的报错问题)
- Invalid floating point operation错误如何解决?
- 昨天拿到转正后第一个月的工资,结果给吓呆了,大家看看,我该怎么办,想跟丫的拼了
或者使用全局/静态变量,就是写在过程体外的,interface或implementation的。这种变量delphi会自动初始化。
我目前传给ASubForm的是全局变量
但是第一次调用Assigned(ASubForm)时结果为False
但ASubForm := ASubFormClass.Create(Application);后
第二次调用Assigned(ASubForm)时仍然为False
ASubFormClass: TSubFormClass; AAction: TAction);
在的释放事件中加入:
ASubForm:=NIL;
对象参数是不允许加var的