|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2020/2/15 21:25:20 |
标题: |
|
加入我的收藏 |
楼主: |
各位D友,请教一个问题,如果将一个类中的过程或函数地址保存起来,并在需要的时候动态调用 ?
如下,如何将这个ServiceA 保存起来方便动态调用?
TTest= class
public procedure ServiceA ;
end;
在 initialization段落中 使用类似 RegistCustomService('ServiceA ',@ServiceA ) ?
----------------------------------------------
-把学习当信仰 |
作者: |
|
2020/2/16 9:32:53 |
1楼: |
莫名其妙的需求,你这样不如保存对象本身。
type tyourmethodtype = procedure (...) of object; ... var psavedmethod: tyourmethodtype; ... psavedmethod := ServiceA; ...
调用的时候: psavedmethod(...);
----------------------------------------------
--
|
作者: |
|
2020/2/16 10:29:01 |
2楼: |
也不算莫名其妙,是这样的,我希望在工具栏动态创建一些按钮 ,每一按钮对应一个服务。 这个服务首先在后台管理界面中定义 ,动态创建按钮时根据tag 将这些注册的服务一一对应taction的excute事件 。 不知道描述的清不清楚
----------------------------------------------
-把学习当信仰
|
作者: |
|
2020/2/16 10:36:12 |
3楼: |
动态创建 TactionA,TactionB,tag为100和101
在单元中注册两服务ServiceA,服务ServiceB,索引(或名称)为100和101
把两action.excute的和 两服务绑定起来
就是这么个意图
----------------------------------------------
-把学习当信仰
|
作者: |
|
2020/2/16 13:15:50 |
4楼: |
那做成插件模式咯,自己定义一个纯虚的基类,你所有的按钮只调用基类的公共方法。具体实现由具体的后代类对象来完成。每定义一个实际操作对应一个后代类的对象,统一保存在tag属性里。在click的时候盲调用就可以了。
----------------------------------------------
--
|
作者: |
|
2020/2/16 16:38:44 |
5楼: |
创建一个全局的List,初始化里将类实例后加入,在需要用的时候往里面取就是了 Delphi里源码大量用到这种方法
----------------------------------------------
家具安装 万师傅家具安装平台 安装维修师傅黄页 一键式测量仪
|
作者: |
|
2020/2/16 17:06:26 |
6楼: |
https://blog.csdn.net/rznice/article/details/43190537 这篇文章给了启发,感谢楼上几位,祝大家都安好
----------------------------------------------
-把学习当信仰
|
|