访问受保护的属性
2016-07-24 17:03
225 查看
偶尔翻Marco Canto的书,看到这个小技巧,记下来,老是忘记这个小技巧。
比如要访问TDBGrid的Col和Row属性,这两个属性是Protected,一般不能直接访问,可以这样加个套:
type
TFakeDBGrid = class(TDBGrid);
然后:TFakeDBGrid(dbgrid1).Col; TFakeDBGrid(dbgrid1).Row;
还有TControl的Text属性,大部分控件隐藏了或者改名为Caption
type
TFakeControl = class(TControl);
TFakeControl(Button1).Text;
不过这样做,明显破坏了对象的封装,尽量少用。
注意:在哪个单元用,就得在那个单元声明TFake,才能访问保护属性,这是利用了DELPHI对于private和protected对于同单元可见特性。
但是现在版本有strict private和strict protected ,那就无能为力了。
比如要访问TDBGrid的Col和Row属性,这两个属性是Protected,一般不能直接访问,可以这样加个套:
type
TFakeDBGrid = class(TDBGrid);
然后:TFakeDBGrid(dbgrid1).Col; TFakeDBGrid(dbgrid1).Row;
还有TControl的Text属性,大部分控件隐藏了或者改名为Caption
type
TFakeControl = class(TControl);
TFakeControl(Button1).Text;
不过这样做,明显破坏了对象的封装,尽量少用。
注意:在哪个单元用,就得在那个单元声明TFake,才能访问保护属性,这是利用了DELPHI对于private和protected对于同单元可见特性。
但是现在版本有strict private和strict protected ,那就无能为力了。
相关文章推荐
- Qt之QSystemTrayIcon
- Qt之QSystemTrayIcon
- Qt之QSystemTrayIcon
- 【C++ 与 STL】映射:map
- JavaSE 高级 第04节 StringBuffer类
- 【python】any()和all()
- HDU—1052—Tian Ji -- The Horse Racing
- 常用聚类算法以及算法评价
- Sublime Text 默认是没有显示或隐藏行号的快捷键
- 数论基础1011 UVA 11754 剩余定理+枚举
- linux从入门到高手的学习书籍整理
- Android 6.0中添加硬件抽象层(HAL)
- Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究
- 代码审计的艺术系列—第三篇
- 全局获取Context
- WPF报表
- IO流以日志文件记录异常
- hdu 5726 2016 Multi-University Training Contest 1(二分+dp)
- 深入浅出看流媒体前世今生,分分钟二逼变牛逼
- Python 之 pickle/json序列化