再问控件封装到DLL中的问题
控件封装到DLL中,原来控件的事件怎么处理呢?比如TIdTCPServer1控件的事件:
void __fastcall TForm::IdTCPServer1Execute(TIdPeerThread *AThread);//这是窗口程序中的声明,在DLL怎么声明呢?
[解决办法]
VCL组件的事件处理函数,必须是一个类成员函数,你自己定义一个类,然后在其中加入一个成员函数,形如:
void __fastcall IdTCPServer1Execute(TIdPeerThread *AThread);
然后创建一个自定义类的对象,再将TIdTCPServer控件的OnExecute事件指向这个对象的IdTCPServer1Execute方法就行了。
[解决办法]
void __fastcall myIdTCPServer1Execute(TIdPeerThread *AThread);
给控件赋值
this->IdTCPServer1->OnExecute =myIdTCPServer1Execute;