請問一些宣告VCL元件的問題 |
答題得分者是:pcplayer99
|
chang1981
一般會員 發表:31 回覆:28 積分:11 註冊:2008-09-18 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
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]; 但是以上寫法看來不能編譯, 請問問題出在哪呢? 謝謝您!!! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |