在线编程在线课堂在线测评Anycodes在线编程

编程论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

How to use bs4??
本帖最后由 carry0987 于
Double Queue 问题描述 : The new founded Balkan Investment Group Bank (
John 问题描述 : Little John is playing very funny game
linux-command Linux命令大全搜索工具,内容包含Linux命令
Coati 是一款跨平台的代码查看工具,适用于 C/C++ 和 Java。商业软件。特性:1. 索引
系统可承载海量并发,消息收发确认机制 保障消息必达 系统采用动态智
全平台视频监控,支持安卓苹果以及pcweb,支持海康大华等主流dvr,全部源码以及文档 单聊、群聊、商
如何访问类的私有属性? 下面以 TPathData 为例,
问题:从 XE4 以来,Firemonkey 曲线绘图在移动平台不平滑的问题一直令人诟病,提交到官方的 QC 也是族繁不及备载,官方似乎有意的
操作数据库(RODBC)   odbcConnect(dsn, uid="", p
数据模式:mode函数显示任何对象的模式。常见的单个的
系统可承载海量并发,消息收发确认机制 保障消息必达 系统采用动态智
RabbitMQ与PHP(一) 项
Iease团队扩编预备中,盼望能有Ruby或者java工程师加盟。全职兼职都可以。有爱好的伴侣请与我接洽。 邮件:i
ruby 怎么设置装备摆设GTK2,求教指导下!
#include #include #include #include using namespace std; int main() {
标题如图所示: 有n盏灯,编号1~n。一开端灯都是关着的
成熟的消息收发确认机制,支持万人大群 支持开发自定义的消息sdk接口,扩展性超强 支持单/
成熟的消息收发确认机制,支持万人大群 支持开发自定义的消息sdk接口,扩展性超强 支持单/
1. 注意列表和集合的区别 set 列表表现形式: list_1
Ajax   Ajax即“Asynchronous Javascript And
大师好,我比来在做布谷鸟优
分辨提取A和B图像Harris角点,接下来须要对

[精彩分享] [示例] 访问类的私有属性

[复制链接]
发表于 2016-12-24 14:25:19 | 显示全部楼层 |阅读模式
如何访问类的私有属性?
下面以 TPathData 为例,它有一个私有属性 PathData,储存了每一个曲线点,但一般无法修改它,需要利用下面方法,才能访问修改(若有更好的方法,歡迎分享):

一、利用 RTTI 取得类私有属性(建议使用此方法)
  1. type
  2.   TPathDataHelper = class helper for TPathData
  3.   public
  4.     function PathData: TList<TPathPoint>;
  5.   end;
  6. function TPathDataHelper.PathData: TList<TPathPoint>;
  7. var Context1: TRttiContext;
  8.     Type1: TRttiType;
  9.     Field1: TRttiField;
  10. begin
  11.      Context1 := TRttiContext.Create;
  12.      Type1    := Context1.GetType(TPathData);
  13.      Field1   := Type1.GetField('FPathData');
  14.      if Assigned(Field1) then
  15.           Result := Field1.GetValue(Self).AsObject as TList<TPathPoint>
  16.      else Result := nil;
  17. end;
复制代码
参考:http://blog.qdac.cc/?p=2541 (VKHelper,感谢 swish)

二、利用仿类将私有属性改成公有(仿类的成员必需与原类成员位置及顺序相同,因此当版本不同且成员不同时,必需跟着修改)
  1. type
  2.   TPathDataHack = class(TInterfacedPersistent)
  3.   public
  4.     FOnChanged: TNotifyEvent;
  5.     FStyleResource: TObject;
  6.     FStyleLookup: string;
  7.     FStartPoint: TPointF;
  8.     FPathData: TList<TPathPoint>;
  9.   end;
  10.   TPathDataHelper = class helper for TPathData
  11.   public
  12.     function PathData: TList<TPathPoint>;
  13.   end;
  14. function TPathDataHelper.PathData: TList<TPathPoint>;
  15. begin
  16.      Result := TPathDataHack(Self).FPathData;
  17. end;
复制代码
参考:http://stackoverflow.com/questions/37351215/how-to-access-a-private-field-from-a-class-helper-in-delphi-10-1-berlin



上一篇:Delphi高手突破(三) Delphi高级进阶
下一篇:[修正] 移动平台曲线不平滑的问题(如:TRectangle, TPath...等)
在线编程(http://www.anycodes.cn)&编程论坛(http://www.52exe.cn)感谢您的支持!
回复

使用道具 举报

发表于 2017-3-23 18:35:35 | 显示全部楼层
楼上是脑残
在线编程(http://www.anycodes.cn)&编程论坛(http://www.52exe.cn)感谢您的支持!
回复 支持 反对

使用道具 举报

发表于 2017-4-3 14:35:33 | 显示全部楼层
没意思啊
在线编程(http://www.anycodes.cn)&编程论坛(http://www.52exe.cn)感谢您的支持!
回复 支持 反对

使用道具 举报

发表于 2017-4-30 19:12:54 | 显示全部楼层
莫装逼
在线编程(http://www.anycodes.cn)&编程论坛(http://www.52exe.cn)感谢您的支持!
回复 支持 反对

使用道具 举报

发表于 2017-6-21 12:45:05 | 显示全部楼层
不错不错不错,重要的事情说三遍
在线编程(http://www.anycodes.cn)&编程论坛(http://www.52exe.cn)感谢您的支持!
回复 支持 反对

使用道具 举报

发表于 2017-7-5 12:02:37 | 显示全部楼层
牛逼
在线编程(http://www.anycodes.cn)&编程论坛(http://www.52exe.cn)感谢您的支持!
回复 支持 反对

使用道具 举报

发表于 2017-8-14 20:38:20 | 显示全部楼层
吹吧
在线编程(http://www.anycodes.cn)&编程论坛(http://www.52exe.cn)感谢您的支持!
回复 支持 反对

使用道具 举报

发表于 2017-8-19 11:06:01 | 显示全部楼层
话说在线编程有啥用?
在线编程(http://www.anycodes.cn)&编程论坛(http://www.52exe.cn)感谢您的支持!
回复 支持 反对

使用道具 举报

发表于 2017-8-19 15:40:17 | 显示全部楼层
无聊啊,来看看
在线编程(http://www.anycodes.cn)&编程论坛(http://www.52exe.cn)感谢您的支持!
回复 支持 反对

使用道具 举报

发表于 2017-8-23 10:44:29 | 显示全部楼层
。。。。
在线编程(http://www.anycodes.cn)&编程论坛(http://www.52exe.cn)感谢您的支持!
回复 支持 反对

使用道具 举报

发布主题 上个主题 下个主题 快速回复 返回列表 官方QQ群
在线客服
客 服 中 心
群 机 器 人
网站二维码
收 起 客 服

QQ|Archiver|手机版|小黑屋|Anycodes ( ICP14002806Anycodes在线编程

GMT+8, 2018-11-15 04:44 , Processed in 1.619868 second(s), 96 queries .

Powered by Anycodes

© 2001-2013 吉林市群龙科技有限公司 Inc.

快速回复 返回顶部 返回列表