FormDestroy事件函式問題 |
答題得分者是:aftcast
|
benlin0725
一般會員 發表:4 回覆:2 積分:1 註冊:2012-05-03 發送簡訊給我 |
請教有經驗的大大們,TForm的FormDestroy事件函式只有在結束時才會執行嗎?還是在某些情況下會也會執行FormDestroy事件函式?如果是在結束(離開程式)時才會執行此事件的話,那又為什麼要程式中多加上FormDestroy事件函式呢?我有help內關於FormDestroy事件函式的定義,就是會將FormCreate事件函式內建立出來的所有物件使其全部失效,那不就等於是將所佔用記憶體釋放掉,然而今天如選擇了離開程式,程式不就會將所有的物件全部釋放掉嗎?那又為什麼還要再加上FormDestroy的事件函式呢?如不加此FormDestroy事件函式的話會有什麼影響嗎?請各位有經驗的大大們給小弟一點指教。
編輯記錄
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
問的還不錯,
故名思義就是form結束時會執行; 但不表示是程式結束時。如果說你從頭到尾都沒有動態的new出form,而是靠程式開始時自動產生form,那麼程式結束時當然什麼都會清,如此感覺上就是多餘的。但, 1/ 你可能是動態的new一個form然後程式還在run的時候delete那個form,那就需要清一下吧! 2/ 即使win32以後的程式在結束時會自動清記憶體,但某些kernel物件是否會清除就不一定。舉例來說,你開一個com port,然後你什麼都不管的就結束程式,那com port 可能就無法再被任何程式使用。所以還是需要清一下kernel類的物件。即向系統有借有還。 以上我想是為何需要FormDestroy事件的幾個重要例子吧! ===================引 用 benlin0725 文 章=================== 請教有經驗的大大們,TForm的FormDestroy事件函式只有在結束時才會執行嗎?還是在某些情況下會也會執行FormDestroy事件函式?如果是在結束(離開程式)時才會執行此事件的話,那又為什麼要程式中多加上FormDestroy事件函式呢?我有help內關於FormDestroy事件函式的定義,就是會將FormCreate事件函式內建立出來的所有物件使其全部失效,那不就等於是將所佔用記憶體釋放掉,然而今天如選擇了離開程式,程式不就會將所有的物件全部釋放掉嗎?那又為什麼還要再加上FormDestroy的事件函式呢?如不加此FormDestroy事件函式的話會有什麼影響嗎?請各位有經驗的大大們給小弟一點指教。
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
benlin0725
一般會員 發表:4 回覆:2 積分:1 註冊:2012-05-03 發送簡訊給我 |
===================引 用 aftcast 文 章=================== 問的還不錯, 故名思義就是form結束時會執行; 但不表示是程式結束時。如果說你從頭到尾都沒有動態的new出form,而是靠程式開始時自動產生form,那麼程式結束時當然什麼都會清,如此感覺上就是多餘的。但, 1/ 你可能是動態的new一個form然後程式還在run的時候delete那個form,那就需要清一下吧! 2/ 即使win32以後的程式在結束時會自動清記憶體,但某些kernel物件是否會清除就不一定。舉例來說,你開一個com port,然後你什麼都不管的就結束程式,那com port 可能就無法再被任何程式使用。所以還是需要清一下kernel類的物件。即向系統有借有還。 以上我想是為何需要FormDestroy事件的幾個重要例子吧! =================================================== 那假設有在form中動態new出一個form或是com port,那再請問一下,將清除的程式放在new出來form中的formclose和formdestroy有什麼差別嗎? |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
formClose不等於form就要"死"了。在mdi裡的form,close只是hide起來,除非你去改變這樣的行為。
所以,當然有差異。即,有些時候你是要確定它死了才處理,有些則是"關起來",就要處理。 ===================引 用 benlin0725 文 章=================== 那假設有在form中動態new出一個form或是com port,那再請問一下,將清除的程式放在new出來form中的formclose和formdestroy有什麼差別嗎?
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |