![]() |
|
|
![]()
|
|
| PRIZRAK001 |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 13.7.2005 Репутация: нет Всего: 1 |
Здравствуйте.
Создаю VCL компонент, имеющий вложенные свойства. Вот примерный код. Класс, описывающий сложное свойство.
Сам компонент.
Кладём компонент на форму и пишем следующий код.
Проблема заключается в том, что невозможно изменить значение Prop при помощи инспектора объектов. Точнее, его можно изменить, но какое бы значение мы не задавали, функция ShowMessage всегда будет выводить «3». Т.е. изменения внесённые в режиме проектирования, не переносятся на работающую программу. Полагаю, это связано с тем, что значение свойства Prop не сохраняется в файле *.dfm. Как заставить работать всё нормально? |
||||||||||
|
|||||||||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Скорее всего , все дело в том, что Вы перекрываете загруженное значени в теле конструктора.
Для начала уберите присвоение в конструкторе и посмотрите, что получится. -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| PRIZRAK001 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 13.7.2005 Репутация: нет Всего: 1 |
Попробовал (закоментировал "FProp = 0") - в результате стал выдавать всё время "0", а не то что хочеться. Дело в том, что VCL-компонент инициализируется, и когда кладешь его на форму, и когда запускаешь приложение. И каждый раз вызывается конструктор. Поэтому, чтобы значения свойств не потерялись, они сохраняются в файле *.dfm, соотвествующей формы. А затем восстанавливаются. Но такая штука, срабатывает только для простых типов (int, double) и для стандартных билдеровских (TFont). А вот как сохранить свои типы???......... |
|||
|
||||
| PRIZRAK001 |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 13.7.2005 Репутация: нет Всего: 1 |
Решение найдено!!! Нужно писать метод write. Если его нет, то данные не сохраняются в файле *.dfm.
Вот как можно сделать
|
||||||||
|
|||||||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |