Вот простой код с использованием Tlist. Если делать по честному, то нужно создавать объект типа TEditList=class(TList). Но это дольше и сложнее писать. Зато легко и удобно пользоваться.
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; TEds: TList;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin TEds:=TList.Create; with TButton.Create(Form1) do begin ParentWindow:=Form1.Handle; Left:=0; Top:=0; OnClick:=Button1Click; Caption:='Add'; end; with TButton.Create(Form1) do begin ParentWindow:=Form1.Handle; Left:=72; Top:=0; OnClick:=Button2Click; Caption:='Delete'; end; with TButton.Create(Form1) do begin ParentWindow:=Form1.Handle; Left:=144; Top:=0; OnClick:=Button3Click; Caption:='Clear'; end; end;
procedure TForm1.FormDestroy(Sender: TObject); begin TEds.Free; end;
procedure TForm1.Button1Click(Sender: TObject); var i: integer; e: TEdit; begin i:=TEds.Add(TEdit.Create(Form1)); with TEdit(TEds[i]) do begin ParentWindow:=Form1.Handle; left:=8; Top:=i*20+30; Name:='Edit'+IntToStr(i+1); Text:=IntToStr(i+1)+'-й Edit'; end; end;
procedure TForm1.Button2Click(Sender: TObject); var i: integer; begin i:=TEds.Count; if i>0 then begin TEdit(TEds[i-1]).Free; TEds.Delete(i-1); end; end;
procedure TForm1.Button3Click(Sender: TObject); var i: integer; begin for i:=0 to TEds.Count-1 do TEdit(TEds[i]).Free; TEds.Clear; end;
| Добавлено @ 16:52 Да, забыл добавить - не кидай ничего на форму - все само создастся.
~FoX~ А зачем закрывть форму? Достаточно TForm.Hide |