对于VB一个工程中如果有多个窗本,则可以通过 LOAD Form2  Form2.show form2.hide
Unload Form2 将窗本装入内存不用时卸载掉!那在一个 多窗口的DELPHI工程中 窗体的生存周期是怎么样的呢?还有就是 Form1.hide Form1.close Form1.free Form1.release
这几个具体有什么差别呢?怎么很多书里都没提到!

解决方案 »

  1.   

    Hide方法只是隐藏该窗体,close和free方法可以关闭窗口,即可以从内存中卸载。
    如果Form1为主窗体,那么Form1.Close和Application.Terminate作用相同,是退出程序的作用。
    在delphi中,假设你有一个窗体为Form2,而你需要动态的创建和释放,则应该在Project菜单下的Options对话框中将Form2从Auto-Create forms中去掉,假设Form1中有一个Button1,现在要在Button1的Onclick事件中创建该窗体,则可以这样写:(要在Form1中use form2)
    创建模态窗体
    procedure TForm1.Button1Click(Sender: TObject);
    var
            xForm:TForm2;
    begin
            xForm:=TForm2.Create(Application);
            try
                    if xform.ShowModal = mrOK then
                    {...};   //这里执行你的程序
            finally
                    xform.Free;
                    xform:=nil;
            end;
    end;
    如果要创建非模态窗体,则这么写
    procedure TForm1.Button1Click(Sender: TObject);
    var
            xform:TForm2;
    begin
            if not Assigned(xform) then
            xform:=TForm2.Create(Application);
            xform.Show;
    end;
    然后在Form2的FormClose事件中加入
    Action:=caFree;
    就可以在关闭Form2的时候从内存中将他卸载。