如何在打开多个相同窗体后,里面再打开的窗体返回参数准确?(100分)

  • 主题发起人 主题发起人 LZ2000
  • 开始时间 开始时间
L

LZ2000

Unregistered / Unconfirmed
GUEST, unregistred user!
如: 用以下代码打开多个 Form1..如 打开 5个 Form1..
Form1:=TForm1.Create(Application);
Form1.Show;
Form1里有个按键可以打开 另一个窗体 Form2:
try
Form2:=TForm2.Create(nil);
Form2.ShowModal ;
finally
FreeAndNil(Form2);
end;

在已经打开多个 Form1 中,我选择其中一个Form1,
按键显示 Form2...然后不停按Form2的一个按键 :Form1.Edit1.Text := '你好';

但我发现, 能够接收 返回值 的 Form1,并不是 我 原来 按键弹出 Form2 的 Form1..
而是 某个 已打开的 Form1.....也就是说,Form2的返回值 不能 返回我原选择的 Form1里;

请问: 如何 可以 将 Form2 的 返回值 返回 我 原 打开Form2 的 form1..?

不知道 说得清楚不? 希望有人看得懂...
 
try
Form2:=TForm2.Create(nil);
Form2.ShowModal ;
finally
FreeAndNil(Form2);
end;
---------------------一打开就被你释放掉了,肯定些FORM对像不会存在堆中,因为以经被你释放了。
 
delphi创建的form1,由于不是ShowModal,只有第一个form可以使用Form1访问,其他的form其名称并不是form1,而是自动为Form1_1、form1_2...
要使用form2更新调用form2的form1,需要区分被调用者是那个form1
建议使用方法指针来更新
 
Form1:=TForm1.Create(Application);
Form1.Show;
你这样打开多个Form1,已经是多个Form1对象了,不具体指定某个Form1,在Form2中怎么知道要改变哪个Form1对象啊。。
最好是把Form1对象传给Form2对象这样就可以了。
try
Form2:=TForm2.Create(Form1);
Form2.ShowModal ;
finally
FreeAndNil(Form2);
end;
如果要打开多个Form1最好不要用一个变量来保存,最好保存到列表中去吧。再从列表中读出来。
 
看来不能懒了....要标记哪一个 是原 form1 了..

谢谢各位.........


附:try
Form2:=TForm2.Create(nil);
Form2.ShowModal ; //这里只是我随便贴上的...其实很多判断代码在这,没有释放的/.
finally
FreeAndNil(Form2);
end;
 
多人接受答案了。
 
后退
顶部