線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:595
推到 Plurk!
推到 Facebook!

有關元件CREATE的問題

答題得分者是:heart75047
chjunsen
一般會員


發表:38
回覆:15
積分:10
註冊:2006-10-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2015-12-29 14:45:16 IP:59.125.xxx.xxx 訂閱

[code delphi]
VAR Q:TQUERY;
BEGIN
Q:=TQUERY.CREATE(NIL);

Q:=TQUERY.CREATE(SELF);
END
[/code]
各位大家好

想請問這兩種語法的不同之處

謝謝
heart75047
一般會員


發表:9
回覆:13
積分:19
註冊:2010-05-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2015-12-30 21:55:36 IP:114.33.xxx.xxx 訂閱
Create(AOwner: TComponent)
AOwner 擁有者

如果A的擁有者被FREE掉 A也會被FREE掉

如果你新增一個專案 在form1 底下 那麼Self 指的是Form1 也就是擁有者是From1

Nil指的是空指標 也就是沒有擁有者

做個小實驗即可知道他們的不同

開一個專案 拉一個按鈕 Click事件如下

[code delphi]
procedure TForm1.Button1Click(Sender: TObject);
var A,B:TButton;
P:TPanel;
begin
A:=TButton.Create(Self);
A.Parent:=Self;
A.Top:=100;
A.Left:=100;
A.Caption:='A';

P:=TPanel.Create(Self);
p.Parent:=Self;
P.Top:=100;
P.Left:=200;

B:=TButton.Create(P);
B.Parent:=Self;
B.Top:=100;
B.Left:=300;
B.Caption:='A';

P.Free;
end;
[/code]

當按下後 A還在 但是B不見了

因為B的擁有者是P 但是P被Free掉了 所以B也被Free掉了
chjunsen
一般會員


發表:38
回覆:15
積分:10
註冊:2006-10-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2015-12-31 08:48:59 IP:59.125.xxx.xxx 訂閱
感謝


===================引 用 heart75047 文 章===================
Create(AOwner: TComponent)
AOwner 擁有者

如果A的擁有者被FREE掉 A也會被FREE掉

如果你新增一個專案 在form1 底下 那麼Self 指的是Form1 也就是擁有者是From1

Nil指的是空指標 也就是沒有擁有者

做個小實驗即可知道他們的不同

開一個專案 拉一個按鈕 Click事件如下

[code delphi]
procedure TForm1.Button1Click(Sender: TObject);
var A,B:TButton;
P:TPanel;
begin
A:=TButton.Create(Self);
A.Parent:=Self;
A.Top:=100;
A.Left:=100;
A.Caption:='A';

P:=TPanel.Create(Self);
p.Parent:=Self;
P.Top:=100;
P.Left:=200;

B:=TButton.Create(P);
B.Parent:=Self;
B.Top:=100;
B.Left:=300;
B.Caption:='A';

P.Free;
end;
[/code]

當按下後 A還在 但是B不見了

因為B的擁有者是P 但是P被Free掉了 所以B也被Free掉了
系統時間:2017-10-17 15:46:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!