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);