uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure BtDel(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Bt:TButton;
implementation
{$R *.dfm}
procedure TForm1.BtDel(Sender: TObject);
begin
FreeAndNil(Sender);
//去掉下面这句代码就部报错,但是下面必须做一些处理的不能去并且
//这两句代码不能颠倒顺序
caption:='pp'
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Bt:=TButton.Create(Self);
Bt.Parent:=Self;
Bt.OnClick := BtDel;
end;
为避免重复定义Bt,应做如下改动:
procedure TForm1.Button1Click(Sender: TObject);
begin
if Assigned(Bt) then FreeAndNil(Bt);//如果不加这句,先前定义的对象会在内存中丢失,导致 内存泄漏。
Bt:=TButton.Create(Self);
Bt.Parent:=Self;
Bt.OnClick := BtDel;
end;
ly_liuyang(Liu Yang) 兄:
你很强啊,发现你回答的问题特多
是不是老在这里逛啊