| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Связка TabControl и других элементов |
| Автор: Dende-Soft 4.1.2008, 11:54 |
| Такая трабла. Есть табКонтрол. На нем лежит SynEdit. Нужно чтобы при создании новой вкладки на ней создавался новый СинЕдит. Понятно? А то я сонный еще... |
| Автор: MetalFan 4.1.2008, 14:05 |
| нет у табконтрола вкладок... по сути это одна панель с табсетом Добавлено через 17 секунд используй pagecontrol |
| Автор: Sunvas 4.1.2008, 17:42 |
| Возможно лучше просто подгружать в synedit текст при переходе по вкладкам? |
| Автор: mr.Anderson 4.1.2008, 18:06 | ||
Dende-Soft, не воровать мою http://forum.vingrad.ru/forum/topic-188372.html
И усе. |
| Автор: MetalFan 5.1.2008, 11:28 |
зачем так жестоко? почему Application? |
| Автор: mr.Anderson 5.1.2008, 16:18 |
| MetalFan, а какая разница? Я привык Application писать. А что нужно? |
| Автор: MetalFan 5.1.2008, 16:44 |
| mr.Anderson, ты понимаешь, для чего предназначен параметр у TComponent.Create? и что получается, когда ты Application туда отдаешь? |
| Автор: mr.Anderson 5.1.2008, 21:46 |
| MetalFan, нет, не знаю и не понимаю. Объясните, пожалуйста. |
| Автор: dumb 6.1.2008, 01:27 |
| аргумент конструктора указывает на компонент-владелец(Owner), при уничтожении которого будет уничтожен и создаваемый компонент. если в качестве владельца указывается nil, то забота об уничтожении создаваемого компонента ложится на плечи программера. указание же в качестве владельца Application таки имеет определенный смысл - при завершении программы будет вызван деструктор создаваемого компонента. |
| Автор: MetalFan 6.1.2008, 10:13 | ||
конечно имеет, если понимать, зачем это делаешь. в вышеупомянутом случае можем получить утечку памяти... когда TTabSheet "закрывается", то "лежащие" на нем контролы, у которых владелец Application, продолжут себе жить... |
| Автор: Sunvas 6.1.2008, 12:55 |
Ну.. Мы не видели всего когда. mr.Anderson, ты делаешь free? |
| Автор: mr.Anderson 6.1.2008, 18:17 |
| Sunvas, у чего? У меня все динамические контролы живут во все время работы с программой. Все, что создается, не уничтожается никогда,а если уничтожается, то, разумеется, через Free. То есть, как я понял, передавать nil? |
| Автор: VICTAR 6.1.2008, 18:45 |
| Логичней всего было бы передавать таб, на котором будет располагаться создаваемый контрол. |
| Автор: Koji 20.2.2008, 13:20 |
| |
| Автор: Rennigth 20.2.2008, 13:32 | ||||
так-так-так, подождите... если парент уничтожается то и все его дети тоже вроде уничтожаются... Добавлено через 8 минут и 17 секунд Не, не ошибаюсь
Ну это конечно только если есть парент. |
| Автор: MetalFan 20.2.2008, 15:31 | ||
не путай парента и овнера. при уничтожении овнера все принадлежащие ему компоненты будут автоматически уничтожены. парент же служит контерйнером, в котором отображается контрол. |
| Автор: Rennigth 20.2.2008, 15:35 | ||
А я и не путаю
Тоже можно сказать и про парента. Я имею ввиду что Owner имеет список Components, Parent список Controls, и эти списки косвенно взаимосвязаны. |
| Автор: MetalFan 20.2.2008, 15:40 | ||
хм... хотя я не прав. посмотрел ДНК.
в итоге получается, что при установке парента отвечать за жизнь элемента будет и парент и овнер Добавлено через 1 минуту и 59 секунд ага, это я путал) сорь) |
| Автор: Esperito 20.2.2008, 17:04 |
| MetalFan, а где в этом коде виден Owner? |
| Автор: Rennigth 20.2.2008, 17:56 |
В этом коде Owner и не виден. С ним и так все понятно. В этом коде видно что и Parent тоже контролирует свих детей. |
| Автор: Esperito 20.2.2008, 20:20 | ||
Ну да, содержит ссылки в своём массиве. Но освобождением памяти ведь не занимается. |
| Автор: Rennigth 20.2.2008, 21:06 | ||
Освобождение происходит в дестрое. Я уже приводил код в http://forum.vingrad.ru/index.php?showtopic=189964&view=findpost&p=1419210 топике. |
| Автор: Esperito 21.2.2008, 22:14 | ||
Ааа, прошу прощения. Пропустил |