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

請問一些宣告VCL元件的問題

答題得分者是:pcplayer99
chang1981
一般會員


發表:31
回覆:28
積分:11
註冊:2008-09-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-04-07 08:29:32 IP:61.230.xxx.xxx 訂閱
各位前輩好~  小弟有幾個新手的觀念問題想在這邊請教
1. 請問自行宣告VCL原件時, 為何在後面括號內一定要加上一個this,此用意何在
TImage MyImage = new *TImage(this)

2.請問要如何宣告靜態的VCL原件陣列
ex: TImage MyImage[10];
但是以上寫法看來不能編譯, 請問問題出在哪呢?

謝謝您!!!


P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-04-07 11:14:54 IP:61.67.xxx.xxx 未訂閱
VCL也是由 .PAS組成的, 所以你必須遵循 UNIT 的標準創建, 你提的 TImage .... 這是從那邊看來的, 它的前後文是如何, 應該不是只有這一列吧! 是否可以列出前後文的內容, 我們才知道整體的狀況!~
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-04-07 12:02:00 IP:58.60.xxx.xxx 訂閱
VCL 的 TImage 是继承自 TComponent 的,也就是说,它是一个 TComponent。如果你还没有面向对象的【继承】的概念,我打个比方:男人这个种类,是继承自【人】这个种类的,而人这个种类是继承自【动物】这个种类的,因此【男人】这个种类也就是【动物】这个类别的。

TComponent 的 Constructor 方法,有一个参数是 AOwner,所以,TImage 的 constructor 也有个参数是 AOwner,它指的是这个 TImage 类别的【对象】也就是【实例】的拥有者。

一个 TComponent 类别的对象实例,可以有一个拥有者,当然也可以没有。如果它有一个拥有者,则当它的拥有者被释放的时候,它会被自动释放,你就不需要去管理它的释放了。如果它没有拥有者,那么你创建了它,适当的时候,你要自己去释放它,否则会导致内存泄漏。

至于静态阵列,我在 DELPHI 里这样宣告:

var MyArray: array[0..6] of TImage;

编译是可以通过的。只不过,这样宣告后,只是你有了一个 MyArray 实例,但你并没有真正的7个 TImage 对象实例。要知道这个 MyArray 实例实际上只是开辟了放 7 个 TImage 对象实例指针(Pointer)的存储空间,并没有真正创建 TImage 对象实例。但你可以把你自己创建的对象实例(不管是你用 new 代码创建的,还是拖到 FORM 上的)的指针放到这个 array 里去。

===================引 用 chang1981 文 章===================
各位前輩好~ 小弟有幾個新手的觀念問題想在這邊請教
1. 請問自行宣告VCL原件時, 為何在後面括號內一定要加上一個this,此用意何在
TImage MyImage = new *TImage(this)

2.請問要如何宣告靜態的VCL原件陣列
ex: TImage MyImage[10];
但是以上寫法看來不能編譯, 請問問題出在哪呢?

謝謝您!!!

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