我有一个form2,里面已经有很多控件RichEdit,button之类的控件.
而我现在定义了一个
newform: array[0..99] of TForm;
在另外一个窗体Mainform中,我单击mainform中的button,动态创建一个newform[i]
...
newform[i]:=TForm2.Create(form2.Owner);
...
newform[i].show; 我运行的时候可以得到一个和Form2一样的窗体,现在问题是我想在Mainform中直接用newform操纵richedit,button之类的控件,我是这样写的newform[i].richedit1,可是不行,我不能操众richedit.这是为什么,richedit1是FORM2中的控件呀,而newform是TForm2.Create的呀,那我要怎么做才能用newform[i]操纵richedit1呢?
而我现在定义了一个
newform: array[0..99] of TForm;
在另外一个窗体Mainform中,我单击mainform中的button,动态创建一个newform[i]
...
newform[i]:=TForm2.Create(form2.Owner);
...
newform[i].show; 我运行的时候可以得到一个和Form2一样的窗体,现在问题是我想在Mainform中直接用newform操纵richedit,button之类的控件,我是这样写的newform[i].richedit1,可是不行,我不能操众richedit.这是为什么,richedit1是FORM2中的控件呀,而newform是TForm2.Create的呀,那我要怎么做才能用newform[i]操纵richedit1呢?
newform: array[0..99] of TForm2; 即可。楼主无事时,可以思考一下 TForm2, TForm, newForm之间到底是个什么关系。
newform: array[0..99] of TForm; // 定义不变使用时可以这样:if (newForm[i] is TForm2) then
begin
(TForm2(newForm[i])).xxxxx
end;这里要说明一下:
上面的类型转换并非“强制”的,而是“软”的,可能返回 nil,所以先检查了一下newForm[i] 是不是TForm2类的实例(在你的程序里,当然是,可以不检查)。可以说,这里的转换与C++里的dynamic_cast是一样的。
newform: array[0..99] of TForm2;
newform[i]:=TForm2.Create(Nil);
newform[i].show;