|
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 596
|
||||||
Самоуничтожение панели10.10.2013, 16:20. Показов 2588. Ответов 25
Метки нет (Все метки)
- Здравствуйте Форумчане! У меня возник такой вопрос:
В моей программе сделан VCL-компонент на базе TPanel (TMy_Panel). На ней, в свою очередь, динамически создается TComboBox. - Создавать и удалять эту МоюПанель ИЗВНЕ конечно просто:
a) - передавать выбранное значение (строку) КомбоБокса в основную программу; b) - уничтожать саму МоюПанель (за дальнейшей ненадобностью). - Т.е. как уничтожить МоюПанель из кода самой МоейПанели ? ... Заранее благодарен всем!
0
|
||||||
| 10.10.2013, 16:20 | |
|
Ответы с готовыми решениями:
25
Самоуничтожение файла Самоуничтожение объекта класса |
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
||||||
| 10.10.2013, 16:22 | ||||||
0
|
||||||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||||||
| 10.10.2013, 16:50 | ||||||
|
Т.е из метода твоего комбобокса?
А если так?
0
|
||||||
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
|
| 10.10.2013, 16:52 | |
|
Практически это можно осуществить, но только через Try - __finally , а вообще - не следует так вольно с компонентами... .
1
|
|
|
|
|
| 10.10.2013, 17:43 | |
|
0
|
|
|
|
|||||||
| 10.10.2013, 17:49 | |||||||
|
вот какой код у себя проверял:
1
|
|||||||
|
|
||||||
| 10.10.2013, 22:30 | ||||||
|
kzru_hunter, метод OnPanelDblClick является методом класса формы. Он не имеет прямого отношения к классу панели, который ты даже и не наследовал. Пример некорректный.
Попробуй погонять такой код, причем многомного раз. ![]()
2
|
||||||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||
| 10.10.2013, 23:27 | |||
|
0
|
|||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 10.10.2013, 23:29 | |
|
Ну стоит последней строкой в методе delete this, и что? Это же последняя строка, больше к св-вам this мы в этом методе мы не обращаемся. Откуда взяться ошибкам?
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 11.10.2013, 00:00 | ||
|
Вот мне, кажется, еще ни разу не приходилось наследовать что-то кроме TForm. Но это, возможно, объясняется тем, что я решаю достаточно тривиальные задачи. Вот на BC 502 (если кто помнит) мне приходилось наследовать буквально все стандартные компоненты. Добавлено через 13 минут Вот сейчас буквально ради любопытства grep-ом посмотрел все свои Бюльдеровские проекты. Однажды пытался унаследовать кнопку, дабы изменить ее цвет. Не получилось - бросил. А так - только TForm.
0
|
||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 11.10.2013, 00:12 | |
|
0
|
|
|
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 596
|
|
| 11.10.2013, 16:09 [ТС] | |
|
- Прошу прощения за отсутствие, должен был уехать на время ...
- nick42, через try - __finally - не догадался! Надо будет подумать ... - Варианты kzru_hunter и BRcr тоже надо попробовать. Они отличаются тем, что в 1-м обработчик двойного щелчка динамической Панели является ВНЕШНИМ для Панели методом (методом Основной Формы), а во 2-м ВНУТРЕННИМ для Панели методом. - Я уже делал когда-то вариант (правда не для Панели а для Формы) и нечто среднее между этими двумя вариантами. Делал метод Основной Формы - "удалитель" динамической вспомогательной Формочки. Передавал указатель на него через параметры конструктора при создании динамической Формочки. И там, внутри динамической Формочки, когда было нужно удалить динамическую Формочку, запускал этот метод. Этот вариант у меня благополучно работал. К сожалению никак не могу найти этот небольшой проект, а то бы выложил. - В моем-же варианте с Панелью я делаю примерно то-же, что описал выше, но получаю все время исключение: - "Control has no parent window", что не так уж и далеко от AV. Можете посмотреть сами этот проект, кто захочет в прикрепленном архиве. - Но, видимо, правы UI и nick42: - "Незачем дразнить гусей !" Видимо лучше создавать МоюПанель один раз (и как невидимую). А ее видимостью легко управлять и ИЗВНЕ, и ИЗНУТРИ МоейПанели. Сэкономить хотел на размере загрузочника ... - Всем, всем большое спасибо за участие !
0
|
|
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 11.10.2013, 16:32 | |
|
Скачал test_MyPanel.rar. Открыл, скомпилил, запустил. Нажал кнопку "открыть", нажал кнопку "закрыть". Повторил несколько раз. Никаких ошибок. Builder XE. Что я делаю не так?
0
|
|
|
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 596
|
|
| 11.10.2013, 16:57 [ТС] | |
|
- Простите gumi250, говорил очень много и забыл дать инструкцию по пользованию:
a) - нажмите кнопку - "Открыть"; b) - Введите какое-либо значение из списка КомбоБокса или наберите новую строку в нем; c) - нажмите "Enter" для принятия этой строки; и далее все удовольствия ...
0
|
|
|
|
|
| 11.10.2013, 17:14 | |
|
Я вижу, что напутал с контекстом обращения, и пост мой был понят неправильно, за что прошу простить.
![]() Staut, то, что выложил я, это не вариант - это демонстрация того, как делать не надо. И предложен код был, только чтобы кто-нибудь смог убедиться в ненадежности данного подхода.
1
|
|
|
|
|||||||||||
| 11.10.2013, 17:16 | |||||||||||
|
К сожалению, в первый раз встречается в глаза ситуация с самоудалением экземпляра класса. Поэтому не совсем понял проблему.
Но в принципе тот код, что я до этого приводил, вполне легален. Is it legal (and moral) for a member function to say delete this? Поэтому, коде BRcr также не должен вызывать исключений (проверял у себя). Но вот если ещё усложнить код, например, так:
Из-за этого я решил, что проще заставить кого-то другого удалить этот самый panel. Никаких идей не приходило в голову, кроме как отправлять сообщение, например в очередь главного потока, что обработчик смог его обработать и удалить этот самый объект(panel):
1
|
|||||||||||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 11.10.2013, 17:33 | |
|
Когда у меня возникла такая проблема, тоже пользовался WM_USER. На сколько я понимаю тут проблема вовсе не в самоудалении класса, а в удалении комбобокса из функции-обработки его нажатия. В этом легко убедится если не удалять панель, а удалить только комбобокс.
1
|
|
|
|
||||||||
| 11.10.2013, 17:40 | ||||||||
0
|
||||||||
| 11.10.2013, 17:40 | |
|
Помогаю со студенческими работами здесь
20
Самоуничтожение базы... :)
Самоуничтожение объекта Самоуничтожение данных на диске Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
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
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|