コントロールを配列にして一括処理したいTipVBの様にコントロールを配列化して、コントロールのグループに対して 一括処理をしたい時があります。コントロールの名前を工夫すれば少ない手間で コントロールを配列化できます。以下はフォーム上の10個のスピードボタンを 配列化して、一括でキャプションを設定する例です。type TForm1 = class(TForm) SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton5: TSpeedButton; SpeedButton6: TSpeedButton; SpeedButton7: TSpeedButton; SpeedButton8: TSpeedButton; SpeedButton9: TSpeedButton; SpeedButton10: TSpeedButton; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } buttons: array[1..10] of TSpeedButton; end; (略) procedure TForm1.FormCreate(Sender: TObject); var i: Integer; begin {コンポーネントを配列化する} for i:=1 to 10 do begin buttons[i] := FindComponent('SpeedButton'+IntToStr(i)) as TSpeedButton; buttons[i].tag := i; {ついでに 後の事も考えて tag も設定しておく} end; end; procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin {ボタンを押すと、スピードボタンのキャプションを一括設定する。} for i:= 1 to 10 do buttons[i].Caption := IntToStr(i); end; 解説FindComponent はフォームにのっているコンポーネントを名前で探してくれる 便利なメソッドです。上の例のように、 配列化したいコンポーネントの名前の末尾が数字になるように工夫しておけば、 FindComponent を使って簡単にコンポーネントを配列化することができます。 |