首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

C++builder中的Sender到底是一种什么机制?解决方法

2013-12-15 
C++builder中的Sender到底是一种什么机制?C++builder中的(TObject *Sender),很常见,以前我一直以为Sender

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

热点排行