如何在Delphi的普通窗体中弹出MDI窗体(100分)

  • 主题发起人 主题发起人 koukai
  • 开始时间 开始时间
K

koukai

Unregistered / Unconfirmed
GUEST, unregistred user!
[blue]在Delphi中有3个窗体,分别是应用程序主窗体(MainForm,为一般窗体)、
多文档主窗体(MDIForm)、多文档子窗体(MDIChild),要求在MainForm中
单击某个按钮弹出MDIForm,然后选择MDIForm的某个菜单项,弹出MDIChild。
我经过多次试验,在生成MDI子窗体时,总是有如下错误提示:
raised exception class EInvalidOperation with message 'Cannot create
form.No MDI forms are currently active'。请问如何能解决上述问题?谢谢!
[/blue][?]
 
unit1
...
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
form2:=tform2.Create(application);
form2.Show;
end;
--------------------
unit2
uses Unit3;
{$R *.dfm}
procedure TForm2.ddd1Click(Sender: TObject);//a menuitemClick
begin
form3:=tform3.Create(application);
windows.SetParent(form3.Handle,form2.Handle );
form3.Left :=15;
form3.Top :=15;
form3.Show;
end;
--------------------------------
unit3
...
//just a form,no code here.
--------------------
finally set Project---->options---->forms : auto-createforms avaiableforms
form1 form2
form3
-----------------------------------------------
it takes me about 20mins,give me money...[:D]
 
To savenight
你的回答与我以前试验过的类似,但它实际上并不是MDI形式,
只不过看起来有点象,如果把Form3,也就是子窗体的FormStyle
设为fsMDIChild,再运行,还是会出现异常。我希望得到的是
一个纯粹的MDI形式。
不过还是非常感谢你的回答。
 
可以说这是没办法的,MDIform 必须作为主窗体的
 
特别关注,这时我正遇到同样的问题,我们共同解决吧!
 
WINDOWS.SETPARENT(SELF.HANDLE,FORM1.HANDLE);
 
如果你要纯粹的MDI形式,那就应该用MDIForm,否则,我不知道什么是纯粹的。。[:(]
 
接受答案了.
 
后退
顶部