現在試しているのは
10個のComboBox(それぞれに0〜9までの数字が入っている)をフォームに配置。
そしてあらかじめ0〜9までの数字を代入しておいた10個の配列変数を使って
順番にComboBox1からComboBox10のItemIndexにA[1]からA[10]までを
代入していっているのですが
ComboBox1.ItemIndex := A[1];
ComboBox2.ItemIndex := A[2];
.
.
.
とやっています。
せっかく配列変数を使っているのでFor文なんかで一括処理なんて感じで
やりたいのですがComboBox等を配列変数みたいに扱う方法がわかりません。
今は10個だけどこれが100個とかになったらと思って
色々と試してみたのですがどうしてもできません。
初歩的な質問かと思いますがお願いします。
親コントロール(たいていはフォームかパネルでしょう)のControlCount、Controlsプロパティをヘルプで引いてみてください。
今時間がないので、これだけ。
Halbow です。
規則正しい名前を持つ場合は、FindComponent() が使えます。
function FindComponent(const AName: string): TComponent;
Name プロパティーに相当する文字列から、TComponent を返してくれます。
適切にキャストして、特定のクラスのプロパティーやメソッドにアクセス
します。今回の例では
var
i:integer;
Compo:TComponent;
begin
for i := 1 to 10 do begin
Compo := FindComponent('ComboBox'+IntToStr(i));
if Assigned(Compo) then TComboBox(Compo).ItemIndex := A[i];
end;
end;
になると思います。
たかみちえさん、Halbowさんありがとうございました。
しかもこんなに早く返事がいただけるとは・・・
本当にありがとうございます。
こんな方法があるんですね。
これで他にも抱えてた問題も解決しそうです。
とても勉強になりました。
ツイート | ![]() |