delphi 设计两个 mdichild 子窗体的调用问题    Form1(mdichild) 上面的一个按钮,click 后,要出现 Form2(mdichild) ,可是 Form2 出现后, Form1 就不见了。    急,不知道该怎么弄才可以了。    请帮助!!!

解决方案 »

  1.   

    procedure TForm1.bitbtn1Click(sender:object);
    begin
     F_Main.Z70Click(nil); //执行这句后,Form1 就不见了,只有 Form2 了
    end;F_Main 是 MDI 父窗体 ,在父窗体中执行下面的代码没有问题。procedure TF_Main.Z70Click(Sender: TObject);
    begin
      if CreateForm(Form2)=false then
        begin
          Form2:=TForm2.Create(Application);
          Form2.Show ;
        end
      else
        Form2.Show ;
    end;CreateForm 是个函数如下:
    function TF_Main.CreateForm(CForm: TForm):boolean;
    var
      No:integer;
      FormExist:boolean;
    begin
      FormExist:=False;
      if (CForm=Nil) then //判断 CForm 是否为空
        begin
          CreateForm := False; //函数返回值赋 false
          exit;               // 退出本函数
        end;
      for No := 0 to Screen.FormCount  - 1 do //判断窗体是否已经被建立起来
        begin
          if screen.Forms[No].ClassType =CForm.ClassType  then //窗体判断存在
            FormExist :=True; //窗体已经创建,用户没看到,可能是处于隐藏或最小化
        end;
      if FormExist =False then //窗体没有创建,返回 false
          CreateForm :=False;  if CForm.WindowState =wsMinimized then //如果窗体被创建,但 最小化
        ShowWindow(CForm.Handle,SW_SHOWNORMAL) //显示窗体
      else                                 //窗体已经创建,但处于隐藏状态
        ShowWindow(CForm.Handle,SW_SHOWNA);//显示窗体  if not CForm.Visible  then
        CForm.Visible :=True;  CForm.BringToFront ; //当前窗口显示在最前面
      CForm.SetFocus ;    // 把光标的焦点转移到刚才创建或显示的窗口上
      CreateForm :=True;  //函数返回值赋 true;end;
      

  2.   

    for No := 0 to Screen.FormCount  - 1 do //判断窗体是否已经被建立起来 
        begin 
          if screen.Forms[No].ClassType =CForm.ClassType  then //窗体判断存在 
            FormExist :=True; //窗体已经创建,用户没看到,可能是处于隐藏或最小化 
        end; 只看到这段。
    应该在mdichildcount里循环判断。
    另外这句:
    if screen.Forms[No].ClassType =CForm.ClassType  then 
    窗1和窗2是不同的类型?
    如果是同一类型,这样判断是不行的。
      

  3.   

        这样的话,就很奇怪了,在 MDI 主窗体中,通过 mainMenu 菜单来调用的话,就没有问题(MDI子窗体当然不止 Form1,Form2)。怎么调用都没有问题     现在,在 一个 MDI 子窗体中调用的话,就把 Form1 看不到了。只剩下被 show 出来的窗体和主窗体     不知道该怎么弄了 
      

  4.   

    OK 了。
       
       说出来,真是不好意思,是我把 Form2.formstyle 搞错了。不是 mdichild 。是 msnormal 。   散分,结贴