請問Tfom1(self.owner) 是什麼意思 |
答題得分者是:nicktop
|
yk1012001
一般會員 ![]() ![]() 發表:7 回覆:4 積分:2 註冊:2002-10-17 發送簡訊給我 |
|
Stallion
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
yk1012001
一般會員 ![]() ![]() 發表:7 回覆:4 積分:2 註冊:2002-10-17 發送簡訊給我 |
|
Stallion
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
h@visli
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
self指的是“Text:= Tform1(self.owner).ConvertUIString(Sender.asString);”這段代碼所在方法的類的實例,self.owner指的是這個實例的擁有者。(Sender指的是觸發這個事件的那個對象)
這段代碼的意思是要調用TForm1類的一個函數(方法)ConvertUIString。很TForm1是顯式類型轉換,很明顯,Self.Owner這個對象是一個TForm1類或其子類的一個實例,也即一個窗體。Self指的這個窗體上的一個控件。 ===================引 用 文 章=================== 請問我在delphi 看到一行指令如下 : Text:= Tform1(self.owner).ConvertUIString(Sender.asString); 請問 self.owner 代表什麼 ??
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
Mickey
版主 ![]() ![]() ![]() ![]() ![]() 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
nicktop
一般會員 ![]() ![]() 發表:2 回覆:9 積分:7 註冊:2007-01-20 發送簡訊給我 |
關於「Self」:
指的是當物件被建立起來後,物件本身 比方說我在 TForm1 的事件裡面這樣寫 procedure TForm1.OnShow(Sender: TObject); begin Self.Caption := 'ABCD'; end; 和 procedure TForm1.OnShow(Sender: TObject); begin Caption := 'ABCD'; end; 是完全一樣的意思 但是如果是下面這樣 procedure TForm1.OnShow(Sender: TObject); begin with Label1 do begin Caption := '1234'; Self.Caption := 'ABCD'; end; end; _ 因為 label1 和 form1這兩個物件都會有caption屬性 (假設某處有宣告並建立一個TForm1類別的 form1 物件) 此時加上 Self.Caption 就是強調我指的是form1的caption屬性 |
nicktop
一般會員 ![]() ![]() 發表:2 回覆:9 積分:7 註冊:2007-01-20 發送簡訊給我 |
關於「Owner」:
Owner 是 TCompoment 的屬性 繼承自 TCompoment 的類別(差不多就是所以你可以丟到Form上面的元件)也都會有這個屬性 Owner 是 Delphi 記憶體管理機制的一環 我們知道 Delphi 不像 Java 會自動釋放物件回收記憶體 但是 Owner 屬性可以稍稍彌補這個缺點 Owner 物件要被 free 的時候 會去把它所擁有的物件一起free掉 比方說這樣寫 (假設某處有宣告並建立一個TForm1類別的 form1 物件) procedure TForm1.FormCreate(Sender: TObject); var ButtonA, ButtonB, ButtonC: TButton; begin ButtonA.Owner := TButton.Create(Self); // ButtonA create的時候,把 form1丟進去當 // ButtonA 的 owner ButtonB := TButton.Create(Self); ButtonC := TButton.Create(Nil); end; 當 form1 要被 free 掉的時候,form1 會一並把 ButtonA, ButtonB 也 free 掉 但是因為 ButtonC 的 owner 不是 form1 所以 form1不會去管 ButtonC 除非你自己寫 ButtonC.Free 不然 form1 free 掉後 ButtonC 所耗用的記憶體就漏失了 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |