如何取得自定义组件属性

padiu01 2009-06-11 10:01:32
1.要求:
从数据库检索出N个设备名称,在画面上生成N个checkbox,然后编辑这些checkbox,选中还是没有选中这些checkbox,将结果存储到数据库中
2.在FormCreate的时候创建N个checkbox,我的做法:

TList *myCheckBox = new TList; //创建TList类
for(int i=0;i<N,++i)
{
TCheckBox *chk = new TCheckBox(this); //在画面上要显示的checkbox
chk->Parent = this; //直接放在form上就可以
chk->Caption = AnsiString(i);
chk->Checked = false;
chk->Top = ...; //位置
chk->Left = ...;
myCheckBox->Add(chk);//加入到TList类中
}

3.问题:现在我要在“确定”按钮事件中,读出画面上的checkbox状态,请问通过TList怎样才能获得那N个checkbox的Checked 属性
myCheckBox->...?后面不知道怎么写了
...全文
71 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
padiu01 2009-06-11
  • 打赏
  • 举报
回复
万分感谢
ccrun.com 2009-06-11
  • 打赏
  • 举报
回复
用控件数组也可以,不过从灵活性上讲,不如TList方便,特别是组件数量不确定的情况下。
下面是一个控件数组的简单例子:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
const int N = 10;
TCheckBox *chks[N];

for (int i = 0; i < N; i++)
{
chks[i] = new TCheckBox(this); //怎样才能使这种形式正确?
chks[i]->Parent = this;
chks[i]->Caption = IntToStr(i);
chks[i]->Checked = false;
chks[i]->Top = (chks[i]->Height + 10) * i + 10;
chks[i]->Left = 10;
}
}
padiu01 2009-06-11
  • 打赏
  • 举报
回复
谢谢妖哥,问题已经解决了,还有个问题,就是如果不用TList,我想直接定义N个TCheckBox ,该怎样写呢?

for(int i=0;i<N,++i)
{
TCheckBox *chk[i] = new TCheckBox(this); //怎样才能使这种形式正确?
chk->Parent = ...;
chk->Caption = ...;
chk->Checked = ...;
chk->Top = ...;
chk->Left = ...;
}

我想用指针数组,但是写出来总是不对,很郁闷。。。基础不好,看来得一点点补起来才行
ccrun.com 2009-06-11
  • 打赏
  • 举报
回复
伪代码如下:
bool bChecked;
for (int i = 0; i < myCheckBox->Count; i++)
{
bChecked = ((TCheckBox *)myCheckBox->Items[i])->Checked;
...
}
laowang2 2009-06-11
  • 打赏
  • 举报
回复

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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