在MDI中,如何实现每次只打开一个CHILD窗体,如果该窗口最小化了,在再次调用时将其最大化即可,不重复打开。

解决方案 »

  1.   

    我喜欢把CHILD窗体做成frame,切换frame的visible就可以了
      

  2.   

    如果你的主窗口是form1 MDIChild窗口是form2
    在form1中调用显示form2时用form2的var变量form2,
    if form2=nil then 
     form2:=Tform2.Create(nil);
    form2.show;
      

  3.   

    if not Assigned(Fm_Pdqkb) then begin
        Application.CreateForm(TFm_Pdqkb, Fm_Pdqkb);
      end else begin
        Fm_Pdqkb.Show;
        Fm_Pdqkb.WindowState:=wsNormal;
        Fm_Pdqkb.BringToFront;
      end;
      

  4.   

    procedure Tform_main.addClick(Sender: TObject);
    begin
     //这里是assigned(Form_add),当然这个Form_add必须是你已经定义好的
    if assigned(Form_add)<>nil then 
      begin
        Form_add:=TForm_add.Create(Application);  //创建指定MDI子窗口
        Form_add.Show;
      end
    else
      Form_add.BringToFront;  //把它Show在最前面
    end;
      

  5.   

    showwindow(form1.handle,sw_restore);
    只打开一个子窗体写起来太麻烦
    告诉你思路
    从project中将子窗体的创建去掉
    在用到这个窗体时,在创建
    比如说子窗体form2
    用时
    form2:=TForm2.create(self);
      

  6.   

    if not Assigned(Form1) then 
    begin
        Application.CreateForm(TForm1, Form1);
    end 
    else 
    begin
        if Form1.WindowState = wsNormal then
    Form1.WindowState := wsMaxmized;    Form1.Show;
        Form1.BringToFront;
    end;form1关闭事件中写加入
    action := cafree;