在同一个项目内,有一个基类窗口TBaseForm,项目内其他一些窗口,在设计时,从该基类继承建立。在基类中,对Form的OnCreate事件,未建立事件处理程序;在继承的窗口中,对OnCreate事件生成了事件处理程序,并且能够正常地执行该事件处理程序。但是,对于Form的OnClose事件,却出现了问题:基类仍然未建立该事件的处理程序,继承窗口对该事件有事件处理程序,但在运行的时候,却无法触发该事件,即该事件的事件处理程序未执行。

解决方案 »

  1.   

    不知道你是不是从File-New-Other-工程名页里继承的,如果是,我试了一下,好像没有你说的问题;
    贴点代码看看先...
      

  2.   

    不应该有这样的问题,其实TBaseForm是一般不处理On....之类的事件的,一般重载DoClose,DoShow这些。
      

  3.   

    procedure TBaseForm1.FormClose(Sender:TObject);
    begin
      inherited;
      //空白行
    end;
      

  4.   

    回复人: miky(miky) ( ) 信誉:105  2004-12-12 11:18:00  得分: 0  
     
     
       不应该有这样的问题,其实TBaseForm是一般不处理On....之类的事件的,一般重载DoClose,DoShow这些。
      
     
    //此言差矣
      

  5.   

    你的FormClose有没有加上overload指示符?
      

  6.   

    问题我自己找到了:子类窗口是通过一个基类的类类型变量及子类类名,动态生成的。我在撤消子类窗口时,是在子类窗口程序单元外,其他单元中直接调用了Free方法,在这种情形下,子类窗口不会触发OnClose事件(基类也不会),只会触发OnDestory事件。我是这样认识的,不知各位有什么不同意见?散平均分!
      

  7.   

    //inherited;  注释不要
      

  8.   

    与miky(miky)用短信讨论了窗体重载的问题~感谢 miky(miky)给我上了一堂课~致谢~