现在有一个赋值问题: 主界面上有一个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有一个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从自动创建窗口对象中移除。
在窗体OnCreate里头写上Form1 := TForm1.Create(self);
Form1.Parent := Panel;
Form1.Align := alClient;
Form1.Show;另外,检查一下Form2对象是否实例化
begin
if form2.showmodal= mrok then
form1.edit1.text:=form2.edit2.text;
end; Tform2.Button1Click()
begin
modalresult:=mrok;
end;[/align]