询问有关事件数组方法

netengine 2004-01-02 03:05:29
比如我创建不定数量TButton按钮,每个按钮都有各自的ID,但我只想有一个Click响应点击事件,如OnButtonClick(Sender,ID);我利用事件触发时的ID来让对应ID的按钮变Caption,怎么实现呢?

就是说我是不是应该有个事件数组,来存放每个按钮的OnClick呢?但是,我又怎么对应是哪个按钮的Click呢?

另外,到可以用Button->Tag来区分,但是我不想用这种方法,谁来帮帮我啊?
...全文
90 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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) ;

}
不要忘了加分
在Android开发中 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是给出了创建各种类型对话框的方法 并为给出创建对话框之后 并为给出如何用户获取在对话框中做出选择后的数据 即如何监听用户做出的选择 接下来笔者将根据JavaDoc API文档引导读者详细的了解提示对话框 文本框对话框 简单列表对话框 单选项列表对话框 多选项列表对话框 自定义对话框6种类型对话框监听事件的具体处理过程 1 创建提示对话框 笔者为该对话框添加了3个按钮 分别是 PositiveButton (确定) NeutralButton NegativeButton(取消) 中文意思是积极的按钮(确定) 中立的按钮 消极的按钮(取消) 按字面意思翻译 有点怪 但是很形象 创建提示对话框并实现监听事件的代码如下: 2 创建文本框对话框 笔者为该对话框添加了1个文本 一个PositiveButton (确定) 一个NegativeButton(取消) 并实现了PositiveButton点击监听事件 点击后后去文本框里的内容 并以toast形式显示出来 创建文本框对话框并实现监听事件的代码如下: 3 创建简单列表对话框 笔者为该对话框添加了一个数组显示列表 并实现了点击列表item选项监听事件 点击item选项后获取item内容 并以toast形式显示出来 查阅JavaDoc API文档 读者可根据JavaDoc API文档来了解如何实现单击item选项监听事件 如下列出的setItems 方法第2个参数易知只要为第2个参数提供OnClickListener实例即可实现监听事件 读者可通过这种方式触类旁通以下几种对话框监听事件的实现 学会通过查阅JavaDoc API文档来解决问题是一项开发必备的编程能力 创建简单列表对话框并实现监听事件的代码如下: 4 创建单选按钮列表对话框 笔者为该对话框添加了一个单选按钮数组显示列表 并实现了点击item选项监听事件 点击item选项后获取item内容 并以toast形式显示出来 5 创建复选框列表对话框 笔者为该对话框添加了一个复选框数组显示列表 并实现了点击复选框选项监听事件 选中复选框选项后 获取所有选中的选项 并以toast形式显示出来 创建复选框列表对话框并实现监听事件的代码如下: 6 创建自定义列表对话框 笔者为该对话框添加了自定义的布局文件 该自定义布局文件包含一个文本标签和一个文本框 并实现了确定按钮点击监听事件 在文本框输入内容后 获取文本框里的内容 并以toast形式显示出来 创建自定义列表对话框并实现监听事件的代码如下: 参见blog:http: blog csdn net andie guo article details 14145135">在Android开发中 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是给出了创建 [更多]

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