关于MDI的问题(100分)

  • 主题发起人 主题发起人 chbo
  • 开始时间 开始时间
C

chbo

Unregistered / Unconfirmed
GUEST, unregistred user!
假设有个子窗体叫CHFORM;
我在主窗体中多次调用该CHFORM,
而在CHFORM中又会调用别的一些窗体;并从
这些窗体获取数据。
问题是这些窗体返回数据时,全部返回
到最后建立的CHFORM。
请问如何返回数据到 所需要 的子窗体。

 
你描述得还不详细!是如何调用调用别的一些窗体,show or showmodal,如果使用
show,又是如何返回数据!!
建议:
在CHFORM调用调用别的一些窗体全部采用动态建立,每一个CHFORM都有其相应得
别的一些窗体,这样返回数据就不会到最后建立的CHFORM!
 
"在主窗体中多次调用该CHFORM"
是否指多次创建窗口?而每次创建窗口又把它覆盖一个全局变量?
如果是这样,那不行。
你在CHFORM中创建别的窗体用 ......Create(Self) //self指向你的某个chform
你的这些窗口用 TCHFORM(Owner) 来访问 chform

 
>>沈前卫&PIPI
多谢两位的解答。
我试过沈先生的方法,采用SHOWMODAL显示
窗体,并是动态的创建他们,但结果也是一样的。
沈先生能否再为我想想?谢了!
PIPI,你的方法有点意思,能不能详细点。
我用的时候,编译通过,运行却在返回数据时出错。
看来,100分是两位的了!再谢二位!!!!!
 
不知道你是怎么传数据的
 
再说详细些,如“别的一些窗体”变量是保存在全局变量还是局部变量,如何接受
数据,怎么返回数据,通过变量还是发生消息等等!
 
chbo:
我试了试以下方法,可行,不知符合你需要。
先建立MDI程序。
在建立TForm1;(包括Edit1:TEdit1)
在TMDiChildForm(包括TButton1)的private的建立Form1:TForm1;
在TMDiChildForm.OnCreate中
Form1:=TForm1.Create(Self);
form1.Show;
在TButton1.OnClick(Sender:TObject)中
Memo1.Lines.add(Form1.Edit1.Text);

运行,选菜单new两个TMDiChildForm,分别输入不同数据,按不同TMdiChildForm
上的Button,可以得到真确数据。
不知你的程序是否是这样呢?
 
你可能需要这样:
1 在CHFORM中声明一些 PUBLIC 字段,用以存储结果内容(如 TCHFORM.DATA1)
2 在你创建(应该是动态创建)别的一些FORM的时候(如 INPUT_FROM):
TINPUT_FORM1 := TINPUT_FORM.CREATE(CHFORM1);
这样,CHFORM1将是 TINPUT_FORM1 的 OWNER
3 那么你在 TINPUT_FORM 中的代码可以用OWNER属性访问调用自己的 TCHFORM实例,
把数据赋给TCHFORM字段或者属性,如在 TINPUT_FORM 的ONCLOSE 事件中:
... ...
OWNER.DATA1:='2180001';
... ...
4 OK



 
多谢各位!!!
pipi,thank you!!
 
后退
顶部