一个消息映射带自定义控件的问题(120分相赠!!!)

xiaoming851 2002-01-02 04:59:34
//..............myTEdit.h
class PACKAGE myTEdit : public TEdit
{
private:
TNotifyEvent fOnMouseLeave;
protected:
void __fastcall CMMouseLeave(TMessage&);
public:
__fastcall myTEdit(TComponent* Owner);
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, CMMouseLeave);
END_MESSAGE_MAP(TEdit);
__published:
__property TNotifyEvent OnMouseLeave = { read=fOnMouseLeave, write=fOnMouseLeave };
};
//---------------------------------------------------------------------------
#endif
//....................myTEdit.cpp
static inline void ValidCtrCheck(myTEdit *)
{
new myTEdit(NULL);
}
//---------------------------------------------------------------------------
__fastcall myTEdit::myTEdit(TComponent* Owner)
: TEdit(Owner)
{
}
//---------------------------------------------------------------------------
namespace Mytedit
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(myTEdit)};
RegisterComponents("Samples", classes, 0);
}
}
//---------------------------------------------------------------------------
void __fastcall myTEdit::CMMouseLeave(TMessage&)
{
if(fOnMouseLeave != NULL)
fOnMouseLeave(this);
}
......................................
编译并安装myTEdit自定义组件时,没有出现任何错误,
可是当在使用myTEdit组件的OnMouseLeave事件时,却出现提示说"myTEdit1->OnMouseLeave属性不存在,
请问这是怎么搞的???
谢谢,120分清囊相赠....谢谢~~~~~~~~~
...全文
155 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ton2000 2002-01-03
  • 打赏
  • 举报
回复
upup
IUNKNOWN_COM 2002-01-03
  • 打赏
  • 举报
回复
樓上,我用了,可以正常調用,可能你沒有注冊好控件吧,代碼是一摸一癢的
xiaoming851 2002-01-03
  • 打赏
  • 举报
回复
已经搞定了
xiaoming851 2002-01-03
  • 打赏
  • 举报
回复
谢谢大家
xiaoming851 2002-01-03
  • 打赏
  • 举报
回复
void __fastcall TForm1::myTEdit1MouseLeave(TObject *Sender)
{
ShowMessage("D");
}

//再正常不过了,可就是在运行的时候说此属性不存在,如果不调用就没事
xiaoming851 2002-01-03
  • 打赏
  • 举报
回复
void __fastcall TForm1::myTEdit1MouseLeave(TObject *Sender)
{
ShowMessage("D");
}

//再正常不过了,可就是在运行的时候说此属性不存在,如果不调用就没事
ThinkX 2002-01-03
  • 打赏
  • 举报
回复
另外,在protected中的函数最好用virtual
ThinkX 2002-01-03
  • 打赏
  • 举报
回复
楼上的,不是这样的吧
maoke000 2002-01-03
  • 打赏
  • 举报
回复
我靠,你用了两次
1:
 private
TNotifyEvent fOnMouseLeave;
2:
 protected:
 void __fastcall CMMouseLeave(TMessage&);
去掉任一个,不就行了。
建议去掉第一个.
ThinkX 2002-01-03
  • 打赏
  • 举报
回复
是不是fOnMouseLeave这个函数指针在构造时没有初始化为NULL,只是一个随机数,
所以
if(fOnMouseLeave != NULL)
fOnMouseLeave(this);
这句就有问题了
781014 2002-01-02
  • 打赏
  • 举报
回复
学习
nickgg 2002-01-02
  • 打赏
  • 举报
回复
把你的使用列出来!
gxgxfish0813 2002-01-02
  • 打赏
  • 举报
回复
UPUP

13,871

社区成员

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

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