通过控件名获得控件

UI1O2U3FO 2012-12-10 02:57:57
if(Form1->Controls[i]->Name != name)
{
Form1->Controls[i]->Caption=caption;//想改变该控件caption属性,但通过controls得不到caption,在网上查的只能通过强制转化成TLabel后才能取得caption,有没有更方便的方法啊???

}
...全文
193 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
maohailin_ 2012-12-12
  • 打赏
  • 举报
回复
学习了,.向高手学习
缘中人 2012-12-11
  • 打赏
  • 举报
回复
引用 6 楼 UI1O2U3FO 的回复:
引用 4 楼 PPower 的回复: PPropInfo PropInfo = GetPropInfo(Control, "Caption"); if(PropInfo) SetStrProp(Control,PropInfo,"NewCaption "); 这个是通过反射来实现的,速度并不怎么样。而且只改 Caption 实现的多语言会漏掉很多地方没改。 那要怎么样才能快速实现……
强悍
UI1O2U3FO 2012-12-10
  • 打赏
  • 举报
回复
引用 4 楼 PPower 的回复:
PPropInfo PropInfo = GetPropInfo(Control, "Caption"); if(PropInfo) SetStrProp(Control,PropInfo,"NewCaption "); 这个是通过反射来实现的,速度并不怎么样。而且只改 Caption 实现的多语言会漏掉很多地方没改。
那要怎么样才能快速实现呢?
UI1O2U3FO 2012-12-10
  • 打赏
  • 举报
回复
OK,谢谢......
勉励前行 2012-12-10
  • 打赏
  • 举报
回复
PPropInfo PropInfo = GetPropInfo(Control, "Caption"); if(PropInfo) SetStrProp(Control,PropInfo,"NewCaption "); 这个是通过反射来实现的,速度并不怎么样。而且只改 Caption 实现的多语言会漏掉很多地方没改。
Jim@luckeeinc.com 2012-12-10
  • 打赏
  • 举报
回复
那你要写个函数来判断控件的类型 比如 for (int i = 0; i < f->ComponentCount; i++) { fcomponent = f->Components[i]; if (fcomponent->ClassType() == __classid(TLabel)) dynamic_cast<TLabel*>(fcomponent)->Caption= "..."; else if (fcomponent->ClassType() == __classid(TxpComboBox)) { // } else if (fcomponent->ClassType() == __classid(TAdvEdit)) { // } else if (fcomponent->ClassType() == __classid(TMonthCalendar)) { // } ..... ..... }
UI1O2U3FO 2012-12-10
  • 打赏
  • 举报
回复
如果事先不知道控件类型,只要名字对了就更改其属性,怎么办? 我在做一个多语言切换的功能,需要通过读取文件更改控件caption属性。
ccrun.com 2012-12-10
  • 打赏
  • 举报
回复
if (Form1->Controls[i]->ClassNameIs("TLabel"))
{
    ((TLabel *)Form1->Controls[i])->Caption = caption;
}

13,826

社区成员

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

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