inherited是重载父类的方法,grsw_hkdjform.Free是窗口关闭后释放,grsw_hkdjform.ShowModal为显示一个模式窗体,
一般这么用
try
grsw_hkdjform.ShowModal;
finally
grsw_hkdjform.Free;
end;
他们的不同你可以看看帮助,里边有详细的说明。

解决方案 »

  1.   

    >procedure TMainForm1.N74Click(Sender: TObject);
    >begin
    >  inherited;
    >grsw_hkdjform:= Tgrsw_hkdjform.Create(application)
    >grsw_hkdjform.ShowModal;
    >grsw_hkdjform.Free;
    >update;
    >end;
    >请问inherited这个语句起什么作用?grsw_hkdjform.Free是不是窗口一旦显示就释放它?
    inherited是执行父类的方法,如果你的方法重载了父类的同名方法,可以通过这个指令来运行父类的同名方法,在构造继承类时,这是必要的。
    因为你使用ShowModal,所以在grsw_hkdjform关闭之前,此处程序不会继续运行;你的代码是当grsw_hkdjform关闭后就释放,很好,就是这样。
    >update又是起什么作用呢?
    刷新当前的Form
    >grsw_hkdjform:= Tgrsw_hkdjform.Create(application)
    >将application参数改为owner,self,nil会有什么不同????
    Create的参数是Owner,代表对象所有者,意思是“谁负责销毁这个对象”。
    application 由Application(当前运行的程序抽象类)负责,你的对象会在Application释放(当前进程终结)时自动被销毁
    self 由当前对象负责,当你执行这个Create时,肯定是在某个对象的方法中(否则没有Self属性),此时这个对象就是所有者,当它释放的时候会自动销毁你的对象。
    nil 不属于任何一个对象,那么此时你所要做的就是一定要自己释放这个对象,因为没有任何一个对象会自动帮你这么做。呵呵,听起来像是“誓与Owner共存亡”的感觉:)
      

  2.   

    interiter简单的说就是把你重载的方法拷到这个语句处执行
    创建窗体的参数表示次窗体的拥有者
    application表示整个应用程序,窗体在应用程序结束时被应用程序释放
    self表示本身,当窗体关闭时自动释放
    nil表示没有拥有者,析构函数必须又程序员显视调用