kvantum Опубликовано 21 января, 2015 Поделиться Опубликовано 21 января, 2015 (изменено) Здравствуйте ! Опираясь на вопрос http://fire-monkey.ru/topic/432-sovety-po-sozdaniiu-mobilnogo-prilozheniia-master-detail/?p=1638 и на осознанную на практике невозможность корректного уничтожения динамически созданного фрейма, вопрос http://fire-monkey.ru/topic/905-android-tframe-oshibka-pri-dinamicheskom-udaleniisozdanii/ хочу спросить, какие преимущества и недостатки в замене фреймов формами, если вместо фрейма динамически создавать форму и затем закрывать ее методом Close, указав в OnClose: Action:=TCloseAction.caFree; Пугает простота данного решения . В ЧЕМ ПОДВОХ ? :-))) Projects.zip Изменено 21 января, 2015 пользователем Andrey Yefimov поправил ссылки Цитата Ссылка на комментарий
Yarpda Опубликовано 10 февраля, 2015 Поделиться Опубликовано 10 февраля, 2015 Здравствуйте ! Опираясь на вопрос http://fire-monkey.ru/topic/432-sovety-po-sozdaniiu-mobilnogo-prilozheniia-master-detail/?p=1638 и на осознанную на практике невозможность корректного уничтожения динамически созданного фрейма, вопрос http://fire-monkey.ru/topic/905-android-tframe-oshibka-pri-dinamicheskom-udaleniisozdanii/ хочу спросить, какие преимущества и недостатки в замене фреймов формами, если вместо фрейма динамически создавать форму и затем закрывать ее методом Close, указав в OnClose: Action:=TCloseAction.caFree; Пугает простота данного решения . В ЧЕМ ПОДВОХ ? :-))) Тоже столкнулся с этой проблемой. И подвох похоже в том, что память при закрытии формы таким образом почему-то не освобождается, и на команду Assigned(Myform) отвечает true, после такого закрытия. Но, что-то он конечно делает, т.к. после такого закрытия myform.show вызывает AV. Может эта фишка корректно только на IOS работает... Цитата Ссылка на комментарий
xenon54 Опубликовано 10 февраля, 2015 Поделиться Опубликовано 10 февраля, 2015 Думаю лучшее удаление динамически созданной формы будет Myform.DisposeOf; myForm := nil; Цитата Ссылка на комментарий
Yarpda Опубликовано 10 февраля, 2015 Поделиться Опубликовано 10 февраля, 2015 Думаю лучшее удаление динамически созданной формы будет Myform.DisposeOf; myForm := nil; Возможно, но когда его запускать, если модальные формы не доступны? Цитата Ссылка на комментарий
xenon54 Опубликовано 10 февраля, 2015 Поделиться Опубликовано 10 февраля, 2015 Зачем модальные. Просто пишешь: MyForm := TMyform.create(nil); Myform.Show; Цитата Ссылка на комментарий
Yarpda Опубликовано 10 февраля, 2015 Поделиться Опубликовано 10 февраля, 2015 Зачем модальные. Просто пишешь: MyForm := TMyform.create(nil); Myform.Show; )) Ну это понятно. Интересует когда вызвать вот это: Myform.DisposeOf; myForm := nil; Цитата Ссылка на комментарий
xenon54 Опубликовано 10 февраля, 2015 Поделиться Опубликовано 10 февраля, 2015 Тогда же когда ты хотел вызывать Close; Цитата Ссылка на комментарий
Yarpda Опубликовано 10 февраля, 2015 Поделиться Опубликовано 10 февраля, 2015 Тогда же когда ты хотел вызывать Close; Так close в Андроид вызывается в XE7 при потере активности окна. Поэтому и Action:=TCloseAction.caFree и привлекательна, что вроде как не надо следить за уничтожением окна. А если вызвать Close принудительно из кода другой формы, так это совсем другая история... Цитата Ссылка на комментарий
xenon54 Опубликовано 10 февраля, 2015 Поделиться Опубликовано 10 февраля, 2015 Ок, если нужно уничтожение из самого окна, то чем не устраивает self.release? Или я вопроса просто не понимаю... Цитата Ссылка на комментарий
Yarpda Опубликовано 10 февраля, 2015 Поделиться Опубликовано 10 февраля, 2015 Ок, если нужно уничтожение из самого окна, то чем не устраивает self.release? Или я вопроса просто не понимаю... Тем что я просто не знал этого метода. )) Спасибо. Но по моему они в сущности ведут себя одинаково, но их сочетание в OnClose дало наилучший результат в расходе памяти (может стат погрешность конечно). Цитата Ссылка на комментарий
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.