DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: jeff1314
今日帖子: 9
在线用户: 4
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 akai1203 (w-dins) ★☆☆☆☆ -
普通会员
2020/2/15 21:25:20
标题:
注册类过程或函数并动态调用 浏览:579
加入我的收藏
楼主: 各位D友,请教一个问题,如果将一个类中的过程或函数地址保存起来,并在需要的时候动态调用 ?

如下,如何将这个ServiceA 保存起来方便动态调用?

TTest= class

public 
  procedure  ServiceA ;

end; 

在 initialization段落中
使用类似 RegistCustomService('ServiceA ',@ServiceA ) ?
----------------------------------------------
-把学习当信仰
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2020/2/16 9:32:53
1楼: 莫名其妙的需求,你这样不如保存对象本身。

type tyourmethodtype = procedure (...) of object;
...
var
  psavedmethod: tyourmethodtype;
...
  psavedmethod := ServiceA;
...

调用的时候:
psavedmethod(...);
----------------------------------------------
--
作者:
男 akai1203 (w-dins) ★☆☆☆☆ -
普通会员
2020/2/16 10:29:01
2楼: 也不算莫名其妙,是这样的,我希望在工具栏动态创建一些按钮 ,每一按钮对应一个服务。
这个服务首先在后台管理界面中定义 ,动态创建按钮时根据tag 将这些注册的服务一一对应taction的excute事件 。
不知道描述的清不清楚
----------------------------------------------
-把学习当信仰
作者:
男 akai1203 (w-dins) ★☆☆☆☆ -
普通会员
2020/2/16 10:36:12
3楼: 动态创建 TactionA,TactionB,tag为100和101

在单元中注册两服务ServiceA,服务ServiceB,索引(或名称)为100和101

把两action.excute的和 两服务绑定起来

就是这么个意图
----------------------------------------------
-把学习当信仰
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2020/2/16 13:15:50
4楼: 那做成插件模式咯,自己定义一个纯虚的基类,你所有的按钮只调用基类的公共方法。具体实现由具体的后代类对象来完成。每定义一个实际操作对应一个后代类的对象,统一保存在tag属性里。在click的时候盲调用就可以了。
----------------------------------------------
--
作者:
男 sun2grit (Asun) ★☆☆☆☆ -
盒子活跃会员
2020/2/16 16:38:44
5楼: 创建一个全局的List,初始化里将类实例后加入,在需要用的时候往里面取就是了
Delphi里源码大量用到这种方法
----------------------------------------------
家具安装 万师傅家具安装平台 安装维修师傅黄页 一键式测量仪
作者:
男 akai1203 (w-dins) ★☆☆☆☆ -
普通会员
2020/2/16 17:06:26
6楼: https://blog.csdn.net/rznice/article/details/43190537 这篇文章给了启发,感谢楼上几位,祝大家都安好
----------------------------------------------
-把学习当信仰
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行66.40625毫秒 RSS