クラスの型の変数を変更し、利用する方法

解決


たき  2009-03-19 19:36:04  No: 33711

初心者です、教えてください。
例えば
EX1 : TDefault; 
EX2 : TDefault; 
EX3 : TDefault; 
EX4 : TDefault;

と変数宣言があります。
ボタンを押したときにEX1のStatusを変更したい場合、
ボタンONイベント→  EX1.Status  :=  1;
などと変更していますが、4つ変更したい場合は
EX1.Status  :=  1;
EX2.Status  :=  1;
EX3.Status  :=  1;
EX4.Status  :=  1;
としなければいけないのでしょうか(実際は30個ある)
ループとかでまわして、
EX○.Status :=  1;
と○の中を書き換えていきすべてのStatusを1に変えるということ
は可能でしょうか。
可能であればやり方を教えてください。
よろしくお願いします。


pekesuke  2009-03-19 20:21:45  No: 33712

配列を使われてはいかがでしょうか。

var
  EX: array of Tdefault;
  I: integer;
begin
  SetLength(EX, 10);
  for I := Low(EX) to High(EX) do
  begin
    EX[I] := TDefault.Create;
    EX[I].Status := 1;
  end;


たき  2009-03-19 22:52:39  No: 33713

回答ありがとうございます。
わからないので再度お願いします。(ちょっと説明が足りませんでした)
EX1、EX2、EX3、・・・、EX30はそれぞれボタンです。
EX1ボタンを押すとEX1のStatusが1になるようなボタンです。

ALL Status Changeみたいなボタンを新たに作って、そのボタンを押したときにEX1〜EX30のそれぞれのStatusの値が1に変わるようにしたいです。

実際に
ALL Status Changeを押すイベント→
EX1.Status  :=  1;
EX2.Status  :=  1;
EX3.Status  :=  1;
    ・
    ・
    ・
EX30.Status :=  1;
と全て書けば済むことですが、きれいな形ではないです。
配列はうまくできませんでした。


tono  2009-03-20 00:19:24  No: 33714

FindComponentを使えば出来るのではないでしょうか。


たき  2009-03-20 01:03:06  No: 33715

tonoさん、pekesukeさん
解決できました。
便利な機能があったんですね。

ありがとうございます。


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

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






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