Delphi 6 наследование от TDataModule
От: VinRom ICQ UIN:158841098
Дата: 07.06.03 19:19
Оценка:
Попробовал сделать следующее:
Создаем DataModule, называем его DMCommon, получаем класс TDMCommon.
Создаем еще один, называем его DMOrder, получаем класс TDMOrder.
Исправляем декларацию класса TDMOrder = class(TDMCommon) — т.е. наследуем новый класс от TDMCommon.

При создании DataModule Delphi создает файл frm, после описанной выше процедуры в frm добавляется описание свойств Color и Font,
естественно в pas файле этих свойств нет (их нет ни в одном из базовых классов). При выполнении имеем Access violation.

Ручное удаление из frm строк с описанием Color и Font ничего не дает, delphi добавляет их снова.
Update на delphi не стоит. Поиск в инете ничего не дал.

Вопрос: кто-нибудь встречался с подобным поведением, и как это исправить?
Re: Delphi 6 наследование от TDataModule
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.06.03 04:37
Оценка:
Здравствуйте, VinRom, Вы писали:

VR>Вопрос: кто-нибудь встречался с подобным поведением, и как это исправить?

Не химичить, а наследоваться честно. При создании TDMOrder надо выбрать в диалоге New закладку с именем текущего проекта, найти там TDMCommon, и выбрать внизу опцию "Inherit". Так будет гораздо гигиеничнее.
... << RSDN@Home 1.0 beta 7a >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Delphi 6 наследование от TDataModule
От: VinRom ICQ UIN:158841098
Дата: 09.06.03 05:38
Оценка:
Здравствуйте, Sinclair, Вы писали:

S> Так будет гораздо гигиеничнее.

Спасибо! Работает. Но как-то нехорошо они это придумали .
А если я увижу, что у части модулей можно выделить общее, и захочу это общее вытащить в базовый класс? Придется заново создавать DM-наследников и тащить туда руками код?
Re[3]: Delphi 6 наследование от TDataModule
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.06.03 05:47
Оценка: 11 (3) +1
Здравствуйте, VinRom, Вы писали:

VR>Здравствуйте, Sinclair, Вы писали:


S> Так будет гораздо гигиеничнее.

VR>Спасибо! Работает. Но как-то нехорошо они это придумали .
Нет, это как раз они придумали очень хорошо. Не хотелось бы грузить подробностями стриминга компонентов VCL, но при наследовании или агрегации возникают существенные проблемы с интерпретацией dfm — файлов.
VR>А если я увижу, что у части модулей можно выделить общее, и захочу это общее вытащить в базовый класс? Придется заново создавать DM-наследников и тащить туда руками код?
Ну, вообще-то ничего сверхестественного среда не делает. Все ровно то же самое можно получить вручную. Рекомендую посмотреть на код .pas, которые получается для унаследованных модулей, а также на текстовое представление их dfm.
Поняв, как это все работает, вы сможете "выделять общее" вручную, перемещая оба вида кода между модулями.
А вообще — да, рефакторинг у Borland хреновенько развит.
... << RSDN@Home 1.0 beta 7a >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Delphi 6 наследование от TDataModule
От: VinRom ICQ UIN:158841098
Дата: 09.06.03 06:30
Оценка:
Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.