回 帖 发 新 帖 刷新版面

主题:事件的问题!关注一下!在线等待

我在dll里边用了一个控件,然后我想把代码加到这个控件的一个事件里,不知道怎么加阿,
TNMFTP *nftp1;
    nftp1=new TNMFTP(0);
然后我想让他执行nftp1的OnListItem这个事件,怎么给这个事件负值阿,是赋一个函数阿,还是一个对象阿,还是怎么弄啊,请各位大哥,大姐们帮帮忙阿,十万火急!小弟先谢过了!在线等待

回复列表 (共13个回复)

沙发

定义函数:void __fastcall NMFtpListItem(AnsiString Listing);
此函数共有,私有都无所谓
nftp1->OnListItem = NMFtpListItem;即可

板凳

TNMFTP *nftp1;
    nftp1=new TNMFTP(0);
nftp1->OnListItem=MyListItem;

void __fastcall MyListItem(TObject *Sender /*这里的参数要一样*/)
{
//TNMFTP *nftp1;
   
我这样写的,但是还是不对啊
出这个错误
[C++ Error] Unit1.cpp(144): E2451 Undefined symbol 'MyListItem'

3 楼

我改成
void __fastcall MyListItem(TObject *Sender /*这里的参数要一样*/)
{
//TNMFTP *nftp1;
}

TNMFTP *nftp1;
    nftp1=new TNMFTP(0);
nftp1->OnListItem=MyListItem;

错误提示又换成
[C++ Error] Unit1.cpp(150): E2034 Cannot convert 'void (_fastcall *)(TObject *)' to 'void (_fastcall * (_closure )(AnsiString))(AnsiString)'

我是个新手,请多多指教阿

4 楼

事件和函数的定义不统一嘛.
参数一定要是AnsiString Listing

5 楼

还有函数前面的ClassName::掉了

6 楼

void __fastcall NMFtpListItem(TNMFTP *nftp){

}

TNMFTP *nftp1;
    nftp1=new TNMFTP(0);
nftp1->OnListItem=NMFtpListItem(nftp1);

[C++ Error] Unit1.cpp(148): E2109 Not an allowed type

7 楼

ClassName怎么写啊,写在什么地方

8 楼

我是写在dll里的

9 楼

void __fastcall NMFtpListItem(AnsiString Listing){
}
这个函数也可以不为类函数(function of object)
参数一定要对....
只能为AnsiString

10 楼

void __fastcall NMFtpListItem(AnsiString Listing){
}
TNMFTP *nftp1;
    nftp1=new TNMFTP(0);

    AnsiString abc="wgq";
     nftp1->OnListItem=NMFtpListItem(abc);

[C++ Error] Unit1.cpp(148): E2109 Not an allowed type
或者

nftp1->OnListItem=NMFtpListItem;

[C++ Error] Unit1.cpp(148): E2034 Cannot convert 'void (_fastcall *)(AnsiString)' to 'void (_fastcall * (_closure )(AnsiString))(AnsiString)'

这是怎么回事啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册