TComponent::FindComponent - C++ Builder

C++ Builder 参考手册 ➙ TComponent ➙ FindComponent


头文件:#include
命名空间: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(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(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

你可能感兴趣的:(TComponent::FindComponent - C++ Builder)