動的生成について


理恵  2004-01-16 20:40:06  No: 6750

以下のようなEditを動的生成するプログラムを組みました。
unit Unit1;
  
  interface
  
  uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;
  
  type
    TForm1 = class(TForm)
      Button1: TButton;
      Button2: TButton;
      procedure Button1Click(Sender: TObject);
      procedure Button2Click(Sender: TObject);
      procedure FormCreate(Sender: TObject);
    private
      { Private 宣言 }
    public
      { Public 宣言 }
    end;
  
  var
    Form1: TForm1;
    MyEdit: TEdit; // 追加
  
  implementation
  
  {$R *.dfm}
  
  procedure TForm1.Button1Click(Sender: TObject);
  var
  i:integer;  
  begin
    for i := 0 to count do    //countはいくつになるかわかりません
    begin
      MyEdit := TEdit.Create(Self);
      with MyEdit do
        begin
          Parent :=  sb1;
          SetBounds(8,96*i+6,88,16);
          Name := 'MyEdit' + IntToStr(i);
        end; 
     end;
  end;

このようにすると、 Name := 'MyEdit' + IntToStr(i);
としているため、動的生成したEditに命令をおくることができないです。
var
MyEdit0: TEdit; 
MyEdit1: TEdit; 
MyEdit2: TEdit;  
     ・
     ・
     ・
     ・
のように変数を宣言するとうまくいくのですが
動的生成する個数がきまっていないためできません。

何かよい方法をご存知の方いましたらご教授お願いします。


ふじっこ  2004-01-16 21:00:08  No: 6751

はずしていたらごめんなさい
フォーム時にMyEditが1つですよね
MyEdit : Array  of TEdit;
===========================
    SetLength(MyEdit, count);
    for i := 0 to count do    //countはいくつになるかわかりません
    begin
      MyEdit[i] := TEdit.Create(Self);
      with MyEdit[i]do
        begin
          Parent :=  sb1;
          SetBounds(8,96*i+6,88,16);
          Name := 'MyEdit' + IntToStr(i);
        end; 
     end;
では、だめなのでしょうか?


えび  2004-01-16 21:51:01  No: 6752

TObjectListを使えばどうですか?


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

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






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