Программно создать и удалить ярлык из формы - PullRequest
1 голос
/ 19 декабря 2011

У меня есть некоторый код, который отлично создает ярлык, но когда я освобождаю ярлык, он все равно отображается в форме.Даже если он был удален и больше не «назначен».

Вот код ниже.Это создает метку хорошо, но не удалит.Без исключений, и назначенный говорит ложь.

Я могу воспроизвести это и с 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;

Ответы [ 2 ]

4 голосов
/ 19 декабря 2011

я думаю

Lab.Parent:= NIL;
FreeAndNil(Lab);

может помочь

0 голосов
/ 19 декабря 2011

FWIW, используя Delphi XE (не XE2), ваш код работает должным образом (после внесения небольших изменений, например, замены Position.X на Left и т. Д.).

Несколько вещей для проверки / попытки:

  • действительно ли ваш Родитель действительно Form1 (поскольку вы используете Lab.Parent: = Form1 вместо self)?
  • пробовали ли вы добавить Self.Repaint после освобождения Lab?
...