试试这样创建窗体:
在form1中:
form2:=Tform2.create(self);在form2中:
form3:=Tform3.create(self);在form2中调用form1的控件可以这样:
Tfrom1(owner).edit1.text:='OK'!在form3中调用form2的控件可以这样:
Tfrom2(owner).edit1.text:='OK'!
在form1中:
form2:=Tform2.create(self);在form2中:
form3:=Tform3.create(self);在form2中调用form1的控件可以这样:
Tfrom1(owner).edit1.text:='OK'!在form3中调用form2的控件可以这样:
Tfrom2(owner).edit1.text:='OK'!
所以, Form2 的 Caption 是可用的,因为 CreateWindow(Ex) 已经被执行。
但其他的(子)控件却是不可用的。在 Form2.OnShow() 中处理 Form3 的 ShowModal() 就可以了。
对于要引用的单元中的全局变量, 有可能有写操作(赋值)的, 方在interface中的uses
对于要引用的单元中的全局变量, 没有写操作的, 方在implementation中的uses对于对象, 只要针对对象变量本身没有写操作的, 也应该放在implementation中.
比如:unit a;type ta=class(tobject)
public
i:integer;
end;var aa:ta;那么对于 aa.i:=10;之类的, 就只要在implementation的uses中声明一下a就可以了
而对:
aa:=ta.create; 或者:var b:ta;
b:=ta.create;
b.i:=10;
aa:=b;
之类的, 就要放在interface中声明了.其实interface个implementation中的uses有点象函数的变量声明, var=interface uses,
可以带回返回值, 而implementation uses就只能引用了.