__property TBitmap* Bitmap = {read=GetBitmap, write=SetBitmap}; __property的用法
2009-03-05 11:25
120 查看
__property TBitmap* Bitmap = {read=GetBitmap, write=SetBitmap}; 即为某个类(Class)定义一个属性(Property),而对于属性的操作则分为两种,一种获取(Get)或者叫作读取(Read)操作,另一种是设置(Set)或者叫作写入(Write)操作,这些操作就在后等号(=)后而的花括号('{'&'}')里面声明。read表示读取操作,write表示设置该属性的操作,用等号(=)分隔开后接着就是对应该操作的数据变量、过程(设置采用过程,返回值为void,带至少一个参数,参数的类型即该属性的类型)或函数(对应读取操作,返回值为该属性的数据类型,参数为零个或多个)。同时还可以为属性编辑器添加一个默认值 (nodefault or default=DefaultInitializeValue,默认值通常是一个常量值,对于能否使用函数本人不曾了解,楼主可以查阅相关文档)。 例如: class TA :public TParentClass { private: int FLeft; //属性数据存储变量放至私有域, //如此可以起到保护数据的作用, //比如此例当中的Left是一个属性, //当Left值改变之后, //那么相应的该对象的位置(Position) //也需要相应起变化。 //而当数据放到public当中时, //外部对象就可以直接对该变量的值 //那么该对象相应的实际位置, //由于未得到改变的通知(没有通知入口) //而未改变,如此就导致属性错乱 //而把它放到私有域当中, //那么外部对象就不能直接操作 void __fastcall SetLeft(const int Value); //另外给出一个属性(property)接口 //给外部进行设置, //而属性接口当中的设置则设立一个过程SetLeft来作处理, //在修改Left属性值的同时主要是修改实际的位置(position) protected: public: __property int Left = {read=FLeft /*直接读取私有域当中FLeft的值*/, write=SetLeft /*通过过程SetLeft对FLeft进行设置*/, default=0 /*属性编辑器默认赋值为0*/ }; }; //SetLeft过程 void __fastcall TA::SetLeft(const int Value) { try { //改变实际位置 SetPosition(Value /*Left,-1 As NoChange*/, -1 /*Top,-1 As NoChange*/, -1 /*Width,-1 As NoChange*/, -1 /*Height,-1 As NoChange*/); } catch(...) { //调整位置失败,则不改变属性值 return; } FLeft=Value; }
相关文章推荐
- JS - Object and Property的删除用法
- java的property配置文件的用法
- Uncaught TypeError: Cannot read property 'plugin' of undefined
- Android属性动画完全解析(三)-Interpolator和ViewPropertyAnimator的用法
- IOS开发之tableView的刷新以及property属性的用法
- Property Animator基本用法
- read, write 函数用法
- s:property用法
- Cannot read property 'val' of null
- boost::property_tree实例用法
- PropertyUtils.getProperty和PropertyUtils.setProperty的用法详解
- 关于TypeError: Cannot read property '0' of undefined
- [jQuery1.9]Cannot read property ‘msie’ of undefined错误的解决方法
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- Struts2学习笔记(5)-----Struts2数据标签Property,Set和Push的用法
- oninput,onpropertychange,onchange的用法和区别
- canvas出现Uncaught TypeError: Cannot read property 'getContext' of null 错误
- 关于js Uncaught TypeError: Cannot read property 'style' of null 问题
- oninput,onpropertychange,onchange的用法和区别
- oninput,onpropertychange,onchange的用法和区别