複数コントロールに対する同一処理について


  2004-03-06 01:34:31  No: 7577

いつもお世話になっております。

現在多数のコンポーネントを初期化するのに、
次の方法で行っています。

for UsIndex := 0 to 99 do
begin
  (FindComponent('TEST' + Format('%.2d',[UsIndex])) AS
                                            TEdit).Text := '';
end;

又、配列にコンポーネントを格納する方法も考えましたが、
配列にセットする際に、

UsArray[1]  := TEST01;
UsArray[2]  := TEST02;
UsArray[3]  := TEST03;
UsArray[4]  := TEST04;
        〜
UsArray[99] := TEST99;

となり、ちょっと大変です。
このような記述をもっとスマートに行う方法はないでしょうか。
以上よろしくお願いします。


たかみちえ  URL  2004-03-06 02:18:22  No: 7578

全て同じコンテナ(Panelなど)の中に格納されてるのなら、そのコントロールのComponentsプロパティからアクセスすることもできます。
for i := 0 to Panel.ControlCount - 1 do
  TEdit(Panel.Controls[i]).Clear;
もし、対象外のコントロールが含まれるのなら、Tagを切り替えるなりして対応すればいいです。
複数のボタンの有効状態を一斉切り替えするコードとかには、便利ですね。


たかみちえ  URL  2004-03-06 02:20:21  No: 7579

一行目だけComponentsとなっていますね(^_^;
ヘルプをみるとわかりますが、ComponentsプロパティとControlsプロパティというものがあります。
まあ、お好きな方をどうぞ。


  2004-03-09 03:18:01  No: 7580

返信ありがとうございます。
簡単に説明するため、初期化の例をだしましたが、
実際にはタブページが複数あり、タブ上に複数種類のコンポーネントが貼り付けられています。
タブA上のテキストボックスA1に妥当な値が入力されれば、タブA上のボタンA2のENABLEがTUREになるといった処理を、タブBでも共通で使うことができればと考えています。
テキストボックス自体の処理はイベントを共用することにより可能ですが、その中でボタンのENABLEを特定するのに、簡単な方法があれば是非教えてください。


  2004-03-09 03:18:11  No: 7581

返信ありがとうございます。
簡単に説明するため、初期化の例をだしましたが、
実際にはタブページが複数あり、タブ上に複数種類のコンポーネントが貼り付けられています。
タブA上のテキストボックスA1に妥当な値が入力されれば、タブA上のボタンA2のENABLEがTUREになるといった処理を、タブBでも共通で使うことができればと考えています。
テキストボックス自体の処理はイベントを共用することにより可能ですが、その中でボタンのENABLEを特定するのに、簡単な方法があれば是非教えてください。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加