关于赋值问题
现在有一个赋值问题:
主界面上有一个PANEL,专门用来嵌套form.
form1已经嵌套在主界面的panel中,form1有一个EDIT,BUTTON,现在点击BUTTON跳出界面form2,想从form2里赋值一个字符串给form1.edit1.text,但执行以下语句,form1里没反应.
Tform1.Button1Click()
begin
form2.showmodal;
end;
Tform2.Button1Click()
begin
form1.edit1.text :=edit2.text;
close;
end;
声明:如果form1不嵌套在主界面的panel中,一切都正常.
如果form1嵌套在主界面的panel中,form2的这个值该怎么样传递给form1?
[解决办法]
你的问题所在:
Form1 嵌入于Panel,所以是动态创建,而你的Form1又是另外由Application自动创建,实际上你的应用程序里头有两个TForm1对象,Form2的Button1Click的动作,应用程序可能认为是对Application自动创建的Form1上对象操作,而Application自动创建对象此时并没有显示出来,所以就出现你所述问题。
解决办法:
Project->Options->Forms,把Form1从自动创建窗口对象中移除。
[解决办法]
是Form1没有创建吧?
在窗体OnCreate里头写上
Form1 := TForm1.Create(self);
Form1.Parent := Panel;
Form1.Align := alClient;
Form1.Show;
另外,检查一下Form2对象是否实例化
[解决办法]
嘿嘿,菜鸟,自己找原因吧,估计是在某Form里头创建自身,而后又引发OnCreate事件,导致死循环 ^_^
[解决办法]
Tform1.Button1Click() begin if form2.showmodal= mrok then form1.edit1.text:=form2.edit2.text; end; Tform2.Button1Click() begin modalresult:=mrok; end;