读书人

!一个关于MDI的有关问题?

发布时间: 2012-03-02 14:40:28 作者: rapoo

在线等!!一个关于MDI的问题?在线等!急!!!
小弟进来在开发一个系统时要用到MDI,我把主窗体设为famdiform,子窗体设为fachildform,然后在主窗体中调用Open()来打开子窗体,可是为什么显示Cannot Create Form. No MDI forms are currently active我知道这个问题不是太复杂,可是我已经糊涂了!请大家帮帮我啊!不胜感激!
open()函数如下:
var
i: integer;
Child:TForm;
begin
for i := 0 to Screen.FormCount -1 do
if Screen.Forms[i].ClassType=FormClass then
begin
{检查窗体是否已经打开,如果没有打开,打开它,
如果已经打开,让它正常显示即可}
Child:=Screen.Forms[i];
if Child.WindowState=wsMinimized then
ShowWindow(Child.handle,SW_SHOWNORMAL)
else
ShowWindow(Child.handle,SW_SHOWNA);
if (not Child.Visible) then Child.Visible:=True;
Child.BringToFront;
Child.Setfocus;
TForm(fm):=Child;
exit;
end;
Child:=TForm(FormClass.NewInstance);
TForm(fm):=Child;
Child.Create(AOwner);
end;
调用语句如下:OpenForm(T子窗体,子窗体,self);
子窗体与主窗体都没有在Option中自动创建!

[解决办法]
var
ProductChild:TFrmProduct;//这是MDI子窗体
i:integer;
begin
Perform(WM_SETREDRAW,0,0);
if Application.FindComponent( 'FrmProduct ')=nil then
begin
ProductChild:=TFrmProduct.Create(Application);
ProductChild.Show;
end
else
for i:=0 to self.MDIChildCount-1 do
begin
if self.MDIChildren[i] is TFrmProduct then
ShowWindow(MainForm.MDIChildren[i].Handle, SW_MAXIMIZE);
end;
Perform(WM_SETREDRAW, 1, 0);
RedrawWindow(Handle,nil,0,RDW_FRAME+RDW_INVALIDATE+RDW_ALLCHILDREN+RDW_NOINTERNALPAINT);
end;

读书人网 >.NET

热点推荐