导航
  • 主页
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发
  • 问答

一个消息映射带自定义控件的问题(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分清囊相赠....谢谢~~~~~~~~~
...全文
141 点赞 收藏 13
写回复
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
回复
发动态
发帖子
C++ Builder
创建于2007-08-02

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
社区公告
暂无公告