CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

Panel遍历上面的控见的疑问。有代码。大家看一下什么问题

楼主csrwgs(你血所加?)2006-07-02 12:39:05 在 C++ Builder / 基础类 提问

//   我在PANEL1   上面放了PANEL2   和PANEL3。。。。  
  //每个PANEL   上面又有新的LABEL   和   IMAGE   。  
  //想找到所有的   LABEL   和   IAMGE   ,对它们进行操作  
  void   AutoChange()  
  {  
  //   Panel1->ComponentCount   =   0   ?   why   ?  
   
            for(int   i=0.i<Panel1->ControlCount;i++)    
            {  
                        TControl   *Control   =   Panel1->Controls[i];  
                          //到这里找到了   Panel1上面的所有的PANEL    
   
                        //------接下来怎么做呢?  
                        //   Control   下面没有ControlCount   了。  
   
  }  
   
  //还有一个问题,就算通过Control->ClassName()   找到了一个LABEL    
  //怎么转换成TLabel呢?  
  //   我用   TLabel   *label   =   <dynamic_cast>(TLabel   *)(control)     不行  
  //提示无法强制类型转换。  
   
   
  问题点数:50、回复次数:5Top

1 楼csrwgs(你血所加?)回复于 2006-07-02 12:40:22 得分 0

我看了下面的帖子,不好使啊  
  http://community.csdn.net/Expert/topic/4300/4300772.xml?temp=.2812769Top

2 楼jjwwang((空园歌独酌,春日赋闲居))回复于 2006-07-02 13:31:04 得分 30

不知道你上面都有什么东东.  
  如果只是TLABEL,TIAMGE,都是从Control继承下来.可以这样.  
   
  if(   Panel1->Controls[i]->ClassName()=="TImage")  
  {  
      TImage   *img   =   dynamic_cast(TImage   *)(Panel1->Controls[i]);  
      ....    
  }Top

3 楼jjwwang((空园歌独酌,春日赋闲居))回复于 2006-07-02 13:32:06 得分 0

应该是  
  TImage   *img   =   dynamic_cast<TImage   *>(Panel1->Controls[i]);Top

4 楼lother(阿艺)回复于 2006-07-02 14:04:31 得分 20

if(   Panel1->Controls[i]->ClassName()=="TImage")  
  {  
      TImage   *img   =   dynamic_cast(TImage   *)(Panel1->Controls[i]);  
      ....    
  }  
  if(   Panel1->Controls[i]->ClassName()=="TLabel")  
  {  
      TLabel     *lab   =   dynamic_cast(TLabel     *)(Panel1->Controls[i]);  
      ....    
  }  
  Top

5 楼csrwgs(你血所加?)回复于 2006-07-02 19:52:59 得分 0

谢谢各位,我搞定了。主要市以前没主义  
   
  panel   属于wincontrol  
   
   
  for(int   i=0;i<panel1->ControlCount;i++)  
  {  
        if(     AnsiString(panel1->Controls[i]->ClassName())=="TPanel")  
        {  
              TWinControl   *win   =   (TWinControl   *)(panel1->Controls[i]->);  
              for(int   j=0;j<win->ControlCount;j++)  
              {    
                      if(AnsiString(win->Controls[j]->ClassName())=="TLabel")  
                              //   add   code   to   process   Label  
                      if(AnsiString(win->Controls[j]->ClassName())=="TPanel")  
                              //   add   code   to   process   Label  
              }  
   
   
   
        }  
  }  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:csrwgs
  • jjwwang
  • lother

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo