Перейти к содержанию
Fire Monkey от А до Я
  • 0

Динамическое создание/уничтожение


Alesk

Вопрос

есть tswitch, при его включении динамически создается кнопка в tabcontrol на tabitem2 (сам свитчер находится в tabitem1), и при выключении tswitch кнопка соответственно должна уничтожаться(btn.destroy). только вот при повторном нажатии на tswitch, происходит ошибка при попытке создать кнопку 

btn := TButton.Create(tabbedwithnavigationform.i1); //i1 - кнопка лежащая в том же tabitem2

Пробовал также уничтожать кнопку другим способом - btn.free, все было без ошибок, вот только кнопка оставалась на форме, и в итоге при повторном нажатии на свитчер просто появлялась вторая кнопка. Пробовал еще и freeandnil(btn); результат точно такой же 

весь код:

procedure addi (sw:tswitch; s:string; sob:myproc; ii:integer);
begin
  if sw.IsChecked=false then
begin
izm[ii] := TButton.Create(tabbedwithnavigationform.i1);
izm[ii].BeginUpdate;
izm[ii].Position.Y:=-99;
izm[ii].Align := talignlayout.top;
izm[ii].TintColor:=tabbedwithnavigationform.i1.TintColor;
izm[ii].Text:=s;
izm[ii].OnTap:=sob;
izm[ii].EndUpdate;
izm[ii].Parent := tabbedwithnavigationform.VertScrollBox2;
end
else
begin
izm[ii].Destroy;
end;
end;

izm[] - массив из tbutton

i1 - кнопка лежащая в том же tabitem2

Изменено пользователем Alesk
Ссылка на комментарий

Рекомендуемые сообщения

  • 3

Нужно использовать myObject.Release, а не Free.

Только обратите внимание, что Release - это отложенное уничтожение, т.е. моментально компонент исчезает с формы, а вот уничтожится - после, когда-нибудь, когда до него дойдет очередь.

Помимо этого, если ссылка на объект есть где-то в поле класса, то нужно заnil-ить ее, дабы уменьшить счетчик ссылок.

Изменено пользователем kami
Ссылка на комментарий
  • 0

если делаешь release то потом purgatory косячит под iOS при каких-то внутренних удалениях стилей

да и вообще динамический add/remove controls под иосью какая-то тяжко решаемая задача

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...