gonzales

Как убить кнопку кликнув на нее саму

В теме 59 сообщений

Также изначально удивился данной поднятой темой ("убийство кнопки по клику самой себя"), но подумал, может есть какой случай, что это нужно...

сам НИКОГДА так не делаю! понятно, что это зло! :))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
14 минут назад, Brovin Yaroslav сказал:

А есть вообще понимание:

У меня - нет.
Емнип, Owner-ом для всех наброшенных на форму компонентов выступает сама форма. Вне зависимости от уровня вложенности визуальных компонентов.
Для невизуальных объектов овнер нужен, если они покладены на форму в дизайн-тайме. Parent-а у невизуального объекта нет, а правило "не ты создал - не тебе удалять" выполняться должно.

Это из того, что на поверхности. А какие реальные причины заставили иметь не только парента, но и овнера, да еще и для дизайн-тайм... Возможно, действительно без них никак.

Давайте только без привлечения ARC "ничего удалять не надо, если и владелец и родитель удалятся, ссылки на объект закончатся и он самоуничтожится".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
45 минут назад, Brovin Yaroslav сказал:

А есть вообще понимание:

  1. Что такое Овнер для компонентов в делфи?
  2. Какую роль он играет в дизайнере и в рантайме?

Я бы сформулировал вопрос по-другому. Чем отличается Owner и Parent? Для чего нужен тот и другой. Почему это разные объекты? Ярослав, дайте пожалуйста четкое пояснение как разработчик FMX. Я думаю многим здесь это будет интересно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Owner - отвечает за жизненный цикл объекта

Parent - отвечает за расположение в иерархии объектов

отсюда и плясать надо...

Изменено пользователем #WAMACO

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, kami сказал:

У меня - нет.
Емнип, Owner-ом для всех наброшенных на форму компонентов выступает сама форма. Вне зависимости от уровня вложенности визуальных компонентов.
Для невизуальных объектов овнер нужен, если они покладены на форму в дизайн-тайме. Parent-а у невизуального объекта нет, а правило "не ты создал - не тебе удалять" выполняться должно.

Это из того, что на поверхности. А какие реальные причины заставили иметь не только парента, но и овнера, да еще и для дизайн-тайм... Возможно, действительно без них никак.

Давайте только без привлечения ARC "ничего удалять не надо, если и владелец и родитель удалятся, ссылки на объект закончатся и он самоуничтожится".

Ты в принципе все правильно написал. Есть еще сторона дизайнера: где овнер выступает в роли контейнера. Например для дизайнера : форма и фрейм - это контейнеры, которые он обрабатывает + овнер используется дизайнером в том числе для десерилизации.

Это я к тому: что передавать кабы что в виде овнера, а потом удивляться почему это не работает не правильно. Можно было конечно проверку от дурака сделать. Но это накладные расходы, так как нужно пробегаться вверх по родителям, чтобы это проверять. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

просто, например, есть кнопка,  Owner будет форма, а Parent  - панель.

если ничего не трогать, то при разрушении формы, разрушится и кнопка, а при разрушении панели, на которой кнопка,

кнопка продолжит жить!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
54 минуты назад, #WAMACO сказал:

просто, например, есть кнопка,  Owner будет форма, а Parent  - панель.

если ничего не трогать, то при разрушении формы, разрушится и кнопка, а при разрушении панели, на которой кнопка,

кнопка продолжит жить!

но не в FMX !!! в FMX Parent (панель) при своем разрушении разрушит и кнопку. Вот это неправильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, #WAMACO сказал:

Owner - отвечает за жизненный цикл объекта

Parent - отвечает за расположение в иерархии объектов

отсюда и плясать надо...

Owner - отвечает за разрушение "своих" объектов при собственном разрушении.

Parent отвечает за прорисовку "своих" объектов. Какая еще иерархия объектов? визуальная иерархия - да...  было бы неплохо что бы эта иерархия отвечала и за выравнивание объектов - но нет... не знаю когда в delphi будет нормальное выравнивание... может еще лет 20 подождать...

Изменено пользователем slav_z
синт.ошибка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, #WAMACO сказал:

Также изначально удивился данной поднятой темой ("убийство кнопки по клику самой себя"), но подумал, может есть какой случай, что это нужно...

сам НИКОГДА так не делаю! понятно, что это зло! :))

в FMX очень удобно делать модальные диалоги поверх всей формы. прозрачный layout сверху (по клику закрывается модальная форма - просто разрушается layout со всем содержимым  - 1 случай) конкретное содержимое кладется на него там, конечно, можно расположить кнопку закрытия диалога и все остальное...  по нажатию на эту кнопку также разрушается layout - 2 случай. кнопка разрушается через разрушение своего Owner-а. Но это тоже самое что и разрушить кнопку по нажатию на саму себя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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