Сложности с нестандартным свойством в самописном компоненте
Здравствуйте!
Создаю компоненту для FastReport.
Для хранения бинарных данных создал новый тип (наследник TPersistent, про AsignTo не забыл).
Создал published свойство этого типа, для работы с ним в дизайнере написал Property Editor.
Но после 2-х дней безрезультатных экспериментов хочу спросить, как побороть эти затруднения:
- почему свойство не сохраняется в файл дизайна *.fr3 ?
- почему значение свойства обнуляется при копировании компонента в дизайнере ?
- почему значение свойства обнуляется при нажатии на Preview ?
- почему значение свойства обнуляется и в дизайнере при возвращении туда из Preview ?
Если можете навести на решение, буду очень признателен.
Создаю компоненту для FastReport.
Для хранения бинарных данных создал новый тип (наследник TPersistent, про AsignTo не забыл).
Создал published свойство этого типа, для работы с ним в дизайнере написал Property Editor.
Но после 2-х дней безрезультатных экспериментов хочу спросить, как побороть эти затруднения:
- почему свойство не сохраняется в файл дизайна *.fr3 ?
- почему значение свойства обнуляется при копировании компонента в дизайнере ?
- почему значение свойства обнуляется при нажатии на Preview ?
- почему значение свойства обнуляется и в дизайнере при возвращении туда из Preview ?
Если можете навести на решение, буду очень признателен.
Комментарии
Ошибка в 17 строке
Рекомендую изучить исходный код FR4, в частности модуль frxChart.pas (обрати внимание на методы ReadData1/WriteData1 и DefineProperties). Я в свое время именно оттуда брал пример, как писать в fr4 коллекцию (надо было для своей обертки TfrxDbGridEh).
за наводку на DefineProperties огромное спасибо, сижу разбираюсь, как готовить
DimaBr,
вы такие умные, я в восхищении
Напомню, в качестве бинарного свойства использовался наследник TPersistent
Для того, чтобы все проблемные пункты заработали, достаточно оказалось в этом классе перегрузить метод DefineProperties(Filer: TFiler)
И в FastReport-компоненте для свойства определить как read, так и write (в сеттере естественно всего лишь Assign(), а не приравнивание)