C++ Builder 参考手册 ➙ TComponent ➙ FindComponent
头文件:#include <System.Classes.hpp>
命名空间:System::Classes
类:TComponent
访问权限:public:
函数原型:
TComponent* __fastcall FindComponent(const System::UnicodeString AName);
System::Classes::TComponent::FindComponent 是 System::Classes::TComponent 的成员函数,通过名称 AName 查找子组件。
参数:
AName:子组件的名称。
返回值:
找到的子组件,或 NULL 未找到。
- 通过名称 AName 查找子组件,不区分大小写;
- FindComponent 可以找到不可见的控件,例如 TTimer,而 FindNextControl 和 FindChildControl 找到的都是可见的控件。
例1:找到 Form 上的 Memo1 控件,并且在找到的 Memo1 控件里面输出文字
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TComponent *lpComponent = this->FindComponent(L"Memo1");
TMemo *lpMemo = dynamic_cast<TMemo *>(lpComponent);
if(lpMemo)
{
lpMemo->Text = L"找到了 Memo1!\r\n测试 FindComponent - 玄坴";
}
}
运行结果:
运行结果:FindComponent 测试
例2:点击 Button2 找到 Timer1 控件,如果这个定时器启用了,就禁用,如果已经禁用,就启用。
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TComponent *lpComponent = this->FindComponent(L"Timer1");
TTimer *lpTimer = dynamic_cast<TTimer *>(lpComponent);
if(lpTimer)
{
lpTimer->Enabled = !lpTimer->Enabled;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Label1->Caption = StrToIntDef(Label1->Caption, 0) + 1;
}
运行结果:
定时器启用时,每个定时周期都给 Label1 显示的数字+1,点击 Button2 之后 Label1 显示的数字停止变化,再点击一次 Button2,Label1 的数字继续+1变化。
参考:
- Vcl::Controls::TWinControl::FindNextControl
- Vcl::Controls::TWinControl::FindChildControl
- System::Classes::TComponent::Components
- System::Classes::TComponent::ComponentCount
- System::Classes::TComponent::ComponentIndex
- System::Classes::TComponent
- System::Classes::TPersistent
- System::TObject
- VCL 类继承关系
C++ Builder 参考手册 ➙ TComponent ➙ FindComponent