以编程方式从表单中创建和删除标签

Wiz*_*ard 2 delphi delphi-xe2 firemonkey

我在这里得到了一些代码,它可以很好地创建一个标签,但是当我释放标签时,它仍然显示在表单上。即使它已被删除并且不再“分配”。

这是下面的代码。它可以很好地创建标签,但不会删除。没有例外,被分配的人说假。

我也可以用 TRectangle 重现这个。

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
      Lab : TLabel;
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Lab := TLabel.Create(Self);
  Lab.Parent := Form1;
  Lab.Text := 'Hello!';
  Lab.Position.X := 30;
  Lab.Position.Y := 40;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  FreeAndNil(Lab);
  ShowMessage(BoolToStr(Assigned(Lab), true));
end;
Run Code Online (Sandbox Code Playgroud)

pun*_*r76 5

我认为

Lab.Parent:= NIL;
FreeAndNil(Lab);
Run Code Online (Sandbox Code Playgroud)

有帮助。