BCB控件里有没有类似VB控件里的index属性?

nevergetwin 2005-07-31 09:19:47
我有66个Label,只是caption不一样(1--66),点击某个Label以后响应函数都一样,只是传递的参数不一样。
在VB里面有index属性,可以把这些label的name写成label1(0),label1(1),......label1(65)
这样在click函数的参数里面就有(index as integer),我只要写一个函数就可以了
在BCB里面有没有类似index的属性呢,遇到这样的情况该怎么办?总不要写66个响应函数把,那样太郁闷了
...全文
89 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nevergetwin 2005-08-01
  • 打赏
  • 举报
回复
感激各位,尤其是setdefault(山转水也转),
TLabel *plb = (TLabel*) Sender;
switch(plb->Tag)
......这个办法可行。
unsigned(僵哥(当程序语言成为普及的第三语言之后……)) 的int j=(TLabel *)Sender->Tag;
也是出错的,提示'Tag' is not a member of 'TObject'
不过还是感谢大家了,结贴! :)
setdefault 2005-08-01
  • 打赏
  • 举报
回复
换一种看起来清楚一些的写法:
TLabel *plb = (TLabel*) Sender;
switch(plb->Tag){
case 1:
//......
break;
case 2:
//...
break;
default:
//....
}
jishiping 2005-07-31
  • 打赏
  • 举报
回复
BCB会自动将这些Label命名为Label1,Label2,……Label66,你可以用这些名字来区分这些Label。当然了,也可以使用Tag来区分。
hthunter 2005-07-31
  • 打赏
  • 举报
回复
把序号放到tag,在点击事件中根据TLabel(Sender)->Tag的值来做相应动作
nevergetwin 2005-07-31
  • 打赏
  • 举报
回复
能具体一点么?
关键是label1--label66的响应函数不一样啊
我其实就想区分一下用户点的哪个label,又不想写66的几乎一样的函数
setdefault 2005-07-31
  • 打赏
  • 举报
回复
可以使用Tag属性
僵哥 2005-07-31
  • 打赏
  • 举报
回复
int j = TLabel(Sender)->Tag;
应该改为:
int j=(TLabel *)Sender->Tag;
或者
int j=dynamic_cast<TLabel *>(Sender)->Tag;

嘻嘻,如果另一种变通滴方法就是:
AnsiString LabelName=dynamic_cast<TLabel *>(Sender)->Name;
int LabelIndex=StrToInt(LabelName.SubString(6,LabelName.Length()-5))
nevergetwin 2005-07-31
  • 打赏
  • 举报
回复
hthunter(核桃-我的心在下雨,雨中我和她携手漫步)
你说的是不是这样,我第一个Label的name是c1,点击函数如下,其他c2--c66的响应函数都用c1Click:
void __fastcall TFormWenDu::c1Click(TObject *Sender)
{
int j = TLabel(Sender)->Tag; //出错了,改成TObject(Sender)->Tag,也不行.该怎么写啊
//谢谢!
......
}

13,826

社区成员

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

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