OBject pascal 之属性
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://520920.blog.51cto.com/126264/38037 |
例子: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子句把原有的默认值去掉. 本文出自 “数据库爱好者” 博客,请务必保留此出处http://520920.blog.51cto.com/126264/38037 本文出自 51CTO.COM技术博客 |


panther666
博客统计信息
热门文章
最新评论
友情链接