Попробовал сделать следующее:
Создаем DataModule, называем его DMCommon, получаем класс TDMCommon.
Создаем еще один, называем его DMOrder, получаем класс TDMOrder.
Исправляем декларацию класса TDMOrder = class(TDMCommon) — т.е. наследуем новый класс от TDMCommon.
При создании DataModule Delphi создает файл frm, после описанной выше процедуры в frm добавляется описание свойств Color и Font,
естественно в pas файле этих свойств нет (их нет ни в одном из базовых классов). При выполнении имеем Access violation.
Ручное удаление из frm строк с описанием Color и Font ничего не дает, delphi добавляет их снова.
Update на delphi не стоит. Поиск в инете ничего не дал.
Вопрос: кто-нибудь встречался с подобным поведением, и как это исправить?
Здравствуйте, VinRom, Вы писали:
VR>Вопрос: кто-нибудь встречался с подобным поведением, и как это исправить?
Не химичить, а наследоваться честно. При создании TDMOrder надо выбрать в диалоге New закладку с именем текущего проекта, найти там TDMCommon, и выбрать внизу опцию "Inherit". Так будет гораздо гигиеничнее.
... << RSDN@Home 1.0 beta 7a >>
Здравствуйте, Sinclair, Вы писали:
S> Так будет гораздо гигиеничнее.
Спасибо! Работает. Но как-то нехорошо они это придумали

.
А если я увижу, что у части модулей можно выделить общее, и захочу это общее вытащить в базовый класс? Придется заново создавать DM-наследников и тащить туда руками код?
Здравствуйте, VinRom, Вы писали:
VR>Здравствуйте, Sinclair, Вы писали:
S> Так будет гораздо гигиеничнее.
VR>Спасибо! Работает. Но как-то нехорошо они это придумали
.
Нет, это как раз они придумали очень хорошо. Не хотелось бы грузить подробностями стриминга компонентов VCL, но при наследовании или агрегации возникают существенные проблемы с интерпретацией dfm — файлов.
VR>А если я увижу, что у части модулей можно выделить общее, и захочу это общее вытащить в базовый класс? Придется заново создавать DM-наследников и тащить туда руками код?
Ну, вообще-то ничего сверхестественного среда не делает. Все ровно то же самое можно получить вручную. Рекомендую посмотреть на код .pas, которые получается для унаследованных модулей, а также на текстовое представление их dfm.
Поняв, как это все работает, вы сможете "выделять общее" вручную, перемещая оба вида кода между модулями.
А вообще — да, рефакторинг у Borland хреновенько развит.
... << RSDN@Home 1.0 beta 7a >>