動作確認
C++ Builder XE4
Rad Studio 10.2 Tokyo Update 2 (追記: 2017/12/27)
try1
コンポーネントがTCheckBoxかどうかの確認にはClassName()を使う。
static bool isTCheckBox(TControl *srcPtr)
{
if (srcPtr->ClassName() == L"TCheckBox") {
return true;
}
return false;
}
ヘルプのVcl.Controls.TControl のメソッド
を参考にした。
try2
SOにて教えていただいた方法。
以下を使う。
if (dynamic_cast<TLabel*>(ParentControl->Controls[i]) != NULL)
実装してみた。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TControl *lblPtr = (TControl *)Label1;
bool isTLabel = (dynamic_cast<TLabel *>(lblPtr) != NULL);
bool isTComboBox = (dynamic_cast<TComboBox *>(lblPtr) != NULL);
Memo1->Lines->Add(BoolToStr(isTLabel));
Memo1->Lines->Add(BoolToStr(isTComboBox));
}
結果
-1
0