Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi在课堂上分配事件_Delphi_Events_Firedac - Fatal编程技术网

Delphi在课堂上分配事件

Delphi在课堂上分配事件,delphi,events,firedac,Delphi,Events,Firedac,我必须更改自定义查询类的数据类型映射(我使用的是FireDAC)。这本身没有问题,我已经创建了一个程序来完成这项工作。但我在大规模实施时遇到了困难。 我在类中创建了一个过程,该过程从数据库连接组件(具有正确的数据类型映射规则)获取self.FormatOptions.MapRules属性。现在我想更改我的类,使该类的每个组件都执行我的过程OnOpen,但我似乎找不到一种方法将过程分配给类中的事件 当数据库连接组件不是查询组件的父级时,是否有方法从数据库连接组件“继承”该属性 我已经尝试过使用构造

我必须更改自定义查询类的数据类型映射(我使用的是
FireDAC
)。这本身没有问题,我已经创建了一个程序来完成这项工作。但我在大规模实施时遇到了困难。 我在类中创建了一个过程,该过程从数据库连接组件(具有正确的数据类型映射规则)获取
self.FormatOptions.MapRules
属性。现在我想更改我的类,使该类的每个组件都执行我的过程
OnOpen
,但我似乎找不到一种方法将过程分配给类中的事件

当数据库连接组件不是查询组件的父级时,是否有方法从数据库连接组件“继承”该属性

我已经尝试过使用构造函数,但是因为我没有在运行时创建查询组件,所以没有调用构造函数

由于查询组件在项目中使用了500多次,我不想每次都手动将过程分配给事件…

好的,我只是“解决”了它。问题出在我的课堂上。它就像

  • 顶层:TMyCustomClass
  • 中级:TMygenerealClass
  • 底部:TStandardClass

在中产阶级中,Dataset.formatoptions.ownmaprules的默认值设置为true,这打破了传统。基本上我不了解遗产是如何运作的;)

嗯,映射规则(实际上是所有设置,如果不在数据集对象中修改的话)已经从指定的连接对象继承。我认为没有理由在这里做任何事情。正如维多利亚所说,地图规则已经被继承了。如果您展示演示问题的代码,您将获得更好的响应。我不清楚“自定义查询类”是什么意思,所有对象——甚至是表单或数据模块上的组件——都调用构造函数。你可能需要考虑重写一个特定的方法,而不是试图设置一个事件处理程序,但这只是一个猜测而没有看到任何代码。@ Victoria最初我认为应该是像你提出的,但是我是困惑的BC,当我试图访问“DAT.FalthOptudio.MaultReals[TION](0)]时,会遇到访问冲突。(这是我的查询,在本例中连接已正确设置)。因此我开始处理“TMy(Queryclass)”。我现在将“TMy(Queryclass)”中的所有内容恢复为默认值。通过测试,我发现“ownmaprules”heritage将其设置为true。但它似乎不是maprules.items,这应该是那样的还是我对调试继承属性的误解…?@Paul,对不起,但我不知道您的类设计。我只能说继承行为在中进行了描述。简言之,您设置的越低选项,其优先级越高(或者换句话说,如果不修改数据集级别对象中的特定设置选项,则该选项值将从分配的连接继承,如果不修改连接对象中的特定设置选项,则将从全局连接管理器继承)。