【简单问题,马上结帖】

cb2005 2005-04-20 02:17:12
我想对20多个复选框进行检测,看看那些别选了那些没被选.我闲一个一个if麻烦.就做了一个控件数组(自己合计出来的,先这么叫吧),我是象下面代码里写的那样做的,请各位看看为什么会在执行时出错.

TCheckBox *tcb[20];//定义长度20的,指针数组.
tcb[1]=CheckBox1;//初始化数组
tcb[2]=CheckBox2;
tcb[3]=CheckBox3;
.
.
if(tcb[i]->Checked ==true)//判断是否被选中←←←←←←← 一到这里就出错,编译通过


各位帮着看看
...全文
53 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyct 2005-04-20
  • 打赏
  • 举报
回复
C++Builder中实现控件数组的功能
(西安 张志明)

   Borland C++ Builder作为Inprise(原Borland)公司新推出的快速应用程序开发工具(RAD),具有威力强大的C++语言和快捷便利的可视化编程完美结合的优点,遗憾的是其没有直接提供像VB中的控件数组的功能,需要开发者自己编程实现。
   VB中的一个控件数组可以1、允许多个控件共享同一个事件句柄,2、提供了运行期间增加一个控件的机制,3、提供了一种方便的组合控件的方法。前两项在C++ Builder中早已实现,而且CB更有一个优点。即不同类型的控件可以使用相同的句柄(只需在相关控件的Object Inspector窗口中的EVENT事件设置即可)。
   C++ Builder中使用了Tlist类对象来组合控件数组,与VB控件数组元素必须为同一类型控件相比较,C++ Builder中的Tlist类对象可以组合任意类型的控件而不必强求同一种类,这样就大大地方便了程序开发者。例如可以把在不同Panel面板控件上的所有控件组合为一个控件数组。
   作者在开发实时监控程序时,应用Tlist类对象创建、维护了多类型的控件数组。其实现原理与方法详见以下的原程序代码。实例程序实现了动态创建一个包含8个TEdit类型控件和4个TImage类型控件的控件数组,在程序运行中对所创建的控件进行修改、维护的功能(简单起见,只对TImage控件的Parent属性进行了修改,对控件数组中各个控件的属性修改及事件处理句柄均可依此方法修改)。
   1、创建一个新的工程文件(New Application),在Form1上放置两个TPanel类型的Panel1和Panel2,调整大小合适,再在窗体下方放置四个TButton类型Button1,Button2,Button3,Button4,设置控件属性如下:Button1->Caption=“新建控件数组”,Button2->Caption=“改变控件位置”, Button3->Caption=“还原到原位置”, Button4->Caption=“退出”;Button2->Enabled=false,Button3->Enabled=false。
   (注:以下黑体字部分为需要手工添加的代码)
  2、在文件Unit1.H中加入以下声明:
  class TForm1 : public TForm
  {
  __published: // IDE-managed Components
   TPanel *Panel1;
   TPanel *Panel2;
   TButton *Button1;
   TButton *Button2;
   TButton *Button3;
   TButton *Button4;
  private: // User declarations
   TList *MyVCL;
  public: // User declarations
   __fastcall TForm1(TComponent* Owner);
   virtual __fastcall ~TForm1( );
  };
  3、切换到工程的Form界面,双击工程的主界面Form,创建一个OnCreate事件句柄,在文件Unit1.CPP中加入以下代码:
  void __fastcall TForm1::FormCreate(TObject *Sender)
  {
   MyVCL = new TList;//创建TList对象
  }
  将TForm1析构函数加入到文件Unit1.CPP中:
  __fastcall TForm1::~TForm1()
  {
   delete MyVCL; //删除TList对象
  }
   4、双击标签(Caption)为“创建控件数组”的按钮,创建一个OnClick事件句柄,添加以下代码到OnClick事件句柄中:
  void __fastcall TForm1::Button1Click(TObject *Sender)
  {
   //创建新的控件,调整其位置,并加入到MyVcl(TList 类)之中
   int temptop=5;
   for (int i=0;i<4;i++) {
   TEdit *EditNow = new TEdit(this);
   EditNow->Parent=Panel1;
   EditNow->Text= IntToStr(i);
   EditNow->ReadOnly=true;
   EditNow->Top=temptop;
   EditNow->Height=24;
   EditNow->Width=24;
   EditNow->Left=10;
   MyVCL->Add(EditNow); //加入到控件数组中
   TImage *ImageOff= new TImage(this);
   ImageOff->Parent=Panel1;
   ImageOff->Picture->LoadFromFile(“None.BMP”);
   ImageOff->Top=temptop;
   ImageOff->Height=24;
   ImageOff->Width=24;
   ImageOff->Left=EditNow->Left+EditNow->Width;
   MyVCL->Add(ImageOff); //加入到控件数组中
   TEdit *EditStatus = new TEdit(this);
   EditStatus->Parent=Panel1;
   EditStatus->Font->Name = “Arial”;
   EditStatus->Font->Size = 12;
   EditStatus->Text=“禁止访问”;
   EditStatus->ReadOnly=true;
   EditStatus->Top=temptop;
   EditStatus->Height=24;
   EditStatus->Width=80;
   EditStatus->Left= ImageOff->Left+ImageOff->Width;
   MyVCL->Add(EditStatus); //加入到控件数组中
   temptop=temptop+24+5;
  }
   Button1->Enabled=false;
   Button2->Enabled=true;
  }
  5、同4所示方法,依次双击标签的标题(Caption)为“改变控件位置”、 “还原到原位置”、 “退出”的按钮,创建对应的OnClick事件句柄,添加以下代码到对应的OnClick事件句柄中:
  void __fastcall TForm1::Button2Click(TObject *Sender)
  {
   for (int i=0;i<4;i++)
   ((TImage*)MyVCL->Items[i*3+1])->Parent=Panel2;
   Button2->Enabled=false;
   Button3->Enabled=true;
  }
  void __fastcall TForm1::Button3Click(TObject *Sender)
  {
   for (int i=0;i<4;i++)
   ((TImage*)MyVCL->Items[i*3+1])->Parent=Panel1;
   Button3->Enabled=false;
   Button2->Enabled=true;
  }
  void __fastcall TForm1::Button4Click(TObject *Sender)
  {
   Close(); //关闭窗体
  }
  由上所述,实际的代码大多只是用于设定控件位置和基本属性,真正实现控件数组功能的代码并不太多,也不复杂,而且十分的灵活;需要注意的是使用TList类对象组合中的各项控件之前,必须先将其强制转换为一个对象指针以指明其类型,才能对其属性进行修改/赋值操作。
