|
28 / 24 / 10
Регистрация: 26.04.2015
Сообщений: 307
|
||||||||||||||||
Дочерние формы (не MDI) и STL::List22.08.2016, 23:53. Показов 3916. Ответов 63
Хай всем, нашёл тему по форуму, близкую к моей задаче:
Динамическое создание и удаление компонентов., но возник вопрос, корректно ли использование того кода для компонентов формы
Unit1.cpp
0
|
||||||||||||||||
| 22.08.2016, 23:53 | |
|
Ответы с готовыми решениями:
63
Работа с MDI и Дочерние формы MDI вместо закрытия главной формы закрываются дочерние Как сделать что бы дочерние формы в MDI application delphi сразу не открывались при запуске программы |
|
28 / 24 / 10
Регистрация: 26.04.2015
Сообщений: 307
|
|||||||||||
| 24.08.2016, 02:57 [ТС] | |||||||||||
|
аап теме!
Если нечётко выразился в топике - мне нужно создать по нажатию TForm1::Button1 динамические компоненты-объекты дочерние формы (сделано) и при закрытии любой их них - удалялся бы нужный указатель на эту форму. Как я понял, для создание нескольких компонентов и потом их произвольного удаления лучше использовать STL::List, в котором элементами будут указатели на объекты-формы. адреса дочерних форм проверил - в list записываются (по дебагу до этого не мог увидеть )
P.S.: очень нужна помощь с этими вопросами! ![]() ![]() + любые замечания по коду, если там есть косяки, а они скорее всего есть)
0
|
|||||||||||
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 24.08.2016, 06:50 | |
|
Wolver, 1 если сами хотите управлять временем жизни формы подавайте в её конструктор 0. 2 если хотите удалить её из списка при закрытии то в OnClose формы перебирайте список и как найдёте элемент равный this удалите его
0
|
|
|
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
|
||
| 24.08.2016, 07:13 | ||
|
Не там чисто, где убирают, а там, где не сорят. Ай-м сорри
0
|
||
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 24.08.2016, 07:41 | |
|
SmittWesson, кстати хороший вопрос - из списка то мы удалимся, а кто вызовет delete? Думаю надо глянуть есть ли у формы какой нибудь флажок типа удалить при закрытии
0
|
|
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|
| 24.08.2016, 07:49 | |
|
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 24.08.2016, 07:56 | |
|
d7d1cd, можно, главное что бы после того метода где вы это сделаете (закрытие приводит к вызову нескольких методов) не вызывалось ещё чего нибудь
0
|
|
|
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
|
||
| 24.08.2016, 08:01 | ||
|
0
|
||
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 24.08.2016, 08:09 | |
|
d7d1cd, вроде так - в FormClose приходит Action и если присвоить ему caFree форма сама удалится при закрытии
0
|
|
|
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
|
|||||||
| 24.08.2016, 08:19 | |||||||
0
|
|||||||
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 24.08.2016, 08:33 | |
|
SmittWesson, у человека есть в коде делит, он знает о его существовании по определению так как использует нью
0
|
|
|
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
|
|
| 24.08.2016, 09:42 | |
|
И Гидэ Мопасан. Не вижу. Может у мня проблемы со зрением?
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 24.08.2016, 10:07 | |
|
SmittWesson, 55-я строка Unit1.cpp - убийство дочерней динамической при закрытии родительской. Кстати эдит убивать не нужно если вы в его конструктор подали форму на которой он лежит - его убьёт сама форма в своём деструкторе
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 24.08.2016, 10:09 | ||
|
0
|
||
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 24.08.2016, 10:14 | |
|
Fulcrum_013, 1 что за ренегатство про табу на std)? 2 человек не хочет ждать смерти владельца, а создавать и убивать в полёте, поэтому owner должен быть 0 (у форм но не у контролов)
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||
| 24.08.2016, 11:05 | ||||||||
|
Добавлено через 21 минуту А вообще последнее время приходится програмить в основном без VCL так слепил себе пару шаблонов по образу и подобию чтобы не парится со владениями и тп:
0
|
||||||||
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 24.08.2016, 11:05 | |
|
Fulcrum_013, 1 гхм)) 2 нет никакого капота - человек хочет к примеру что бы при клике на что-то открывалось окно к примеру свойств и что бы можно было таких окон открыть сколько угодно - при клике он окно создаёт, при закрытии удаляет, если он оставит это дело на владельца окна так и будут плодится пока владелец не умрет либо нужно его побуждать убивать их что ничем не отличается от явного уничтожения
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 24.08.2016, 11:17 | |||
|
Добавлено через 7 минут
0
|
|||
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 24.08.2016, 12:00 | |
|
Fulcrum_013, caFree присваивать нужно безусловно и об этом сказано. caFree не имеет отношения к владельцу - форма должна удалится даже если владелец 0 - так зачем её обманывать и назначать владельцем того кто так никогда ничего с ней и не сделает? Контейнер (тут он один - список) нужен лишь для хранения указателей. То что мы храним в нем указатель на форму никак не влияет на саму форму. То что мы удаляем указатель ИЗ СПИСКА никак не влияет на форму. Явное удаление формы как сказано выше в данном случае нежелательно и возложено на обработчик закрытия формы при условии присвоения Action значения caFree. Так что же вам тут не нравится? То что вместо TList или вообще TForm[] использовали std::list? Это дело вкуса и к задаче отношения не имеет.
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 24.08.2016, 12:04 | ||
|
0
|
||
| 24.08.2016, 12:04 | |
|
Помогаю со студенческими работами здесь
20
mdi - дочерние окна перетирают друг друга
Работа с STL list + пропись List.h
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|