|
|
|
Как очистить компонент от компонентов.
|
|||
|---|---|---|---|
|
#18+
Добрых суток, Создаю динамически компоненты. Владелец, а так же родитель компонентов является тот компонент в котором был создан компонент. Т.е. получается дерево что ли. А теперь вопрос как грамматно удалить компоненты? Делаю так. Передаю Родительскую компоненту на которой находятся все компоненты которые подлежат уничтожению. И по очереди их зануляю. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Но вот беда при создании эти же компонент возникает исключение (а иногда нет. как звезды сойдутся). Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2019, 22:24 |
|
||
|
Как очистить компонент от компонентов.
|
|||
|---|---|---|---|
|
#18+
авторА теперь вопрос как грамматно удалить компоненты? Самому удалять ничего не нужно. Удаление - забота владельца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2019, 23:16 |
|
||
|
Как очистить компонент от компонентов.
|
|||
|---|---|---|---|
|
#18+
makhaonавторА теперь вопрос как грамматно удалить компоненты? Самому удалять ничего не нужно. Удаление - забота владельца.Ну, он же хочет вручную, не удаляя владельца. Только не удаляет, а сразу освобождает. А надо сначала удалить из списка (Delete или Remove), а потом только можно освобождать, иначе будет каша. Если не ошибаюсь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2019, 02:35 |
|
||
|
Как очистить компонент от компонентов.
|
|||
|---|---|---|---|
|
#18+
FIL23 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2019, 06:38 |
|
||
|
Как очистить компонент от компонентов.
|
|||
|---|---|---|---|
|
#18+
FIL23, если я правильно понял вопрос, то некий объект решает, что ему пора быть уничтоженным? Верно? Я бы сделал так: через PostMessage (а не SendMessage, это важно) отправил бы родительскому объекту сигнал, что меня дочернего объекта пора уничтожить. Таким образом через PostMessage разрывается CallStack и объект возможно будет кошерно удалить. Техническая деталь: например, в WParam запихав integer(Self), передадим указатель ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2019, 11:32 |
|
||
|
Как очистить компонент от компонентов.
|
|||
|---|---|---|---|
|
#18+
Кроик Семён, Только не родителю, а владельцу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2019, 11:44 |
|
||
|
Как очистить компонент от компонентов.
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2019, 11:50 |
|
||
|
Как очистить компонент от компонентов.
|
|||
|---|---|---|---|
|
#18+
ain-2, Free может быть недостаточно. Еще нужно занулить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2019, 11:52 |
|
||
|
Как очистить компонент от компонентов.
|
|||
|---|---|---|---|
|
#18+
YuRockТолько не удаляет, а сразу освобождает. А надо сначала удалить из списка (Delete или Remove), а потом только можно освобождать, иначе будет каша. нет, если "владелец" - в смысле стандартного механизма TComponent.Owner - то они автоматически обмениваются Notification при удалении FIL23, FIL23 Код: pascal 1. 2. Мрак. Зачем так сложно? Код: pascal 1. или Код: pascal 1. Но вообще, компонент-владелец сам удаляет своих детей при смерти. Посмотри исходники TComponent в районе удаления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2019, 12:05 |
|
||
|
Как очистить компонент от компонентов.
|
|||
|---|---|---|---|
|
#18+
L_argoain-2, Free может быть недостаточно. Еще нужно занулить. Занулить локальную переменную? Которая уже в следующем шаге того же самого цикла будет перезаписана? ЗАЧЕМ ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2019, 12:28 |
|
||
|
Как очистить компонент от компонентов.
|
|||
|---|---|---|---|
|
#18+
Кроик СемёнЯ бы сделал так: через PostMessage (а не SendMessage, это важно) отправил бы родительскому объекту а если у родительского объекта нет GDI Handle ? вот вообще нет, как у TLabel ? Или в принипе может быть, но пока не создан ? Кроик Семёнчто меня дочернего объекта пора уничтожить. А если дочерний объект уже в процессе удаления, уже в деструкторе или рядышком ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2019, 12:29 |
|
||
|
Как очистить компонент от компонентов.
|
|||
|---|---|---|---|
|
#18+
YuRockНу, он же хочет вручную, не удаляя владельца. Внезапно, страшноужасное: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. ...но можно и руками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2019, 12:35 |
|
||
|
Как очистить компонент от компонентов.
|
|||
|---|---|---|---|
|
#18+
FIL23, Если ты устраиваешь удаление вручную, беспокоясь, что они повиснут мусором потом, когда всё кончится, то зря, поскольку родитель, перед тем, как сдохнуть, убьет всех своих потомков. Если же есть другие причины, чтобы удалять их, то код корректный, ищи ошибку в другом месте. И не надо путать их с контролами, это совсем другая история, ибо контрол, лежащий на TWinControl, может ему и не принадлежать. Положенный куда-нибудь Control будет удален при удалении своего потомка, а не объекта своего размещения. Можно, например, кидать на форму другую форму со всем её набранным в дизайнере функционалом и набором своих контролов. И вот если родителем этой формы будет наша парент-форма или её контрол, то можно не париться с её удалением, а если родителем формы является nil или Application, то удалить надо вручную. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2019, 14:48 |
|
||
|
Как очистить компонент от компонентов.
|
|||
|---|---|---|---|
|
#18+
V.Borzov, ЕМНИП не так. Поскольку TWinControl завязаны на GDI-объекты, то при удалении VCL-Parent'a (который в терминах GDI и окажется владельцем) они удалятся тоже. Т.е. кто первый удаляется - Owner или Parent - тот Control и убьёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2019, 15:33 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39783581&tid=2039717]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 523ms |

| 0 / 0 |
