首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-03-02 
在线等!!一个关于MDI的问题?在线等!急!!!小弟进来在开发一个系统时要用到MDI,我把主窗体设为famdiform,子

在线等!!一个关于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;

热点排行