全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1247
推到 Plurk!
推到 Facebook!

Form.Create(?What) 的問題

尚未結案
eric039
中階會員


發表:57
回覆:126
積分:51
註冊:2002-11-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-06 09:29:45 IP:211.75.xxx.xxx 未訂閱
請問一個問題: MDIForm (fmMain) 底下有一個 MDIChild (fmChild) 我在 fmMain 開啟後,要開啟 fmChild fmChild := TfmChild.Create(???); 請問 Create 裡面用 Self、Application、fmMain 有什麼不一樣 這樣好像都可以執行。 謝謝 Eric Lin
------
Eric Lin
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-06 09:48:41 IP:61.30.xxx.xxx 未訂閱
你好:
  fmChild := TfmChild.Create(xxx);
以上例說明,xxx 是 fmChild 的擁有者,當程式關閉或 xxx 招遭釋放時
會一併將 fmChild 釋放。如果你將擁有者指定為 Nil 則你必須自行處理
fmChild 的釋放。
eric039
中階會員


發表:57
回覆:126
積分:51
註冊:2002-11-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-10 08:53:13 IP:211.75.xxx.xxx 未訂閱
那如果 fmChild.Create(Self) 就是當 fmChild.Free 時 fmChild 就會從記憶體裡面釋放掉。 如果 fmChild.Create(Application) 就是當程式結束才會釋放掉。 是不是這樣意思? Eric Lin
------
Eric Lin
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-10 11:28:25 IP:210.243.xxx.xxx 未訂閱
截至Delphi 7為止 Object Pascal語言並未具備Garbage Collection功能(自動回收未使用記憶體),所以理論上應該自行建立與釋放物件,但在VCL的Component架構中,利用Owner來解決此一問題,Owner在釋放時會一併釋放其所擁有的Component因此 fmChild := TfmChild.Create(???); ???若用fmMain 或self(self是指你目前所實作程式碼的物件,若你是在fmMain 上點選事件,那self基本上會等於fmMain),那就表是當fmMain 在釋放時,會一併釋放fmChild,同理???若用Application則表示程式結束時一併釋放fmChild 至於你所說不管是self,fmMain,Application都一樣的結果是因為,在你的Case中 self = fmMain,且fmMain Close 時會導至Application Close,Application Close時會釋放fmMain,fmMain又會釋放其擁有Component 混心雜欲 棄修身~唉
------
唉~
系統時間:2024-07-03 2:31:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!