inherited是重载父类的方法,grsw_hkdjform.Free是窗口关闭后释放,grsw_hkdjform.ShowModal为显示一个模式窗体,
一般这么用
try
grsw_hkdjform.ShowModal;
finally
grsw_hkdjform.Free;
end;
他们的不同你可以看看帮助,里边有详细的说明。
一般这么用
try
grsw_hkdjform.ShowModal;
finally
grsw_hkdjform.Free;
end;
他们的不同你可以看看帮助,里边有详细的说明。
>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共存亡”的感觉:)
创建窗体的参数表示次窗体的拥有者
application表示整个应用程序,窗体在应用程序结束时被应用程序释放
self表示本身,当窗体关闭时自动释放
nil表示没有拥有者,析构函数必须又程序员显视调用