一个关于MDI的问题---急!(100分)

  • 主题发起人 主题发起人 donggu
  • 开始时间 开始时间
D

donggu

Unregistered / Unconfirmed
GUEST, unregistred user!
父窗口所在单元:MAIN
子窗口:unit Childwin,
TMDIChild = class(TForm)
现增加一个窗口,UNIT UNIT1,
TForm1 = class(TForm)
uses Main,Childwin;
在增加窗口中:
procedure TForm1.Button1Click(Sender: TObject);
begin
with ActiveMDIChild as TMDIChild do
Showmessage(RichEdit1.name);
end;
就抱错,引用不了TMDIChild 的 RichEdit控件
 
with Application.MainForm.ActiveMDIChild as TMDICHild do
showmessage(RichEdit1.Name);
 
着段程序本来没错,
问题出在'ActiveMDIChild'中,在Button1Click中时,
如果'ActiveMDIChild'还是nil ,怎么强制转换成TMDIChild?
只有先创建TMDIChild的实例,才能引用它. 如:
procedure TForm1.Button1Click(Sender: TObject);
var mdichild:TMDIChild;
begin
mdichild:=TMDIChild.create(self);
Showmessage(mdichild.RichEdit1.name);
end;
疑问:这段程序有什么用?

 
鲁小班:
呵呵, 我想你是理解错了。
procedure TForm1.Button1Click(Sender: TObject);
begin
with ActiveMDIChild as TMDIChild do
Showmessage(RichEdit1.name);
end;
这里,ActiveMDIChild指的是TForm1的ActiveMDIChild,因为
TForm1不是MDIForm型的(一个Application只能有一个,在这
个例子中那就是MAIN),所以,无论你是否建立了MDIChild,
TForm1.ActiveMDICHild永远是nil。

donggu的意思应该是要取Main的ActiveMDIChild的Richedit的
名字,所以,必须用Application.MainForm.ActiveMDIChild。
 
例子用来测试的,其实我想开发MDI多可能用到。我刚学DELPHI
 
接受答案了.
 
后退
顶部