タグを指定してコンポーネントを指定する方法


Mr.X  2005-03-02 07:01:58  No: 13467

コンポーネント(TEdit)を動的に作成しました。何個のEditが作成されたかは分っています。タグは作成された順番に割り当てているので、「最後のEditのタグ=作成されたEditの数」というようにしています。そこで、Editのタグを指定してそのEditのメソッドを利用するということはできないでしょうか?
ご教授どうかよろしくお願いします。


にしの  2005-03-02 07:43:59  No: 13468

Editのメソッドを利用、というのはどういうことを指していますか?
同じTEditであれば、Tagの内容がどうあれ、同じメンバ関数を持っています。
例えば、TEditを3個作り、その3個全てのSelectAllを呼び出したいということでしょうか。
Tagを使わずに、配列に入れれば
for i := 0 to 2 do EditArray[i].SelectAll;
で0〜2の3つのEditのSelectAllを順次呼び出せます。

Editのイベントで、自身(Sender)のTagの値を見て、どのEditであるかを判断することはできますが、その逆をするにはそれぞれのEditのTagと比較してやらないとできないと思います。


Mr.X  2005-03-02 08:30:56  No: 13469

分りにくくてすみません。
メソッドというのは、例えば、Edit.text(←この部分) := 'test';というようなことを、タグを指定して実行したいということです。
また、タグを指定して、そのタグをもったEditがすでに作られているかどうかを判定するようなこともしたいのですが、ご教授お願いします。


Mr.XRAY  URL  2005-03-02 08:45:01  No: 13470

>Edit.text(←この部分) := 'test';というようなことを、タグを指定して実行

う〜ん.イマイチ状況がわかりません.
Tagを使用する理由と,その,Edit.text:=XXXX というのは,どんなイベント
で呼出すのかというか,タイミングが..,
具体的なレスをつけることができませんね.これでは.


Mr.XRAY  URL  2005-03-02 09:07:41  No: 13471

こんな感じでしょうか.

procedure TForm1.Button1Click(Sender: TObject);
var
    i: Integer;
    AEdit : TEdit;
begin
     for i := 0 to Form1.ComponentCount-1 do begin
       if (Form1.Components[i] is TEdit)  then begin
         AEdit:=(Form1.Components[i] as TEdit);
         if AEdit.Tag=1 then AEdit.Text:='AAA';
       end;
     end;
end;


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

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






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