两个窗体A,B,A是主窗体,设B不自动创建,即在PROJECT-》OPTIONS里设置的,A有一系列操作,完成后A隐藏或关闭,B显示。问题就是A的操作中有一些条件满足后才显示B,B的创建由A完成。请给详细说明。谢谢!

解决方案 »

  1.   

    procedure A.x(...)
    begin
      if ... then
       begin
         if not assigned(b) then b:= tform2.create(nil);
         b.showmodal;
         A.hide;
       end;
    end;
      

  2.   

    在工程里写到。 
     Application.Initialize;
      with TFrmSplash.Create(FrmSplash) do
      try
        ShowModal;
      finally
        Free;
      end;
      Application.CreateForm(TDM, DM);
      FrmLogin := TFrmLogin.Create(FrmLogin);
      if FrmLogin.ShowModal = 1 then
      begin
        Application.CreateForm(TFrmMain, FrmMain);
        Application.Run;
      end
      else
      begin
        DM.Free;
        Application.Terminate;
      end;
    end.
      

  3.   

    if panduan then
      with TFormB.Create(NIL) do
      Try
        begin
          ShowModal;
        end;
      Finally
        Free;
      end;
      

  4.   

    bb为布尔型全局变量,可在公用单元声明
    Application.CreateForm(TA, A);
    try
      A.showmodal;//在窗口A执行条件判断,
    finally
      A.Free;
    end;
    if bb then
     Application.CreateForm(TB, B);
      

  5.   


    procedure A.x(...)
    begin
      if ... then
       begin
       if not assigned(b) then b:= Tb.create(self);
    //或     if not assigned(b) then b:= Tb.create(application);
         hide;//close;
         b.showmodal;//b.show;
         freeandnil(b);
       end;
    end;
      

  6.   

    b.show;和 freeandnil(b);不能搭配
      

  7.   

    if CanCreateB then
    begin
      self.hide;
      b:=TB.Create(self);
      b.showmodal;
      b.Free;
      b:=nil;
      a.show;
    end;
      

  8.   


    if ........ then
      Application.CreateForm(TDmMain, DmMain);
      
      dmmain.ShowModal;  
      

  9.   

    if ... then
    begin
      mainform.hide;
      with Tformb.Create(nil) do
        try
          showmodal;
        finally
          free;
        end;
      mainform.show;
    end;