NetSpider9804040 2005-04-20
  • 打赏
  • 举报
回复
我觉得你可以把这20个复选框放在一个Panel或GroupBox内,我有一段示例代码,希望能够帮助楼主:
AnsiString strMsg; //用于记录选中了panel上的CheckBox的Index号
for(int i=0;i<Panel1->ControlCount;i++)
{
if((dynamic_cast<TCheckBox *>(Panel1->Controls[i]))->Checked)
{
strMsg+=IntToStr(i);
}

}
ShowMessage(strMsg) ;
smellteen 2005-04-20
  • 打赏
  • 举报
回复
你的数组初始化是
tcb[1]=CheckBox1;
tcb[2]=CheckBox2;
tcb[3]=CheckBox3;
.
.
c++数组是从0开始的,你定义一个长度20的数组,[]操作索引范围是0-19
你的循环展开第1步就是
if(tcb[0]->Checked ==true)
而tcb[0]你并没有赋初值,当然会执行出错误了
xrdsheng 2005-04-20
  • 打赏
  • 举报
回复
tcb[0]=CheckBox1;//初始化数组
tcb[1]=CheckBox2;
tcb[2]=CheckBox3;

用数组的下标从0开始
cb2005 2005-04-20
  • 打赏
  • 举报
回复
0开始的

for (int i=0;i<20;i++)
smellteen 2005-04-20
  • 打赏
  • 举报
回复
数组循环你从几开始做的啊?

