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

create from 的方式(Appliction)(nil)(self).....有何不同

答題得分者是:ccchen
isthatu
初階會員


發表:80
回覆:47
積分:25
註冊:2002-06-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-22 09:15:37 IP:202.145.xxx.xxx 未訂閱
看了書對form.Create(application) form.Create(self) form.Create(nil).....的方式還不是很有點迷糊 請問他們有啥麼不同 問題很白痴 很好笑的工作上的同事卻沒有一個人回答的很明確 -----------------------BCDEFHIJKLMNOPQRSTUVWXZ ------------------------
------
BCDEFHIJKLMNOPQRSTUVWXZ
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-22 10:49:08 IP:61.219.xxx.xxx 未訂閱
1.form.Create(self) 以目前之object (self)做為新create Form之owner 通常你可能在menuClick或ButtonClick執行, 例如在 procedure TForm1.button1click(Sender:Tobject); 那麼TForm1之目前Instance(可能即form1)為新create Form之owner 2.form.Create(application) 以application之mainForm做為新create Form之owner 3.form.Create(nil) 新create 之Form無owner Owner會管理所有child之memory, 故若新create之 Form未close,未free 則owner close時會自動將其close並free 例:1.中 form1 close時會將其free 2.中 application結束時會將其free 3. 變成孤兒
isthatu
初階會員


發表:80
回覆:47
積分:25
註冊:2002-06-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-22 17:30:58 IP:202.145.xxx.xxx 未訂閱
引言: 1.form.Create(self) 以目前之object (self)做為新create Form之owner 通常你可能在menuClick或ButtonClick執行, 例如在 procedure TForm1.button1click(Sender:Tobject); 那麼TForm1之目前Instance(可能即form1)為新create Form之owner
------1.那是否新creat的from close後 要把他free掉 ex; try subform:=Tsubform.Create(self); ...... finally subform.free; 還是不用先把他free掉 自己等他的owner 結束後 他會自行釋放掉 還是說要在owner 的onclose event中再subform.free;
引言: 2.form.Create(application) 以application之mainForm做為新create Form之owner
那不就是等整個程式結束 才被free掉
引言: 3.form.Create(nil) 新create 之Form無owner Owner會管理所有child之memory, 故若新create之 Form未close,未free 則owner close時會自動將其close並free
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 照您說法 我這個subform可以create--close-create-close 這樣不去free掉 當他的owner from未結束前會不會出現好幾份相 同的subform在記憶體裡?
引言: 例:1.中 form1 close時會將其free 2.中 application結束時會將其free 3. 變成孤兒
^^^^^^^^^^^^這個孤兒是不是要手動free / -----------------------BCDEFHIJKLMNOPQRSTUVWXZ ------------------------
------
BCDEFHIJKLMNOPQRSTUVWXZ
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-23 09:29:53 IP:203.217.xxx.xxx 未訂閱
孤兒當然要自己Freee    有owner之form雖然有人管,還是在恰當時機自行free較好 
  ex; try 
             subform:=Tsubform.Create(self);
             subform.showmodal;
             ......
            finally
              subform.free;
這是最標準的 另一問題是, showmodal改為show,你就沒有free時機, 此時可在onClose寫 action:=caFree, 當user close時free掉. 照您說法 我這個subform可以create--close-create-close 這樣不去free掉 當他的owner from未結束前會不會出現好幾份相 同的subform在記憶體裡? 若owner為application的話, 是的 實際上同一個form你也可以create多個instance, 且同時show
系統時間:2024-03-29 9:07:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!