Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 04.05.2014, 01:18   #1
Qbl
Новичок
Джуниор
 
Регистрация: 04.05.2014
Сообщений: 2
По умолчанию Ошибка Control has no parent

Добрый день.
Вопрос такой.
Delphi 7. Создается компонент - наследник класса TLabeledEdit. Стоит добавить переопределение конструктора, или метода Change или добавить published свойство, как при попытке разместить компонент на форме появляется сообщение
Control ... has no parent window.

В конструкторе убирал инициализацию полей. Оставлял в порядке эксперимента лишь inherited Create(AOwner) - ошибка.
Если убрать все добавленные свойства, методы и т.д. и оставить голый класс - ошибка не исчезает. Помогает лишь удаление компонента из пакета, затем создание по-новой. Но опять же до упомянутого места, после чего опять выскакивает ошибка.
------
Проверил. Даже без свойств и конструкторов, простое переопределение метода Change уже приводит к такому результату. Хотя до этого не приводило. В рабочей программе (которая на данный момент запускается) переопределение работало и там стоит именно этот компонент.

В общем, подскажите, пожалуйста, в какую сторону копать.

Заранее спасибо.
Qbl вне форума Ответить с цитированием
Старый 04.05.2014, 10:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
Помогает лишь удаление компонента из пакета, затем создание по-новой.
Ну логично. Установленный компонент уже не зависит от исходника. Любые изменения его должны быть перестроены в BPL. В старых версиях Делфи еще и полюбому перерегистрация должна была быть, чтоб DCU заменялись на новые, в новых возможно эта болячка осталась, не знаю.
Поэтому тест компонента рекомендую делать не кидая его на форму с панели компонентов, а прописывая ручками в программе все его изначальное создание в коде. По крайней мере я так и выходил из положения, потому что постоянно переустанавливать было неудобно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.05.2014, 13:42   #3
Qbl
Новичок
Джуниор
 
Регистрация: 04.05.2014
Сообщений: 2
По умолчанию

"Установленный компонент уже не зависит от исходника"
Не совсем так. У меня в Delphi 7 если вносить другие изменения и перекомпилировать dclusr, то эти изменения моментально отражаются как в самой программе, так и в поведении при design-time.

В общем, воспользовался логичными костылями. В каждой переопределенной методе после inherited запихал if Parent=nil then exit;
Выглядит коряво, но работает.

Все же, не понимаю. Неужели тот же Change вызывается до определения родителя в каком-нибудь SetParent.

В любом случае, спасибо.
Qbl вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка Control has no parent window mosxe Общие вопросы Delphi 0 27.05.2013 11:25
Control '' has no parent window. при создание DateTimePicker bakanaev Общие вопросы Delphi 6 31.03.2013 15:44
Ошибка for loop control variable must be simple local variable 2UnLiMiTeDD Общие вопросы Delphi 8 19.03.2012 16:13
создание TSplitter на форме в dll, Control has no parent window sprofxx Общие вопросы Delphi 9 04.09.2010 13:37
Alpha Control (ошибка) ZBEP Компоненты Delphi 2 27.04.2009 12:00