控件名定义死了,如何循环来改变一些值?

Crawl.W 2015-09-25 03:17:00
如标签 lbl1,lbl2,lbl3,lbl4,…如果在for循环中统一地改变所有Label的Caption?
不要去枚举控件,应该有些Label比如lbl5我又不需要改变。
想要的效果是就后面的数字能不能有办法做到数组下标的效果。
求大神。(http://bbs.csdn.net/topics/391819876, 这个麻烦回复一下,想结贴)
...全文
224 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2015-09-29
  • 打赏
  • 举报
回复
将label的hwnd或者ID值放入到一个数组中,循环
www_adintr_com 2015-09-29
  • 打赏
  • 举报
回复
引用 10 楼 qq_27564553 的回复:
[quote=引用 9 楼 adlay 的回复:] C++ Builder 没用过,不过按理说控件 ID 这个是 Windows API 里面使用的东西,不管什么编译器封装的什么库,最后还是要调用 API 来完成。 实在不行你就在数组里面放 TLabel* 吧
意思是这样放?
TLabel* lbls[] = {lbl1, lbl2, lbl3, lbl4, lbl5, lbl5, lbl6, lbl7, lbl8, lbl9,
    lbl10, lbl11, lbl12};
[/quote] 是的
Crawl.W 2015-09-29
  • 打赏
  • 举报
回复
感觉相当的怪异
Crawl.W 2015-09-29
  • 打赏
  • 举报
回复
引用 9 楼 adlay 的回复:
C++ Builder 没用过,不过按理说控件 ID 这个是 Windows API 里面使用的东西,不管什么编译器封装的什么库,最后还是要调用 API 来完成。 实在不行你就在数组里面放 TLabel* 吧
意思是这样放?
TLabel* lbls[] = {lbl1, lbl2, lbl3, lbl4, lbl5, lbl5, lbl6, lbl7, lbl8, lbl9,
    lbl10, lbl11, lbl12};
www_adintr_com 2015-09-28
  • 打赏
  • 举报
回复
引用 4 楼 qq_27564553 的回复:
[quote=引用 1 楼 adlay 的回复:] 你可以查看 Resource.h 文件里面这几个宏定义的值是否是连续的,如果是那么 lbl1 + 1 自然就是 lbl2 了. 如果不是,可以: 1. 把他们改成连续的,注意别和其它控件冲突,发生冲突的其他控件也得修改。 2. 自己定义个数组 UINT lbls[] = { lbl1, lbl2, lbl3 .... } 然后用 for 来遍历 lbls 数组就行了。
两种方法都不行,首先label类型不能转变成unit,再就是uint不能去调用label的属性。[/quote] 那你的 label 是什么类型? 控件 ID 就是 UINT 类型的,有了这个 ID,你用 GetDlgItem 就可以获得对应的 CWnd* 类型,如果你是 CStatic 之类的,调用它的 Attach 方法就可以把 CStatic 和 CWnd 的 m_hWnd 绑定。操作完 Detach 即可
Crawl.W 2015-09-28
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
活人总之不会被尿憋死的。
那老师有什么解决办法吗,不要老师水贴好嘛?看您老是水贴,我都不敢邀请你回答问题
Crawl.W 2015-09-28
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
你可以查看 Resource.h 文件里面这几个宏定义的值是否是连续的,如果是那么 lbl1 + 1 自然就是 lbl2 了. 如果不是,可以: 1. 把他们改成连续的,注意别和其它控件冲突,发生冲突的其他控件也得修改。 2. 自己定义个数组 UINT lbls[] = { lbl1, lbl2, lbl3 .... } 然后用 for 来遍历 lbls 数组就行了。
两种方法都不行,首先label类型不能转变成unit,再就是uint不能去调用label的属性。
Crawl.W 2015-09-28
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
你可以查看 Resource.h 文件里面这几个宏定义的值是否是连续的,如果是那么 lbl1 + 1 自然就是 lbl2 了. 如果不是,可以: 1. 把他们改成连续的,注意别和其它控件冲突,发生冲突的其他控件也得修改。 2. 自己定义个数组 UINT lbls[] = { lbl1, lbl2, lbl3 .... } 然后用 for 来遍历 lbls 数组就行了。
阅读起来会不会很不方便。
www_adintr_com 2015-09-28
  • 打赏
  • 举报
回复
C++ Builder 没用过,不过按理说控件 ID 这个是 Windows API 里面使用的东西,不管什么编译器封装的什么库,最后还是要调用 API 来完成。 实在不行你就在数组里面放 TLabel* 吧
Crawl.W 2015-09-28
  • 打赏
  • 举报
回复
C++builder没有id的控件
Crawl.W 2015-09-28
  • 打赏
  • 举报
回复
引用 6 楼 adlay 的回复:
[quote=引用 4 楼 qq_27564553 的回复:] [quote=引用 1 楼 adlay 的回复:] 你可以查看 Resource.h 文件里面这几个宏定义的值是否是连续的,如果是那么 lbl1 + 1 自然就是 lbl2 了. 如果不是,可以: 1. 把他们改成连续的,注意别和其它控件冲突,发生冲突的其他控件也得修改。 2. 自己定义个数组 UINT lbls[] = { lbl1, lbl2, lbl3 .... } 然后用 for 来遍历 lbls 数组就行了。
两种方法都不行,首先label类型不能转变成unit,再就是uint不能去调用label的属性。[/quote] 那你的 label 是什么类型? 控件 ID 就是 UINT 类型的,有了这个 ID,你用 GetDlgItem 就可以获得对应的 CWnd* 类型,如果你是 CStatic 之类的,调用它的 Attach 方法就可以把 CStatic 和 CWnd 的 m_hWnd 绑定。操作完 Detach 即可[/quote] mfc里是没有label类型的吧,有的就是你所说的静态文本框,像你说的用数组包含起来是个不错的尝试,但是lbl1在C++builder里是一个TLabel类型的指针,这一步就不能过去。
赵4老师 2015-09-25
  • 打赏
  • 举报
回复
活人总之不会被尿憋死的。
www_adintr_com 2015-09-25
  • 打赏
  • 举报
回复
你可以查看 Resource.h 文件里面这几个宏定义的值是否是连续的,如果是那么 lbl1 + 1 自然就是 lbl2 了. 如果不是,可以: 1. 把他们改成连续的,注意别和其它控件冲突,发生冲突的其他控件也得修改。 2. 自己定义个数组 UINT lbls[] = { lbl1, lbl2, lbl3 .... } 然后用 for 来遍历 lbls 数组就行了。
它通过读取 Excel 表格中的业务数据,结合 Word 模板,自动生成多个独立的合同文件,并自动处理了表格中“合计”行的合并与中文大写金额转换。 资源称:合同文档自动化生成脚本 (1.py) 字真是乱起 核心功能:Excel 数据读取 → Word 模板渲染 → 表格单元格合并与金额处理 → 批量导出 Word 文档。 适用场景:财务、销售或行政部门需要根据订单或业务明细,批量制作格式统一的合同、报价单或结算单。 1. 自动把“钱”变成“大写” 它干了啥:它内置了一个翻译功能,专门把阿拉伯数字(比如 100.50)自动转换成财务专用的中文大写(比如 壹佰元伍角)。 为什么有用:写合同最怕手滑写错金额,或者大写格式不对。这个功能全自动搞定,既标准又不会出错。 2. 自动“装修”表格底部 它干了啥:生成文档后,它会自动找到表格的最后一行,把前几列合并成一个大格子,写上“合计:XXX(大写金额)”,并在最右边填上具体的数字总额。 为什么有用:平时我们做完表格,还得手动去合并单元格、算总数、填大写,非常繁琐。这个脚本直接一步到位,把表格收尾工作做得漂漂亮亮。 3. 像“发传单”一样批量做合同 它干了啥:它会看你的 Excel 表格,按照“编号”把数据归类。 如果是同一个编号的货物,它会把它们塞进同一个合同里(比如一个客户买了三样东西,会自动列三行)。 如果是不同的编号,它就生成不同的合同文件。 为什么有用:不管你有一百个还是一千个订单,它都能自动拆分,给每个客户生成一份独立的、内容准确的合同,完全不用人工去复制粘贴。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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