Отображение published свойств в инспекторе

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Отображение published свойств в инспекторе

Сообщение Climber »

Сделал форму, в ней прописал published свойство:

Код: Выделить всё

published
property Number: integer read FNumber write FNumber;
Далее нажимаю Файл-Создать-Унаследованный компонент, выбираю эту форму, создаю. Форма появляется, в инспекторе свойства Number нет. Так и должно быть?
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

Сам так не делал, но подозреваю что да, так и должно быть. Чтобы Лазарус знал о published-свойствах, по-идее, нужно две вещи: зарегистрировать компонент и пересобрать IDE. Здесь ни одна из них не выполнена.
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Сообщение Climber »

Odyssey писал(а):Чтобы Лазарус знал о published-свойствах, по-идее, нужно две вещи: зарегистрировать компонент и пересобрать IDE.
Меня, в свою очередь, смущают тоже две вещи:
1. Чтобы узнать о published свойстве, надо сделать потомка от TPersistent (что и было сделано) и обратится к RTTI информации о классе (что и делает Lazarus).
2. В design-time Lazarus создает полноценный экземпляр объекта (насколько мне известно), так что читать-писать свойство тоже никаких препятствий нет.

А регистрировать и пересобирать IDE надо для того, чтобы компонент на палитру попал. Если я ничего не путаю.
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

Чтобы Lazarus смог обратиться к RTTI класса, нужно чтобы определение этого класса было вкомпилено в Lazarus и добавлено в список зарегистрированных компонентов. Особенность в том, что ObjectInspector -- это часть Lazarus, а ваша модифицированная форма -- это часть вашей программы. RTTI -- мощная штука, но она не работает между приложениями, т.е. из одного приложения (Lazarus) нельзя получить RTTI классов, определённых в другом приложении (вашей программе).
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Сообщение Climber »

Ну ладно, через RTTI нельзя. Но у Лазаря есть исходники формы, а там черным по белому написано - published property :mrgreen: Так что нечего отлынивать. 8)
Ответить