高手请进,一个错误不知道什么原因就是搞不定。急,在线等

huang_jihua 2002-08-29 03:30:52
我自己写了一个函数用作响应Panel的Click事件
void __fastcall PanelClick(TObject *Sender)
{
//我的处理代码
}
TPanel *MenuPanel[5];
for(i=0;i<5;i++)
{
MenuPanel[i]->OnClick=PanelClick;
}
可是编译的时候老是说:
[C++ Error] Functions.cpp(77): E2034 Cannot convert 'void (_fastcall *)(TObject *)' to 'void (_fastcall * (_closure )(TObject *))(TObject *)'
注:我这些都是写在一个自己新建的UNIT中的。是NEW unit.请高手解答。急!!
...全文
23 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingcaiyao 2002-08-29
  • 打赏
  • 举报
回复
我的第二,三张贴子,已经很清楚地回答了你的问题,你可以将你的处理代码放在全局函数,不过需要再多定义一个类的成员函数,然后在这个类的成员函数中去调用你的全局函数。我再写一遍程序片段:
class TForm1:public TForm
{
private:
void __fastcall MyFunction(TObject *Sender);
public:
protected:
}
...
.cpp File
void __fastcall PanelClick(TObject *Sender)//注意看这里的PanelClick就是你要求的全局函数
{
//我的处理代码
}
TPanel *MenuPanel[5];
for(i=0;i<5;i++)
{
MenuPanel[i]->OnClick=MyFunction;//注意这里不再是PanelClick函数了。
}
void __fastcall TForm1::MyFunction(TObject *Sender)
{
PanelClick(NULL);//在这里调用你的全局函数PanelClick
}


fangrk 2002-08-29
  • 打赏
  • 举报
回复
同意kingcaiyao(AKing) ( )
huang_jihua 2002-08-29
  • 打赏
  • 举报
回复
谢谢 kingcaiyao(AKing);你的回答我已经清楚了,不过我现在想把这些东西都写在全局函数里,不知道有没有办法,谢谢,帮我看看。
……………………………………………………………………………………

,--^----------,--------,-----,-------^--,
| ||||||||| `--------' | O
`+---------------------------^----------|
`\_,-------, _________________________|
/ XXXXXX /`| /
/ XXXXXX / `\ /
/ XXXXXX /\______(
/ XXXXXX /
/ XXXXXX /
(________(
`------'
……………………………………………………………………………………
kingcaiyao 2002-08-29
  • 打赏
  • 举报
回复
oh,注意上面写错了,如果用我第二张贴子提到的方法,那么PanelClick还是按照你原来的定义,将它定义成一个全局函数,而不是Form1的成员函数:
void __fastcall PanelClick(TObject *Sender)
{
//我的处理代码
}
kingcaiyao 2002-08-29
  • 打赏
  • 举报
回复
如果你不将它定义成类的成员函数,也行,那么你就再定义一个类的成员函数来调用你的PanelClick就行了,即是说:
class TForm1:public TForm
{
private:
void __fastcall MyFunction(TObject *Sender);
public:
protected:
}
...
.cpp File
void __fastcall TForm1::PanelClick(TObject *Sender)
{
//我的处理代码
}
TPanel *MenuPanel[5];
for(i=0;i<5;i++)
{
MenuPanel[i]->OnClick=MyFunction;
}
void __fastcall TForm1::MyFunction(TObject *Sender)
{
PanelClick(NULL);
}

kingcaiyao 2002-08-29
  • 打赏
  • 举报
回复
你的PanelClick函数应该定义成类的成员函数,即是说:
class TForm1:public TForm
{
private:
void __fastcall PanelClick(TObject *Sender)
public:
protected:
}
...
.cpp File
void __fastcall TForm1::PanelClick(TObject *Sender)
{
//我的处理代码
}
TPanel *MenuPanel[5];
for(i=0;i<5;i++)
{
MenuPanel[i]->OnClick=PanelClick;
}

huang_jihua 2002-08-29
  • 打赏
  • 举报
回复
不递归,
MenuPanel[i]->OnClick=PanelClick;是在另外一个函数中调用的。
fangrk 2002-08-29
  • 打赏
  • 举报
回复
void __fastcall PanelClick(TObject *Sender)//PanelClick
MenuPanel[i]->OnClick=PanelClick;//PanelClick

递归吗???

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