以下のような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;
・
・
・
・
のように変数を宣言するとうまくいくのですが
動的生成する個数がきまっていないためできません。
何かよい方法をご存知の方いましたらご教授お願いします。
はずしていたらごめんなさい
フォーム時に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;
では、だめなのでしょうか?
TObjectListを使えばどうですか?
ツイート | ![]() |