with TFmT51R.Create(Self) do 與 with TFmT51(Owner)? |
尚未結案
|
vivi666666
初階會員 發表:83 回覆:94 積分:35 註冊:2003-03-05 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
FAQ, 參考:
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=31850
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=27385
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23132
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20036
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=18919 ---
每個人都是一本書
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: with TFmT51R.Create(Self) do 與 with TFmT51(Owner) 的差異?您可以自己作一個實驗,測試看看,Self是指誰?Owner是指誰? 方法如下:在Form1,放一個Button的元件。 procedure TForm1.Button1Click(Sender: TObject); begin if Self = Form1 then ShowMessage('Form1'); if Owner = Form1 then ShowMessage('Form1') else if Owner = Application then ShowMessage('Application'); end;由此實驗可以知 Owner是指整個應用程式Application。 Self是指目前的Form即是Form1。(若在Form2寫Self則Self就是指Form2) 了解了以上的基本觀念,再說明您所問的問題: with TFmT51R.Create(Self) do 與 with TFmT51.Create(Owner) do 的差異? 其差異就是物件擁有者的不同(Owner): (假設此段程式是寫在Form1) with TFmT51R.Create(Self) do的擁有者是指Form1(端看您的程式寫在那一個Form,其擁有者就是那一個Form) with TFmT51.Create(Owner) do的擁有者是指Application。 而擁有者影嚮物件的生命週期: with TFmT51R.Create(Self) do的生命週期是當Form1結束時就跟著結束。 with TFmT51.Create(Owner) do的生命週期是當應用程式結束時才跟著結束。 知道理論之後,再作一個實驗就可以更清楚知道with TFmT51R.Create(Self) do 與 with TFmT51.Create(Owner) do 的差異? (1)首先Delphi/File/New Application,即會產一個Form1。 (2)按Delphi/File/New Form按二次,產生Form2及Form3。 (3)按Delphi/Project/Options將Form2及Form3從Atuo-Create Form移到Available Form。 (4)在Form1及Form2放置一個Button1 (5)記得Form1要uses Form2、Form2要uses Form3 (6) procedure TForm1.Button1Click(Sender: TObject); begin with TForm2.Create(Self) do Show; end; procedure TForm2.Button1Click(Sender: TObject); begin with TForm3.Create(Self) do Show; end;執行此應用程式,按Form1.Button1產生Form2,按Form2.Button1產生Form3此時關掉Form2則Form3也一起被關掉,這是因為Form3的擁有者是Form2。 我們將程式改一下:(將Form2.Button1Click改為TForm3.Create(Owner) do) procedure TForm2.Button1Click(Sender: TObject); begin with TForm3.Create(Owner) do Show; end;執行此應用程式,按Form1.Button1產生Form2,按Form2.Button1產生Form3此時關掉Form2則Form3還存在,這是因為Form3的擁有者是Application,當應用程式結束時才會結束。 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |