いつもお世話になっております。
現在多数のコンポーネントを初期化するのに、
次の方法で行っています。
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;
となり、ちょっと大変です。
このような記述をもっとスマートに行う方法はないでしょうか。
以上よろしくお願いします。
全て同じコンテナ(Panelなど)の中に格納されてるのなら、そのコントロールのComponentsプロパティからアクセスすることもできます。
for i := 0 to Panel.ControlCount - 1 do
TEdit(Panel.Controls[i]).Clear;
もし、対象外のコントロールが含まれるのなら、Tagを切り替えるなりして対応すればいいです。
複数のボタンの有効状態を一斉切り替えするコードとかには、便利ですね。
一行目だけComponentsとなっていますね(^_^;
ヘルプをみるとわかりますが、ComponentsプロパティとControlsプロパティというものがあります。
まあ、お好きな方をどうぞ。
返信ありがとうございます。
簡単に説明するため、初期化の例をだしましたが、
実際にはタブページが複数あり、タブ上に複数種類のコンポーネントが貼り付けられています。
タブA上のテキストボックスA1に妥当な値が入力されれば、タブA上のボタンA2のENABLEがTUREになるといった処理を、タブBでも共通で使うことができればと考えています。
テキストボックス自体の処理はイベントを共用することにより可能ですが、その中でボタンのENABLEを特定するのに、簡単な方法があれば是非教えてください。
返信ありがとうございます。
簡単に説明するため、初期化の例をだしましたが、
実際にはタブページが複数あり、タブ上に複数種類のコンポーネントが貼り付けられています。
タブA上のテキストボックスA1に妥当な値が入力されれば、タブA上のボタンA2のENABLEがTUREになるといった処理を、タブBでも共通で使うことができればと考えています。
テキストボックス自体の処理はイベントを共用することにより可能ですが、その中でボタンのENABLEを特定するのに、簡単な方法があれば是非教えてください。
ツイート | ![]() |