Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Коротки вопрос о удалении компонентов / 15 сообщений из 15, страница 1 из 1
22.01.2019, 00:16
    #39762570
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
Здравствуйте!
есть массив компонентов, разных.... Которые создаются в рантайме!
Если я в ран тайме создам панель, и создам на это панели еще несколько компонентов
...Create(panel[i])
...parent := panel[i]

как мне правильно удалить все компоненты? И нужно ли удалять их все?
Или достаточно сделать FreeAndNil(panel[i]) ??

В общем интересует вопрос, при удалении панели, всё что на нем, автоматом уничтожается, или надо вручную ?
...
Рейтинг: 0 / 0
22.01.2019, 00:20
    #39762572
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
Владелец (Owner) присмерти автоматически убивает всех, кем владеет.
Родитель (Parent) присмерти автоматически убивает всех наследников.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.01.2019, 01:52
    #39762584
Гирлионайльдо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
Смело можешь вызвать free для panel и он уничтожит всё что там лежит



Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
destructor TWinControl.Destroy;
...
  I := ControlCount;
  while I <> 0 do
  begin
    Instance := Controls[I - 1];
    Remove(Instance);
    Instance.Destroy;
    I := ControlCount;
  end;
...
Рейтинг: 0 / 0
22.01.2019, 09:16
    #39762644
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
ГирлионайльдоСмело можешь вызвать free для panel и он уничтожит всё что там лежит
а если потом какой-нибудь безумец поменяет деструктор предка в недрах ВЦЛ и наступит всеобщий п...ц хаос?

Не, презерватив на огурце - наше фсе

зы. я щас крамолу скажу, имхо, иногда индусский код (когда объекты уничтожаются в порядке, обратном их созданию) более очевиден и понятен при таком подходе, особенно, если в него смотреть много лет спустя после написания.
...
Рейтинг: 0 / 0
22.01.2019, 09:54
    #39762662
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
Док,

безумцев в топку. вместе с кодом :)

авторЕсли я в ран тайме создам панель, и создам на это панели еще несколько компонентов
Если сделаешь owner'ом компонентов панель, а owner'ом панели - форму, то вообще ничего удалять не нужно будет. если, конечно, тебе самому не нужно будет что-то удалить раньше закрытия формы. если нужно удалять раньше, то удаления панели достаточно (если она, конечно, owner компонентов).

Можно дополнительно почитать тут:

https://stackoverflow.com/questions/32241645/what-is-the-difference-between-owner-and-parent-of-a-control
...
Рейтинг: 0 / 0
22.01.2019, 13:08
    #39762779
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
Дока если потом какой-нибудь безумец поменяет деструктор предка в недрах ВЦЛ и наступит
всеобщий п...ц?

Вообще-то это заложено в базовой архитектуре VCL от самого начала, но таки да, именно так
спагетти-код внезапно мутирует в банку с червями.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.01.2019, 14:10
    #39762838
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
Всё что создал вручную, вручную и уничтожай (в обратном порядке)
...
Рейтинг: 0 / 0
23.01.2019, 14:04
    #39763458
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
22.01.2019 14:10, DimaBr пишет:
> Всё что создал вручную, вручную и уничтожай (в обратном порядке)

Всё что не имеет OWNER'а
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.01.2019, 14:07
    #39763461
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
Сам создал, сам убил.
...
Рейтинг: 0 / 0
23.01.2019, 14:40
    #39763509
Гирлионайльдо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
DimaBrСам создал, сам убил.

А сидеть в тюрьме по законам РФ надо! Когда мать убивает своего ребёнка
...
Рейтинг: 0 / 0
23.01.2019, 15:26
    #39763581
Gator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
Гирлионайльдо,

бе-бе-бе!

О законах РФ в ООП ничего не сказано (и о других законах других стран)

А по делу, вопрос школоты, которая путает "родителя" с "владельцем".

Вот у меня много миксов,
Там есть TPanel и есть приложение винды (хоть кад какой-нить). Никак не связаны.
Задача: окошко этого приложения внедрить в панель.
Цель: Управлять приложением Delphi не теряя управления вин-приложением.

И это всё работает. Что и когда надо создаётся и удаляется в нужные моменты.
Если DelphiApp завершается, завершаются и внедрённые в него WinApps.
Занятые ресурсы освобождаются.
...
Рейтинг: 0 / 0
23.01.2019, 15:34
    #39763591
Гирлионайльдо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
Gator,

Просто для своей панели вызвать setparent и вауля, он будет в чужом процессе
...
Рейтинг: 0 / 0
23.01.2019, 15:56
    #39763612
Gator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
Гирлионайльдо,

нет. у панели и так SetParent есть, а вот, например, у Notepad.Exe нету
...
Рейтинг: 0 / 0
23.01.2019, 16:15
    #39763638
Гирлионайльдо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
Gator,
...
Рейтинг: 0 / 0
23.01.2019, 16:27
    #39763656
Gator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коротки вопрос о удалении компонентов
Гирлионайльдо,


Я не про дельфийский метод и winapi. И я наоборот вставлял. Типа блкнот в дельфю или косынку в дельфю.
И тогда скажи, если ресайзить панель, что будет с внедренным приложением?

Впрочем, мы давно тут обсуждали и я потом картинки выкладывал...
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Коротки вопрос о удалении компонентов / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]