C++Builder
Начало
Форум
Помощь
Войти
Регистрация
C++Builder
>
Forum
>
Вопросы программирования
>
Общие вопросы программирования в C++Builder
>
родитель TComboBox
Страниц: [
1
]
Вниз
Печать
Автор
Тема: родитель TComboBox (Прочитано 1819 раз)
php_vasia
Участник
Сказали спасибо: +1/-2
Offline
Сообщений: 120
родитель TComboBox
«
:
01 Июль 2011, 05:27:02 »
у меня есть функция, которая создает TComboBox один на всё приложение и помещает его на активную форму
удаляется ли TComboBox при закрытии дочерней формы, если TComboBox находится на ней?
«
Последнее редактирование: 04 Июль 2011, 05:20:17 от php_vasia
»
Записан
d7d1cd
Участник
Сказали спасибо: +59/-24
Offline
Сообщений: 1005
Re: родитель TComboBox
«
Ответ #1 :
01 Июль 2011, 06:43:48 »
Мне кажется, если ComboBox - глобальная, то не удаляется Хотя не факт. А ты возьми, да поэкспериментируй!
Записан
Asher
Администратор
Сказали спасибо: +111/-5
Offline
Сообщений: 425
Re: родитель TComboBox
«
Ответ #2 :
01 Июль 2011, 08:12:14 »
Привет.
Смотрите справку по словам parent и owner.
на parent'е размещается, owner(указывается при создании) отвечает за удаление.
в вашем случае new TComboBox(Application) owner'ом является Application, и уничтожение ComboBox будет только при уничтожении Application.
Записан
php_vasia
Участник
Сказали спасибо: +1/-2
Offline
Сообщений: 120
Re: родитель TComboBox
«
Ответ #3 :
01 Июль 2011, 09:10:02 »
почему при закрытии дочерней формы, я не могу использовать TComboBox
выдает ошибку access violation at address
«
Последнее редактирование: 01 Июль 2011, 09:59:29 от php_vasia
»
Записан
S0mbre
Глобальный модератор
Сказали спасибо: +1113/-22
Offline
Сообщений: 2132
S0mbre
Re: родитель TComboBox
«
Ответ #4 :
01 Июль 2011, 12:46:57 »
Parent удаляет вместе с собой все, что на нем размещено. В данном случае деструктор формы последовательно вызывает деструкторы всех компонентов, Parent'ом которых эта форма является. Разница между Owner и Parent в том, что Parent относится к визуальным компонентам (Parent'ом является компонент, образованный от TControl), а Owner-ом может быть невизуальный (наследник TComponent). Owner отвечает за управление памятью (сохранение и очистка). По умолчанию для визуальных компонентов Owner = Parent. Разработчики предупреждают, что если для визуальных компонентов Owner'ом является не форма, на которой этот компонент расположен, а нечто другое, то в этом случае автоматическая очистка памяти под компонент происходить не будет (!) и более того опубликованные свойства файла не будут сохраняться в файл формы. Для этого надо применять метод SetSubComponent.
Об этом:
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Controls_TControl_Parent.html
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Classes_TComponent_Owner.html
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Classes_TComponent_SetSubComponent.html
Записан
php_vasia
Участник
Сказали спасибо: +1/-2
Offline
Сообщений: 120
Re: родитель TComboBox
«
Ответ #5 :
04 Июль 2011, 06:06:03 »
Можно пример SetSubComponent();
Просто все что нашел в интернете для Delphi, а для builder ничего, как-будто и нет такого метода
Можно сделать чтобы деструктор формы не вызывал деструктор TComboBox, созданного мною
«
Последнее редактирование: 04 Июль 2011, 06:35:45 от php_vasia
»
Записан
S0mbre
Глобальный модератор
Сказали спасибо: +1113/-22
Offline
Сообщений: 2132
S0mbre
Re: родитель TComboBox
«
Ответ #6 :
04 Июль 2011, 07:14:31 »
Попробуй до вызова деструктора формы исключить комбобокс из ее дочерних компонентов:
Код
MyCombo
-
>
Parent
=
NULL
;
Можешь попробовать эту строку добавить, например, в обработчике события OnCloseQuery (событие вызывается до закрытия формы). Но я не тестировал, сам проверяй.
Записан
Страниц: [
1
]
Вверх
Печать
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Вопросы программирования
-----------------------------
=> Общие вопросы программирования в C++Builder
=> Программирование с FMX
=> Работа с базами данных в C++Builder
=> Windows API
=> Технологии COM/DCOM, ActiveX
=> Аспекты и идеология профессиональной разработки ПО
=> Компьютерное железо и системное администрирование
=> студенческий городок
-----------------------------
Обсуждение материалов на сайте
-----------------------------
=> Обсуждений статей на сайте
=> Обсуждение материалов из файлового архива
=> Компоненты сторонних разработчиков к С++Builder
-----------------------------
Работа сайта и новости
-----------------------------
=> Ищу/предлагаю работу
=> Новости из мира программирования
=> Новости - события календаря
=> Голосования
=> Компьютерный юмор и приколы
=> Работа сайта
=> Флейм
-----------------------------
FAQ - частозадаваемые вопросы/ответы
-----------------------------
=> FAQ, общие вопросы, посвящённые C++Builder
=> FAQ, вопросы по базам данных
=> FAQ, вопросы по компонентам
Загружается...