Show是显示,创建是Create
从字面理解就可以了

解决方案 »

  1.   

    Form2每次用完之后关闭的时候Free掉再用Form2的时候就再次创建
      

  2.   


    Form1
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
      uses Unit2;
    {$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      Application.CreateForm(TForm2,Form2);
      form2.Show;
    end;end.====================================
    Form2
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm2 = class(TForm)
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementation{$R *.dfm}procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    Action:=caFree;  //Free掉
    end;end.注意Form2不要加入工程的自动创建里面program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
    //  Application.CreateForm(TForm2, Form2);    不要自动创建Form2
      Application.Run;
    end.
      

  3.   

    OnActive 是每次激活的时候。
    OnShow 是每次显示的时候。
    如果你是动态创建窗体的。就可以达到你的想法。
    ctrl + shift + F11 (大概),把 Auto 列表里的 Form 点到右边去。
    然后代码很简单。Form2 := TForm2.Create(nil);
    Form2.ShowModal;
    Form2.Free
      

  4.   


             if not Assigned(Frm2) then
             begin
               Frm2:=Frm.Create(Self);
             end
             else Frm2.Show;
      

  5.   

    简单的做法,form1应用form2的单元,{工程文件中取消form2窗体的创建}
    program Project1;  
    uses  
    Forms,   
      Unit1 in 'Unit1.pas' {Form1},  
      Unit2 in 'Unit2.pas' {Form2};   
    {$R *.res}   
    begin  
      Application.Initialize;  
      Application.CreateForm(TForm1, Form1); 
      //Application.CreateForm(TForm2, Form2);    不要自动创建Form2   
      Application.Run; 
    end.
    {弹出form2窗体}
    procedure TFShopMain.miLogUserClick(Sender: TObject);
    begin
     try
        FLogUsers:=TFLogUsers.Create(Application);
        FLogUsers.ShowModal;
      finally
        FLogUsers.Free;
        FLogUsers:=nil;
      end;
    end;
    {form2中create事件自己写了}
      

  6.   

    一般创建后,不释放。下一次,打开Show就可以。
      

  7.   

    Form2是在程序开始运行的时候就被create了,并不是show的时候才临时做的。
    OnActivate是在该窗体成为当前活动窗体时发生的。
    如果Form2是用完就关掉,下次用再show出来的话,用onActivate事件会方便些。