多个form的问题(20分)

  • 主题发起人 主题发起人 sugarsun
  • 开始时间 开始时间
S

sugarsun

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个mainform属性为fsMdiform,按它上面一按钮btn1,动态生成一个窗体form2属性fsMdichild(子程序)
上面还有个按钮byn2,click生成一个form3(包含一个memo)显示一些计算结果数据,可正常运行,按主窗口的按钮
动态生成了form2,但click form2上的btn2提示异常(project1 raised exception class EAcess violation
with message' access violation at address XXX in module project1.exe of address XXX',process
stopped.)程序中止了form2上btn2的代码是
procedure Tform3.btn2Click(Sender: TObject);
begin
Tform3.Create(Application);(试过只有这句的话,是可以正常生成form3的)
form3.memo1.text:='ok';(对其他form3上的控件赋值都出现异常)
end;
为什么不能赋值?已经引用了unit3了
 
procedure Tform2.btn2Click(Sender: TObject);
begin
Form3 := Tform3.Create(Application);
form3.memo1.text:='ok';
end;

注意:form3不能是MDIChildForm
 
Tform3.Create(Application);(试过只有这句的话,是可以正常生成form3的)
form3.memo1.text:='ok';(对其他form3上的控件赋值都出现异常)
改为
form3:=Tform3.Create(Application);
form2.show;
form3.memo1.text:='ok';
 
原来是这样,多谢
nicklung:为什么form3不能是mdichild,我试过可以的阿
ysai:create后一定要show吗?好像create了就show了,有无 必要加show
 
to sugarsum:
你的错误主要是因为form3没有初始化。是你想当然以为初始化了。
你看看你写的这句
Tform3.Create(Application);(试过只有这句的话,是可以正常生成form3的)
?这句是正常生成了form3吗,你想一想,它没有,
你必须把这句话赋值给form3,对不对。
另外只有子窗体可以不用show.(同样的它也不能Hide)其它的窗体就要Show.
 
多人接受答案了。
 
后退
顶部