读书人

C++builder中的Sender到底是一种什么机

发布时间: 2013-12-15 22:17:19 作者: rapoo

C++builder中的Sender到底是一种什么机制?
C++builder中的(TObject *Sender),很常见,以前我一直以为Sender 是触发器的意思,比如btn1Click(TObject *Sender)(btn1 是按钮组件),点击的时候会触发事件。
可是我在网上搜了一下热心网友的介绍后,当单击btn时,Sender其实指向了btn1,也就是说*Sender=*btn1;
但是我在这里有个疑问。我设计了一个程序,有两个按钮:btn1.btn2.


[解决办法]

[解决办法]
例 : Button1 Button2 的 OnClick 皆指向 Button1Click 事件函式而共用......
void __fastcall TForm1::Button1Click(TObject *Sender)
{
((TButton *)Sender)->Caption = TEXT("改");
}

[解决办法]
Sender是那个控件引起触发的吧。
你的代码里确实调用了btn1Click事件。

你可以这样把两个button的事件指向同一个代码,btn1不单独写代码了,干脆指向btn2的事件,你看看效果。
void __fastcall TForm1::btn2Click(TObject *Sender)
{
if (Sender==btn2)
ShowMessage("Sender==btn2") ;
if (Sender==btn1)
ShowMessage("Sender==btn1") ;

}

[解决办法]
Sender 是在类内部调用时说明是谁触发了事件


外部执行事件函数时则与此可能无关,关键是传了的参数。


------解决方案--------------------


btn1Click(btn1) ;
sendmessage(btn1->Handle,lbuttondown);
sendmessage(btn1->Handle,lbuttonup);

读书人网 >C++ Builder

热点推荐