Delphi 动态创建组件,单个创建、单个销毁

效果图如下:

实现部分代码如下:

var
  rec: Integer = 0;  //记录增行按钮点击次数

implementation

{$R *.dfm}


//动态释放单个组件内存,即销毁组件
procedure TForm1.DeleteRow(Sender: TObject);
begin
  if rec < 1 then
    Exit
  else
  begin
    TPanel(Panel1.Controls[rec]).Free;  //释放单个控件内存
    TComboBox(Panel2.Controls[rec]).Free;
    TEdit(Panel3.Controls[rec]).Free;
    Dec(rec);  //增行按钮次数递减
  end;
end;

//动态创建单个组件
procedure TForm1.AddRow(Sender: TObject);  
var
  e:Integer;  //记录当前组件总数量
  edt: TEdit;
  pnl: TPanel;
  combo: TComboBox;
begin
  Inc(rec);  //按钮点击次数
  e := Panel3.ControlCount;   //edit数量
  //动态创建Edit
  edt := TEdit.Create(Panel3); 
  edt.Parent := Panel3;
  edt.Left := Edit1.Left;
  edt.Top := Edit1.Top + (Edit1.Height + 3)*e;
  edt.Width :=Edit1.Width;
  edt.Height := Edit1.Height;
  edt.Text := 'Edit' + IntToStr(rec + 1);
  edt.Show;
  //Panel、ComboBox创建方法与Edit相同
 
end;

  

原文地址:https://www.cnblogs.com/go-jzg/p/4114402.html