OBject pascal 之屬性

例子:property  Color: TColor read GetColor write SetColor stored IsColorStored;
定義方式:property 屬性名:屬性數據類型   read子句(1)  write子句(2)  其他子句(3);
(1)read子句用於來讀取屬性的方法或字段.如果指定的是字段(Field),則字段的數據類型必須與屬性的
   數據類型相同.如果指定的是方法,則通常是一個不帶參數的函數,它的返回類型就是屬性的類型,而且
   函數名通常以'Get'開頭.
(2)a.Write子句用於指定修改屬性的方法,通常是一個過程,而且是一個只有一個參數的過程,參數的數據類型與屬性的相同,主要用於傳遞新值,過程名通常以'Get'開頭.在定義方法時,通常首先比較屬性的新值與默認值,如不同,就保存在一個字段中,以確保得到的總是最新值.
   b.可以沒有write子句,表示屬性就是'只讀',不能被修改.  
注:read和write子句中指定的方法或字段通常在類的private部分聲明,即都是私有的.

(3)stored,default和nodefault子句
  
   a.stored子句用於指定一個布爾表達式(可以是一個布爾常量,布爾類型的字段或返回布爾值的函數),用來控制屬性的存儲行爲,通常只適合與非數組的屬性.
         表達式爲false時,不將屬性值存到Form文件中;爲true時,先比較屬性的當前值與默認值.相等就不存,不等或者沒默認值,就把當前值存到Form文件中.
  
   b.default子句指定屬性的默認值.注意:這裏所說的默認值,只是用於與屬性的當前值進行比較,以確定是否把屬性值存儲到Form文件中.default後面必須跟的是一個類型與屬性類型一致的常量.
     注:default子句只適合在1~31之間的集合類型或有序類型的屬性.
  
   c.nodefault子句強調屬性沒有默認值,相當於沒有寫.必須明確地使用的情況例如:屬性在基類中是有默認值的,而派生類不希望它有默認值,就要用nodefault子句把原有的默認值去掉.
    
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章