Panel遍历上面的控见的疑问。有代码。大家看一下什么问题
// 我在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




