Использование BDS2006, C ++ Builder.
Длинная предпосылка, пытающаяся объяснить текущую ситуацию, поскольку мне трудно описать, что у меня есть и что мне нужно:
Я работаю над старым, очень сложным и большим проектом.
Когда проект был запущен, его нужно было распространять как в виде EXE, так и в виде OCX. В то время выбор был в том, чтобы создать TFrameMAIN, содержащий «Everyting» (в MainForm и в части «OCX» практически нет кода).
А поскольку основной пользовательский интерфейс построен на страницах, для каждой страницы в TFrameMain есть TFrame.
Кадры были затем повторно использованы в каком-то незначительном, производном проекте. По этой причине кадры не использовались, чтобы иметь возможность изменять поведение компонента в производных кадрах. На самом деле, в основном приложении единственные кадры, которые появляются дважды, это маленькие «всплывающие окна».
Даже сейчас мне нужно быть очень осторожным, чтобы ничего не менять в производном фрейме (я имею в виду, я не могу ничего изменить в фрейме, размещенном где-то), но мне нужно изменить «оригинальный» фрейм и перекомпилировать весь связанный проект ,
Но у меня есть проблема: независимо от того, что я делаю, в «родительских» .dfm-файлах всегда есть «унаследованные» значения, ссылающиеся на внутренние компоненты фрейма, иногда предотвращая появление изменений, которые я делаю в TFrame, в скомпилированном приложении ( или, иногда, даже вызывая ошибки времени выполнения, потому что я могу указать в коде кадра на объект, «измененный» родительскими «унаследованными» значениями).
Например, это часть Mainform .dfm:
inherited barFTCvF: TBarSeries
Data = {
030600000000000000000014400000000000000000FFFFFF1F0000000000001C
400000000000004940000000200000000000003B400000000000004E40000000
2000000000008047400000000000005440000000200000000000C05040000000
0000005940000000200000000000C05540000000000000594000000020}
end
Наличие объявленных здесь значений серии TeeChart предотвращает любые изменения, внесенные в «исходный» фрейм, для отображения во встроенном приложении, поскольку эти значения отменяют мои изменения.
Единственное «решение», которое я нашел прямо сейчас, — это удалить производный фрейм и заменить его из палитры компонентов (Стандарт-> Фреймы-> Выбрать фрейм).
Этот нежелательный эффект распространяется по иерархии вплоть до основного, поэтому я должен удалить-заменить измененный кадр в FrameMain, а затем удалить и заменить FrameMain из MainForm.
Кажется, ошибка IDE для меня ….. в любом случае. Есть ли способ избежать этого «наследования» в файлах DFM (без преобразования каждого кадра в компоненте пакета)?
И еще: поскольку я не хочу менять внутреннее поведение / внешний вид фреймов с того места, где они были отброшены, я спрашиваю, есть ли способ «заблокировать» эту возможность.
Задача ещё не решена.
Других решений пока нет …