百分求教,动态控制窗口上控件的属性!

dinggosumsung 2005-07-06 09:55:39
现需对窗口上的控件属性进行动态控制,控件都放在TControl或者TTabSheet这两种容器控件内。现通过for 循环逐一读取容器控件内的控件,然后设置相应属性!但因为容器控件内也许还包含其他容器控件,如TPanel中可能还含有TPanel,故希望通过递归的方式来控制容器控件中的容器控件。程序如下:
(这个代码是错误的,只是表达不清楚,所以希望通过代码让大家能更清楚我的意思!)

void setControl(TControl *con,String class_nm)
{
if (class_nm=="TPanel")
{
TPanel *p = dynamic_cast<TPanel *>(con);
}
else if (class_nm=="TTabSheet")
{
TTabSheet *p = dynamic_cast<TTabSheet *>(con);
}
for (int i=0;i<p->ControlCount;i++)
{
…………………………
}
}

我的问题在于如果通过class_nm判断是何种控件并对con进行强制转换,那么定义的p变量在接下来的代码中是无法使用的,如果预先定义好TPanel,TTabSheet两个变量,则后面的for 循环要写两次。现在希望能只写一次for 循环来达到控制容器控件中的控件的各种属性的目的
...全文
88 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
constantine 2005-07-06
  • 打赏
  • 举报
回复
(TTabSheet *)(con)->
类似这样使用不就行了吗,不用那么麻烦
FengSC 2005-07-06
  • 打赏
  • 举报
回复
如果你在for里使用到的是TPanel和TTabSheet共有的属性、方法等等,可以将p定义为TWinControl.或传递参数时直接转换为TWinControl。
dinggosumsung 2005-07-06
  • 打赏
  • 举报
回复
怎么每人理啊!各位大哥帮帮忙啦!
dinggosumsung 2005-07-06
  • 打赏
  • 举报
回复
我只是需要对TPanel,TTabSheet上的控件进行控制即可!故可以通过FengSC(猪)说的方式来解决!
谢谢各位!今天晚了,明天来结贴了~~
guanshangming 2005-07-06
  • 打赏
  • 举报
回复
思路有些不对了吧。
如果不是预先定义好TPanel,TTabSheet两个变量,再用两个循环实现。
你在循环里又能够用TPanel或TTabSheet独有的属性呢?
要不,就像 FengSC(猪) 说的,用它们的共同基类忽略特有的属性也可以。

13,825

社区成员

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

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