我在子父窗体中,通过菜单打开了好几个子窗体,现在我想实现
如果我点菜单的时候,如果对应的子窗体已经存在就直接显示到最前面,不用再重新创建窗体。如果没有
该子窗体,就创建。怎么完成这个功能呢?我写了一堆参数,觉得很不方便。
哪位大侠能够给小弟些指点啊?

解决方案 »

  1.   

    var Form2:TForm2;
    procedure TForm1.Button1Click(sender:TObject);
    begin
      if not Assigned(Form2) then
        Form2 := TForm2.Create(nil);
      ... 显示到最前面 等
      ...
    end;
      

  2.   

    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].WindowState:=wsnormal;
            MDIChildren[I].BringToFront;
            exit;
          end;
        end;
      end;
    end;
      

  3.   

    var Form2:TForm2;
    procedure TForm1.Button1Click(sender:TObject);
    begin
      if not Assigned(Form2) then
        Form2 := TForm2.Create(nil)
       else Form2.SetFocus;  ...
    end;
      

  4.   

    procedure TfrmSYS_Main.N2Click(Sender: TObject);
    begin
     if not IsExistsFormName('frmTest') then
     begin
       application.CreateForm(T'frmTest','frmTest');
       'frmTest'.FormStyle:=fsMDIChild;
     end;end;