2

フォームのすべてのコンポーネントを調べて、コンポーネントのタイプが であることを確認するにはどうすればよいTEditですか?

4

3 に答える 3

4

dynamic_cast 演算子を使用できます。

于 2012-12-21T09:02:24.127 に答える
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
}
于 2014-11-12T12:29:06.270 に答える
0

間違っていたらすみませんが、すべてのフォーム コンポーネント オブジェクト ポインタをクラス定義 (ヘッダー ファイル内) に自動的に追加することはしません。

そのような:

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

つまり、ヘッダーからどのコンポーネントが TEdit 型であるかがわかります。
または、デザイン ビューでコンポーネントをクリックすると、オブジェクト インスペクターにタイプが表示されます。

于 2012-12-21T09:03:21.493 に答える