直播中
回答:
首先說說AOwner參數(shù)。顧名思義AOwer就是所有者的意思,也就是說您要生成的控件是由誰所有的!在Delphi中控件的所有者是要負(fù)責(zé)該控件的生成和釋放的。也即是說控件的所有者如果調(diào)用了Free方法刪除自己,那么他所擁有的控件也一樣要調(diào)用Free方法刪除自己。明白了么?
Self在Delphi中總是代表實例本類,大概等于是C++中的this指針,如果學(xué)過C++的話就很容易明白啦!這個Self和C++中的this指針一樣也是隱含于其所在類的所有屬性和方法前的,也就是說你對本類的方法的調(diào)用和屬性訪問都是隱含的在最前面加上Self這個前綴的。Delphi中的程序多數(shù)都是一個窗體一個類的,所以Self常常是指其所在的窗體的實例。例如我們常常單獨用Close方法來關(guān)閉本窗口,假設(shè)有一個叫Form1的窗口我們要關(guān)閉他。現(xiàn)在我們可以試試用Close或者Self.Close來試一試,比較以下就可以明白,他們是等價的!
Application在Delphi中是表示整個應(yīng)用程序,他是TApplication類的一個實例在一個應(yīng)用程序中有且只有一個,并且是不用用戶干預(yù)而自動生成的。
說到這里也許大家很容易就能看出他們之間的區(qū)別來了!我們光說沒有意思,來舉個例子說明,請跟著下面的說明建立一個程序:
打開Delphi5,新建立一個應(yīng)用程序,加入Form1、Form2和Form3三個窗口,其對應(yīng)的單元文件分別是Unit1、Unit2和Unit3;在Form1上放兩個分別名為Button1和Button2的TButton類按鈕,在Form2上放一個名為Button3的TButton類按鈕;在Form1的單元文件Unit1中的interface下的uses部分加入對Form2的單元文件Unit2的引用,在Form2的單元文件Unit2中的interface下的uses部分加入對Form3的單元文件Unit3的引用;在Form1的private關(guān)鍵字下定義Form2: TForm2;在Form2的private關(guān)鍵字下定義Form3: TForm3;
在Button1的OnClick事件中寫如下代碼:
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2:= TForm2.Create(Self);
Form2.Show;
end;
在Button2的OnClick事件中寫如下代碼:
procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.Free;//將動態(tài)建立的Form釋放
end;
在Button3的OnClick事件中寫如下代碼:
procedure TForm2.Button3Click(Sender: TObject);
begin
Form3:= TForm3.Create(Self);
Form3.Show;
end;
運行后依次點三個按鈕試試看,然后把Form3:= TForm3.Create(Self);這句用Form3:= TForm3.Create(Application)代替再試試看有什么不一樣,是不是明白了我上面所講的呢?一定要試試哦!還要提醒一點,誰建立誰釋放原則要牢記哦!??!