小弟开发了一个MDI的MIS管理软件,我的问题是,当我用菜单打开第一个MDICHILD窗口后接着又打开了第二个MDICHILD窗口,一致第N个窗口,所有的窗口都未关闭,当我再用菜单掉前面的已打开的MDICHILD窗口的时候,我希望能够自动的已打开的窗口掉到最前面,而不是在建一个新的MDICHILD窗口!谢谢!小弟急着用,大家帮帮忙!

解决方案 »

  1.   

    if assigned(FrmName) then
        FrmName.Show; {如果指定窗体已创建,则显示}
    //  else
    //    Create...
      

  2.   


    给你一个函数,在打开窗口前调用。
    if not IsExistsFormName('form1') then
    application.createform(tform,form1);function  IsExistsFormName(fmName:string): boolean;
    Var i:integer;
    begin
      result:=false;
      with application.MainForm do
      begin
      for I := 0 to MDIChildCount - 1 do
      begin
        if uppercase(Trim(MDIChildren[I].Name))=uppercase(Trim(fmName)) then
        begin
          result:=true;
          MDIChildren[I].Show;
          MDIChildren[I].BringToFront;
          exit;
        end;
      end;
      end;
    end;MDI子窗口关闭时用注意在formclose事件里写 action:=cafree;
      

  3.   

    if not Assigned(FrmName) then
       FrmName ;= TFrmName.Create(Application);
     FrmName.Show; {如果指定窗体已创建,则显示}在FormClose事件中添加下列代码:
    Action  := caFree;在Destroy事件中添加下列代码:
    FrmName := nil;