我在主窗体下动态创建了一个窗体,在这个动态创建的窗体中,我又动态创建了一个窗体,在第二个动态创建的窗体下,我想用第一个动态创建的窗体内的东西(比如对一个Edit的text进行赋值),我试了不能成功·怎么回事?要实现这个功能该怎么办?
我的代码是:
Form2.Edit1.Text:='123';
uses 我用了,
代码很简单
第一个在主窗体下的button的click事件
procedure TForm1.Button1Click(Sender: TObject);
var form2:tform2;
begin
form2:=tform2.Create(application);
form2.Parent:=form1;
form2.Show;
end;第二个在上一个窗体下的button的click事件
procedure TForm2.Button1Click(Sender: TObject);
var form3:tform3;
begin
form3:=tform3.Create(self);
form3.Parent:=form2;
form3.Show;
end;在第三个窗体下
procedure TForm3.Button1Click(Sender: TObject);
begin
form2.Edit1.Text:='456';
end;
我的代码是:
Form2.Edit1.Text:='123';
uses 我用了,
代码很简单
第一个在主窗体下的button的click事件
procedure TForm1.Button1Click(Sender: TObject);
var form2:tform2;
begin
form2:=tform2.Create(application);
form2.Parent:=form1;
form2.Show;
end;第二个在上一个窗体下的button的click事件
procedure TForm2.Button1Click(Sender: TObject);
var form3:tform3;
begin
form3:=tform3.Create(self);
form3.Parent:=form2;
form3.Show;
end;在第三个窗体下
procedure TForm3.Button1Click(Sender: TObject);
begin
form2.Edit1.Text:='456';
end;
但是如果这样的话就会引起循环引用,form2引用form3,form3又引用form2,这是delphi所不允许的
解决方法:
你这种情况可以定义一个公用的unit文件,里面定义一些变量用于存放你需要在页面间传递的数据
你可以在form2里把数据存进去,然后在form3里读出来
不知有没有别的办法?
在delphi 中form2中引用了unit3后,在form3中不是可以在用uses unit2的吗?
是在这种情况下不能传递数据吗?
在unit3中uses unit1;
(private)
var m_from2:TForm2;
(public)
procedure SetInForm2(Ffrom:Torm2)
{
m_from2 =Ffrom;
}
////
if(m_from2<>nil) m_from2.).edit1.text='456';
m_from2.update();