如何在c ++ builder中检查组件是否是TEdit类型?

时间:2012-12-21 08:55:31

标签: c++builder vcl

如何查看表单的所有组件并验证组件是否为TEdit类型?

3 个答案:

答案 0 :(得分:4)

您可以使用dynamic_cast operator

答案 1 :(得分:0)

不好意思,如果我错了,但不会embarcadero自动将所有表单组件对象指针添加到类定义中(在头文件中)..

如:

class TFormSomeForm : public TForm
{
__published:
    TEdit *SomeEditBox;
    TEdit *AnotherEditBox;
...
}

这意味着你可以从标题中告诉哪些组件是TEdit类型。
或者,您可以单击“设计视图”中的组件,“对象检查器”将显示类型。

答案 2 :(得分:0)

我的函数设置TWinControl及其子节点中所有编辑的Text属性。

void __fastcall SetEditsText(TWinControl* winControl, UnicodeString editsText)
{    
    for (int c = 0; c < winControl->ControlCount; c++)
    {
        TControl* ctrl = winControl->Controls[c];

        TWinControl* wc = dynamic_cast<TWinControl*>(ctrl);

        // Check if it's grouping component
        if (wc != NULL)
        {
            // Set edits of children
            SetEditsText(wc, editsText);
        }
        else 
        {
            if (ctrl->ClassType() == __classid(TEdit))
            {
                TEdit* ecomp = (TEdit*) ctrl;
                ecomp->Text = editsText;
            }
        }
    }
}

使用:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    SetEditsText(form1, ""); // Clear all edits
}