怎样在Builder中象VB一样实现控件数组的功能

zl2000 2000-07-07 11:15:00
...全文
149 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zl2000 2000-07-10
  • 打赏
  • 举报
回复
如有Edit1,Edit2……。
TList *editlist = new TList;
editlist->Add(Edit1);
editlist->Add(Edit2);
.
.
for (int i=0; i<N; i++)
((Edit*)editlist->Item[i])->Text = "This is:"+IntToStr(i);
这样就可以把各个Edit标上数字。
这个问题是几天前贴上的,后来在HELP里找到了TList类,所以这个问题就简单了。正因如此。也就自己回答自己吧。
qianxh 2000-07-09
  • 打赏
  • 举报
回复
1.如果你想在程序运行时动态生成,只需先 new,再设置 xObject->Parent=this即可。
2.如果你已经先设计好,只是想其事件响应程序不至于太冗长,则上面诸多方法都可行。
peng_hui 2000-07-09
  • 打赏
  • 举报
回复
sorry,上面写错了,Sender->Tag应改为((TButton *)Sender)->Tag,因为TObject没有Tag属性。
Wingsun 2000-07-08
  • 打赏
  • 举报
回复
假设你有如下控件:ChbInfo1,ChbInfo2,ChbInfo3,.....ChbInfoN等N个控件(CheckBox)
每一个控件的Click事件指向同一段代码:ChbInfo1Click
void __fastcall::FrmMainChbInfo1Click(TObject * Sender)
{
TCheckBox * pCheckBox=dynamic_cast<TCheckBox *>(Sender);
AnsiString CheckName=pCheckBox->Name;
int chkIndex;
chkIndex=CheckName.SubString(7,CheckName.Length()-7);
switch(chkIndex)
{
case 0:
.....
case 1:
.....
}
}
peng_hui 2000-07-08
  • 打赏
  • 举报
回复
很简单,以按钮为例,你可先写好按钮响应函数,如:
void __fastcall TForm1::ButtonsClick(TObject *Sender)
{
switch(Sender->Tag) //每个按钮的Tag值表示了这个按钮是第几个
{ case 0:
...
case 1:
...
}
}
然后在设计Form上每个按钮时设置其对应的Tag值,并打开该按钮的OnClick事件的下拉框,选择ButtonsClick这个函数即可。
inmydream 2000-07-08
  • 打赏
  • 举报
回复
以TCheckBox 为例:
假如你现在有cb0,cb1,...,cbN等N个CheckBox ;
何不试试:

TCheckBox **cbs = new TCHeckBox*[N] ; //其中,N为现有控件个数 ;

*cbs = cb0 ;
*(cbs+1) = ch1 ;
...
*(cbs+N-1) = cbN ;

//test code
int i ;

for(i=0;i<N;i++)
*(cbs+i)->Checked = false ;

...

delete[] cbs ;

inmydream 2000-07-08
  • 打赏
  • 举报
回复
以TCheckBox 为例:
假如你现在有cb0,cb1,...,cbN等N个CheckBox ;
何不试试:

TCheckBox **cbs = new TCHeckBox*[N] ; //其中,N为现有控件个数 ;

13,825

社区成员

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

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