为注册组件创建事件处理程序的问题
Issue with creating event handlers for registered components
我有一个在 RAD Studio C++Builder 10.2 中创建的包,其中包含许多新组件。我按如下方式注册每个组件(在组件的 .cpp
文件的底部):
namespace Tmbdstringgrid_component
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TMBDStringGrid)};
RegisterComponents(L"MyComponents", classes, 0);
}
}
这些组件有新的事件处理程序,例如:
__property TNotifyEvent OnValueChange = {read=FOnValueChange, write=FOnValueChange};
安装包含这些组件的包后,在设计时将这些组件之一添加到窗体,然后通过在对象检查器中双击事件来创建事件处理程序,我得到以下信息:
void __fastcall TForm1::MBDNumEdit1ValueChange(TObject *param_0)
而不是:
void __fastcall TForm1::MBDNumEdit1ValueChange(TObject *Sender)
有人可以帮忙吗?为什么它不显示事件类型中定义的正确名称,而是使用 param_0
、param_1
等?
我怀疑这与组件的注册方式有关。
您的代码没有任何问题。当使用 Clang 编译器而不是经典的 Borland 编译器时,这只是 C++Builder 10.2 和 10.3 中的一个已知错误:
RSP-28047: Wrong function header created for callbacks from an imported ActiveX Control
不确定这个问题在 10.4 和 11.0 中是否仍然存在,但门票仍然开放。
我有一个在 RAD Studio C++Builder 10.2 中创建的包,其中包含许多新组件。我按如下方式注册每个组件(在组件的 .cpp
文件的底部):
namespace Tmbdstringgrid_component
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TMBDStringGrid)};
RegisterComponents(L"MyComponents", classes, 0);
}
}
这些组件有新的事件处理程序,例如:
__property TNotifyEvent OnValueChange = {read=FOnValueChange, write=FOnValueChange};
安装包含这些组件的包后,在设计时将这些组件之一添加到窗体,然后通过在对象检查器中双击事件来创建事件处理程序,我得到以下信息:
void __fastcall TForm1::MBDNumEdit1ValueChange(TObject *param_0)
而不是:
void __fastcall TForm1::MBDNumEdit1ValueChange(TObject *Sender)
有人可以帮忙吗?为什么它不显示事件类型中定义的正确名称,而是使用 param_0
、param_1
等?
我怀疑这与组件的注册方式有关。
您的代码没有任何问题。当使用 Clang 编译器而不是经典的 Borland 编译器时,这只是 C++Builder 10.2 和 10.3 中的一个已知错误:
RSP-28047: Wrong function header created for callbacks from an imported ActiveX Control
不确定这个问题在 10.4 和 11.0 中是否仍然存在,但门票仍然开放。