2011-12-16 8 views
4

ボタンをクリックすると、すべてのチェックボックスをオンにします。すべてのオブジェクトはVisual Studio 2010 C++のフォームアプリケーションにあります。問題のポイントは、すべてのオブジェクト(チェックボックス)にはさまざまな名前、CheckBox1、CheckBox2などがあるということです。UnicodeStringは値 "CheckBox"で、int値は1で始まり、オブジェクトを見つけるために3番目の変数にまとめます。それは仕事ですが、これらすべてのボックスをチェックする手がかりがないので、助けてください。フォームアプリケーションのすべてのチェックボックスをプログラマチックにチェックする方法は?

のWindows 7、64、ビジュアルスタジオ2010(C++)またはC++ Builderの2010

+0

Win32 APIでは、チェックボックスには名前がありません。数値にはIDがあります。私はあなたがC++ Builderのライブラリを使用していると思います(それはまだOWLと呼ばれていますか?)、それをWinAPIで誤解しています。お願いします。 –

+0

どちらですか? C++ BuilderまたはVisual Studio 2010? –

+0

私は両方が必要です。 –

答えて

2

、これは私がC++ Builderを使用していた方法です。

for (int i = 0; i < this->ComponentCount; i++) 
{ 
TCheckBox *TempCheckBox = dynamic_cast<TCheckBox *>(this->Components[i]); 
if (TempCheckBox) 
{ 
    TempCheckBox->Checked = true; 
} 
} 

フォームのすべてのコンポーネントを繰り返し処理します。コンポーネントがTCheckBoxの場合は、チェックされます。

1

なぜあなたは、チェックボックスを含むベクトルにすべてを追加していけない、必要なときに、それらのすべてを反復処理しますか?これにより、個々のチェックボックスを個別に参照できるようになりますが、一度にすべてのチェックボックスを参照できます。

 cliext::vector<System::Windows::Forms::CheckBox^> items; 
    items.push_back(checkbox1); 
    . 
    . 
    . 
    items.push_back(checkboxN); 

あなたにも原因標準ライブラリにおける法線ベクトルは現在、このコントロールをサポートすることができないという事実に

#include <cliext/vector> 

を含めることが重要です。あなたは、ループを通じ必要なことができます配列または std::vector、例えばにあなたの TCheckBox*ポインタのすべてを置くことができる

C++ Builderで
+0

はい、私はそれのようなものが必要ですが、私はコードをテストする必要があります。いい案! –

+0

-1重要な点は、チェックボックスを明示的に表示しないことです。 –

+0

はい、しかし、アプリケーションを展開して、ある時点でプログラムのすべてのチェックボックスをチェックしたくない場合はどうなりますか?このベクタにチェックボックスをローカライズし、この機能が必要なときはいつでもこのベクタを反復処理できます。 – Tim

1

、:

TCheckBox* cb[10]; 

__fastcall TForm1::TForm1(TComponent *Owner) 
    : TForm(Owner) 
{ 
    cb[0] = CheckBox1; 
    cb[1] = CheckBox2; 
    ... 
    cb[9] = CheckBox10; 
} 

void __fastcall TForm1::Button1Click(TObject *Sender) 
{ 
    for (int i = 0; i < 10; ++i) 
     cb[i]->Checked = true; 
} 

あなたがチェックボックスの多くを持っている場合と、手で配列全体を埋めるためにしたくない、あなたの代わりにループを使用することができます。私は別のコンポーネントのために類似した何かをした

__fastcall TForm1::TForm1(TComponent *Owner) 
    : TForm(Owner) 
{ 
    for (int i = 0; i < 10; ++i) 
     cb[i] = (TCheckBox*) FindComponent("CheckBox" + IntToStr(i+1)); 
} 
関連する問題