關于Templates的用法 |
尚未結案
|
donlly
一般會員 發表:45 回覆:73 積分:23 註冊:2004-11-30 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
|
donlly
一般會員 發表:45 回覆:73 積分:23 註冊:2004-11-30 發送簡訊給我 |
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,UDBFormWizard; type TForm2 = class(TForm) Button1: TButton; Button2: TButton; procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation uses unit1; {$R *.dfm} procedure TForm2.Button2Click(Sender: TObject); var OneBtn:Tbutton; begin OneBtn:=form1.Button1.Create(application); OneBtn.Parent:=form2; end; end.我已經試過,OneBtn可以繼承form1中的button1的事件,但是有錯誤,如圖,為什么? 而且OneBtn的大小與button1不一樣,為什么謝謝 發表人 - donlly 於 2004/12/15 12:30:51 |
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
procedure TForm2.Button2Click(Sender: TObject); var OneBtn:Tbutton; begin OneBtn:=form1.Button1.Create(application);//這種寫法是不對的,這樣並不代表OneBtn是繼承自from1.Button1 OneBtn.Parent:=form2; end;我想你應該弄清楚什麼是Class,什麼是Class的Instance; 這樣來說吧,我們定義一個Class(如TForm1)只是定義一種資料型態, 而實際產生物件則是必須藉由定義好的Class透過Create的動作,在記憶體中實際配置記憶體,然後Class的特性會被填入這個位置,最後指向這個記憶體位置的指標會被傳回. OneBtn := TButton.Create(Self); TButton.Create(Self)的動作就是Class TButton 透過它的 Create Method 實際在記憶體中產生一個TButton物件(Instance),而回傳的指標則在OneBtn這個物件指標保存下來. 舉例來說,我們刻好一個印章(Class),然後可以用來在需要的地方蓋上印記(Instance),通常我們應該不會用蓋好的印記再去蓋成另一個印記吧! 我要說的是產生實際物件應該透過Class而不是Instance. |
donlly
一般會員 發表:45 回覆:73 積分:23 註冊:2004-11-30 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |