我发现主窗体在创建过程中,动态创建了一个另外的窗体,在这个窗体上用一个按钮application.Terminate根本终止不了程序,执行了好象没有任何效果,又回到主窗体继续执行其余代码,应该怎样做擦可以在动态新建的窗体中结束整个程序?

解决方案 »

  1.   

    传出参数,如果用户终止程序,则在mainForm里面跳出create方法,这样就可以了
    formcreate
    {
    .....
    try
      frmChild.showmodal;
    finally
      bT:=frmChild.bTerminate;
      frmChild.free;
    end;
    if not bt then
      exit;
    .....
    }
      

  2.   

    不好意思,刚才忘记加application.Terminate
    formcreate
    {
    .....
    try
      frmChild.showmodal;
    finally
      bT:=frmChild.bTerminate;
      frmChild.free;
    end;
    if not bt then
    begin
      application.Terminate;
      exit;
    end;
    .....
    }
      

  3.   

    只能这样吗?,好象有点麻烦哦,application.Terminate不能随时结束整个程序吗,那这个有什么用?就直接关闭主窗体不也一样?
      

  4.   

    我试了一下,是Application.Terminate可以终止程序,
    但它络止程序必须有个条件,必须等Application.Terminate
    之后的所有代码执行完毕,所以它不会“立即终止",
    其实它只不过给了信号,仅仅使:
       属性Appliaction.Terminted变为真而已,
    执不执行“终止”,它是不管的,直到用户之后代码执行完了
    系统才真的执行。
             如果这样:
                Application.Terminate;
                死循环;
                。
    它永远都不能终止程序,但其后的代码可测试到
       Application.Terminated变为真了,
    你应做相应的终止处理了      
      

  5.   

    用Appliaction.Terminted感觉不是很好,强行中断似的这样子或许会有一些东西没有释放干净呢。
      

  6.   

    if ... then
    begin
      Appliaction.Terminted
      Exit;//加上之后就可以完全退出应用程序。
    end;
      

  7.   

    TO: ihihonline,主窗体内是可以这样,在动态创建的其他窗体恐怕不行哦