BCB-控制多個元件的方法-FindComponent()

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

我們可以透過 ComponentCount 來掃瞄 Form 底下的所有元件,進而控制這些元件,例如底下這個 sample code 可以把 Form 底下的 Edit 元件一口氣改掉。

Example:

for (int i = 0; i < ComponentCount; ++i) {
	if (Components[i]->ClassNameIs("TEdit")) ((TEdit *)Components[i])->Text = "我被改了";
}


那若是要改某個元件底下的子元件呢? 例如要改 GroupBox 裡頭的所有 Label 要怎辦呢? 這時就要用到 ControlCount 了。

for (int i = 0; i < GroupBox1->ControlCount; ++i) {
	if (GroupBox1->Controls[i]->ClassNameIs("TLabel")) ((TLabel *)GroupBox1->Controls[i])->Caption = "我被改了";
}


這樣就可以了~

再補上一招,若是要修改名稱有固定規則的元件又要怎麼做呢? 例如要修改 Edit1~Edit10 的文字內容。
這時我們可以叫出 FindComponent() 來幫忙

for (int i = 1; i <= 10; ++i) {
	((TEdit *)FindComponent(“Edit” + IntToStr(i)))->Text = “我被改了”;
}


類似地,也可以用 FindChildControl() 找到子元件

for (int i = 0; i < 10; ++i) {
	((TEdit *)GroupBox1->FindChildControl(“Edit” + IntToStr(i)))->Text = “我被改了”;
}


文章出處 : 点击打开链接

c++ builder 知识积累 1、根据控件名称获取控件指针 TLabel  *p = NULL; p = dynamic_cast(FindComponent("控件名称")); p->Caption = "OK"; 2、dynamic_cast类型转换及枚举控件 dynamic_cast(ptr) T为一个指针、void*、或是一精定义过的类型; ptr 必须是一个指针(pointer)或是一个参考(refe 阅读详情

相关推荐

BCB 控件遍历

通过Traval.h中的遍历函数,可对窗体内所有控件进行遍历,并将遍历到的控件设置为可视或不可视

FindChildControlFindComponent

前两天编码遇到了要使用FindChildControl方法获取指定名称的TSpeedButton按钮,结果折腾了半天就是没得结果(基础不扎实,呵呵),于是赶紧搜索了下,补习关于这两个方法的用法。        TWinControl类的FindChildControl方法在FWinControls中查找返回指定名称的可视且有窗体的组件(继承自TWinControl类)。该方法可以确定当前控件是否

TU2的专栏 1万+

Vue找到任意组件实例——findComponents 系列方法

findComponents 系列方法,它并非 Vue.js 内置,而是需要自行实现

数据与算法架构提升之路专栏 4583

【Delphi】知道控件名称(字符串),访问控件

如何通过控件名称(字符串)直接访问控件

sensor_WU 博客 1435

FindComponent 和 FindChildControl 理解.东摘西抄的,结合 owner 和 parent 看

FindComponent是TComponent的方法,TComponent有FComponents,用来管理控件,你用FindComponent就需要FComponents的支持,FComponents怎么来的呢?他是一个TList,自然需要你创建然后insert了,对于Tpanel,如果没有动态创建的控件,你用FindComponent有什么意义呢 FComponents里面...

aitanwu4387的博客 252

关于FindComponent的使用,简化一些过程

在游戏配置过程中有一些较长的过程,例如下边判断输入端口合法性的: {如果较少,还可以挨个判断} procedure TfrmMain.ButtonNext3Click(Sender: TObject); var nPort: Integer; begin nPort := StrToIntDef(Trim(EditSelGate_GatePort.Text), -1); if (n...

loloopop的专栏 1002

BCB controls控制多个控件的方法

可以透过 ComponentCount 来扫瞄 Form 底下的所有元件,进而控制这些元件,例如底下这个 sample code 可以把 Form 底下的 Edit 元件一口气改掉。 for (int i = 0; i {     if (Components[i]->ClassNameIs("TEdit"))         ((TEdit *)Components[i])->Text

All is well的专栏 997

尽量少用GetComponent

http://www.cnblogs.com/murongxiaopifu/p/4284988.html上面链接时有提到有人做了个测试:用GetComponent()获取Transform组件,比预先保存其引用后再调用要慢得多。我搜了下,找到那个测试。即下面的链接。http://forum.unity3d.com/threads/cachedmb.130365/代码拿来跑了下,结果确实类似。所以在经

只有偏执狂才能生存 1万+

FindComponent

function TComponent.FindComponent(const AName: string): TComponent; var   I: Integer; begin   if (AName nil) then     for I := 0 to FComponents.Count - 1 do     begin       Result := FComponen

hrdzkj的专栏 1116
上一篇: Delphi & C++ Builder 本地化顯示中文技巧
下一篇: 淺析OnKeyPress事件和OnKeyDown/OnKeyUp事件
星際訪客
博客等级 码龄19年 36粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值