初始化你是从1开始的。要是循环你从0开始就不奇怪出错了。
超好用的商城购物系统,客户注册与否均可购物、留言、评论、发送站内消息。亦可设置为必须注册才能购物。取回密码功能。会员密码及取回密码的答案均以MD5加密,确保安全。 “汇款确认”功能。发送站内消息自动附加原文,并以不同颜色区分原文。管理员可发送公共消息,可查看会员是否阅读或删除管理员发送的消息。可设置6种会员级别,不同级别的会员可享受不同的购物折扣。首页多价格模式,不同级别的会员登陆后,显示不同的会员价格。后台“会员管理”中可查看会员登陆次数、最后登陆时间、登陆IP、消费总金额,可在线给会员发送普通电子邮件、实时QQ交谈。超强的会员搜索功能,可根据会员ID、姓名、邮箱、电话、QQ、注册时间等条件搜索会员。邮件群发功能,可向会员邮箱群发普通电子邮件。支持jmail、cdonts两种方式发送邮件。 会员注册通知、新订单邮件通知、汇款确认通知。 “推荐给好友”功能,访问者可将商品在线推荐给好友。 订单支付功能,会员可在订单管理中直接进入在线支付结帐。实用的新闻功能,支持新闻固顶,内嵌仿Word在线页面编辑器。最完美的在线支付接口,无缝捆绑6种在线支付:云网支付@网、易付通、西部支付、网银在线、YeePay易宝支付、国际paypal.com,使用在线支付非常简单,只要在后台填写在线支付的ID等资料即可。全新设计的友情链接功能,支持不限数量的链接,支持文字、图片链接,友情链接可开可关。独创在线修改后台目录,在线修改数据库文件名(智能同步修改数据库连接文件),数据库在线备份、压缩、下载、上传、恢复等。维护网站从此可完全抛开FTP了。支持多管理员,不同管理员可设置不同权限。访问统计功能。投票功能。便捷的网站推广通道,加入了十余种搜索引擎的在线登记功能。升级通告:后台自动显示NowShop商城系统官方网站最新动态消息。登陆、留言、评论、取回密码,均加设验证码,有效防止恶意猜解密码、非法登陆,有效对付留言机器人、以及各种广告、非法信息的骚扰。同类系统中最为强大的商品高级搜索功能,可根据众多条件搜索商品,再大的商城也能轻松找到所需商品。创新的后台登陆方式,智能登陆未知后台目录,有效保证后台安全。众多功能的细节之处体现了极致的人性关怀,细致、体帖入微,设计中充分考虑了客户、管理员操作的方便。 后台登陆方法: ☆在浏览器中输入http://您的网址/后台目录(默认为admin)/ ,输入管理员名称、密码和后台目录名称。 默认的管理员名称:admin 默认的管理员密码:admin 默认的后台目录:admin
1、系统以.net2.0(C#)技术构架 本品结合现在国内各种商城系统的功能元素,采用asp.net开发,系统吸取.net2.0语言本身的优势,使的系统更加安全、稳定、快速、优化。 2、系统生成HTML、模板自由定制、更换灵活 本品全站信息模块均超越模拟静态页的范畴,全站生成真实意义上的HTML。考虑到尽量减少生成操作带来的工作量,本系统采用即时更新生成模式,所有的后台操作均能同时触发生成操作,而不用每更新前台内容还要生成相应内容HTML页一遍,更能体现人性化、个性化。修改风格,按照系统指定的模板,轻松****换貌。 3、系统功能完备、操作简单,人性化 本系统功能涵盖网络商城的方方面面。相关管理操作均能通过后台动态管理完成。且功能和参数设置上均按照用户意图自行设置,这不仅仅体现系统本身的动态性,同时着眼于现实用户的实际个人需要,让每一个用户按照自己的方式操作。操作近乎于傻瓜式的管理让各行各业的用户得心应手,同时本站将提供永久性无费技术咨询服务,保障每一用户的时时刻刻的现实需求。让你的商城运行无后顾之忧。 4、系统内置广告营销模块 系统集成自定义广告功能,用户可可根据需要自由设置自己的广告内容和展示位置,方便、快捷、高效。 5、系统一句话特性 ○网站自由开关,维护网站时在后台关闭网站即可, ○关闭时可显示提示语,首页的“新品”与“推荐商品”可自由调换或任意取舍,可随意设置首页商品数量, ○来访IP限制,阻止竞争对手或恶意访问者访问本站, ○功能强大的帮助信息管理器。 ○强大的广告管理功能,网店标志、大小横幅、广告图片、侧边对联广告,所有图片和FLASH动画均可直接在后台上传,从此告别FTP。 ○所有广告均可开可关,满足你的个性需求。 ○支持不限数量的商品多图,使用无组件上传图片,任何标准ASP空间均可正常使用。 ○销售统计,对所有完成的订单进行统计,了解销售情况。 ○会员可在“订单管理”中自行取消、恢复、删除订单。 ○订单支付功能,会员可在订单管理中直接进入在线支付结帐。 ○实用的新闻功能,支持新闻固顶,内嵌HTML在线页面编辑器。 ○支持多管理员,不同管理员可设置不同权限。 ○访问统计功能。 ○众多功能的细节之处体现了极致的人性关怀,细致、体帖入微,设计中充分考虑了客户、管理员操作的方便 后台地址为admin/adlogin.aspx管理员帐号和密码为admin/admin 本版为免费版 可放心使用 有问题请QQ联系:346573042412247022 或者到官方网站(http://www.1wsoft.cn)提交反馈,我们会在第一时间给予回复!!!!!

13,825

社区成员

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

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