1.Application.Terminate;
2.Application.halt;

解决方案 »

  1.   

    你不能在这个事件中调用From1.free;
    只能用Application.Terminate;
    或Application.halt;
      

  2.   

    呵呵,Application.Terminate;只是调用了PostQuitMessage(0)而矣,当程序处理到此消息时,程序才会结束,所以,调用后可能不会立即结束!
    要释放自己分配全局性的资源可以在OnDestroy或OnClose中做.不是自己分配的空间你就不要释放它,否则多半会出错的,比如    //  Form1.Free; //  这样不可以!因为Form1是主窗体,不是你手工建的,也不会你释放,系统会自动释放它的.
        //  Application.Free;// 这样更不行!Application也不是你创建的,你也不要释放它!否则会出错的!另外,不要在窗体内引用它的实例变量名,如:
    在TForm1的事件用引用Form1变量,这是不好的习惯,如果别人不这样:
    Form1 := TForm1.Create(.... 而是
    aForm := TForm2.Create(......)
    那你的程序就会出错了!!
    你可以能过Self变量来引用窗体本身,如
    Self.Caption := 'asdfasd',而不要用 Form1.Caption := 'asdfasfd';