社区
C++ Builder
帖子详情
询问有关事件数组方法
netengine
2004-01-02 03:05:29
比如我创建不定数量TButton按钮,每个按钮都有各自的ID,但我只想有一个Click响应点击事件,如OnButtonClick(Sender,ID);我利用事件触发时的ID来让对应ID的按钮变Caption,怎么实现呢?
就是说我是不是应该有个事件数组,来存放每个按钮的OnClick呢?但是,我又怎么对应是哪个按钮的Click呢?
另外,到可以用Button->Tag来区分,但是我不想用这种方法,谁来帮帮我啊?
...全文
143
9
打赏
收藏
询问有关事件数组方法
比如我创建不定数量TButton按钮,每个按钮都有各自的ID,但我只想有一个Click响应点击事件,如OnButtonClick(Sender,ID);我利用事件触发时的ID来让对应ID的按钮变Caption,怎么实现呢? 就是说我是不是应该有个事件数组,来存放每个按钮的OnClick呢?但是,我又怎么对应是哪个按钮的Click呢? 另外,到可以用Button->Tag来区分,但是我不想用这种方法,谁来帮帮我啊?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
aliker
2004-01-02
打赏
举报
回复
void __fastcall TForm1::CommonButtonClick(TObject *Sender)//公共事件句柄
{
ShowMessage("你按了"+((TButton*)Sender)->Caption);
}
void __fastcall TForm1::TestButtonClick(TObject *Sender)
{
static int ibtnCount=0;
ibtnCount++;
TButton * NewButton=new TButton(this) ;
NewButton->Parent=this ;
NewButton->Top= ibtnCount*10 ;
NewButton->Left= ibtnCount*10 ;
NewButton->Caption=AnsiString("第"+ibtnCount+"个按钮");
NewButton->OnClick = CommonButtonClick;
}
ljlln
2004-01-02
打赏
举报
回复
pNew->Add(pNewBTN) ;
保存的是每一个Button控件,你取出Butoon不就可以使用他们的事件了吗?
只能用一个容器存放你的Button,不能存放Tevent ,他是也接口函数!
netengine
2004-01-02
打赏
举报
回复
我真的就想用类似事件数组的方法啊朋友们,真的没有人能我一把吗
ljlln
2004-01-02
打赏
举报
回复
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TList * pNew=new TList() ;
for (int i=0;i<10 ;i++)
{
TButton * pNewBTN=new TButton(this) ;
pNewBTN->OnClick = Button3Click;
pNewBTN->Name="MyBTN"+(String)i ;
pNewBTN->Parent=this ;
pNewBTN->Top= 20*i ;
pNewBTN->Tag=i;
pNew->Add(pNewBTN) ;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
//处理所有的button的事件
//ShowMessage(((TButton*)Sender)->Name) ;
ShowMessage(((TButton*)Sender->Tag) ;
}
goneaway1981
2004-01-02
打赏
举报
回复
用一个ActionList,将每个Button都指向它,就可以了吧!!
柯本
2004-01-02
打赏
举报
回复
不用objID,Form本身有 ActiveControl;
你把所在button的onclick指向同一个,然后用
ShowMessage(ActiveControl->Name);
试试!
netengine
2004-01-02
打赏
举报
回复
更正:TOnCommandArray moOnCommandArray[64+1];
应该是TOnClickArray moOnCommandArray[64+1];
我只是简单写了写,主要是不知道怎么将数组中的索引和某一个Button->OnClick相联系起来,写不下去了。
netengine
2004-01-02
打赏
举报
回复
谢谢你的回答。但是按照你的答案,你将所有的按钮的事件统一给了button3click,但偶还是无法区分是哪个按钮的点击啊?
我的本意是:将所有的按钮的事件统一成一个事件,而且每个按钮有各自的ID,能不能点击其中某个按钮时,进入类似OnButtonClick(Sender,ID)的事件,我用ID来区分是谁触发的?
写了一点,不知道该怎么写了,谁帮帮我
.h
typedef void __fastcall (__closure *TOnClickArray)(TObject *Sender);
TOnCommandArray moOnCommandArray[64+1];
.cpp
moOnCommandArray[0] = Button1->OnClick;
moOnCommandArray[1] = Button2->OnClick;
void __fastcall TForm1::OnButtonClick(TObject *Sender,int ObjID)
{
ShowMessage(ObjID);
}
ljlln
2004-01-02
打赏
举报
回复
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TList * pNew=new TList() ;
for (int i=0;i<10 ;i++)
{
TButton * pNewBTN=new TButton(this) ;
pNewBTN->OnClick = Button3Click;
pNewBTN->Name="MyBTN"+(String)i ;
pNewBTN->Parent=this ;
pNewBTN->Top= 20*i ;
pNew->Add(pNewBTN) ;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
//处理所有的button的事件
ShowMessage(((TButton*)Sender)->Name) ;
}
不要忘了加分
牛客多校05 M-Mysterious Spacetime
数轴上有x个点,有n个
事件
:在时刻ti,区间liri会出现,然后在时刻ti1消失。有m种生成物,会在满足LiRi中有至少Ki个点出现的时候生成,每种生成物生成一次。有q个
询问
,
询问
在时间tlitri内,满足qli≤Li≤Ri≤qri中生成时间最早的生成物的生成时间。
百度前端面试题分享
到公司以后,直接技术面,没有笔试 考官: 自我介绍一下 我: 巴拉巴拉… 考官: 你会什么? 我:巴拉巴拉,其中提到了面向对象 考官: 那你写一个类吧 我就写了一个构造函数和原型对象,然后实例化,并进行了一番解释 考官: 如何实现两个类的继承 我: 不是很清楚,回答了一个extend
方法
,然后考官貌似不是很清楚extend怎么实现的,就问我,我就把extend这个函数写了下来,然后解释了一下,他...
【LOJ 6041】「雅礼集训 2017 Day7」事情的相似度
Description 人的一生不仅要靠自我奋斗,还要考虑到历史的行程。 历史的行程可以抽象成一个 01 串,作为一个年纪比较大的人,你希望从历史的行程中获得一些姿势。 你发现在历史的不同时刻,不断的有相同的事情发生。比如,有两个人同时在世纪之交 11 年的时候上台,同样喜欢与洋人谈笑风生,同样提出了以「三」字开头的理论。 你发现,一件事情可以看成是这个 01 串的一个前缀,这个前缀最右边...
java菜单项如何直接显示_JAVA,如何实现点击不同菜单项后,面板显示不同内容用以实现不同功能?...
JAVA,如何实现点击不同菜单项后,面板显示不同内容用以实现不同功能?关注:198答案:1mip版解决时间 2021-01-30 11:45提问者不再打扰你2021-01-29 17:45我在用JAVA做一个学生选课系统,想请教一下各位。目前写了如下JAVA代码,请问如何实现点击不同菜单项后,面板显示不同内容用以实现不同功能?谢谢。StudentAdd.java, StudentDel...
新倩女幽魂 非法错误html,jQuery:在ajax请求中出现“未捕获的TypeError:非法调用”-几个元素...
我有两个选择元素,A和B:当A的选择的选项更改时,B的选项必须相应地更新。A中的每个元素都暗示着B中的许多元素,这是一对多的关系(A包含国家,B应该包含位于给定国家中的城市)。该函数do_ajax应运行异步请求:function do_ajax(elem, mydata, filename){$.ajax({url: filename,context: elem,data: mydata,data...
C++ Builder
13,871
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章