Интеграция визуального компонента в Lazarus

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

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

Ответить
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Интеграция визуального компонента в Lazarus

Сообщение qivi »

Для личных нужд написал визуальный компонент, вроде не плохо получилось, хотелось бы его полноценно интегрировать в Lazarus. Его содержимое хранится и управляется самописным классом включённым в него (динамический массив рекордов, с сопутствующими методами очистка/добавление/удаление и т. д.), я создал проперти ссылающееся на это хранилище данных, но Lazarus естественно не знает что с этим делать и не отображает в в инспекторе объектов.

Хотел бы узнать как можно прописать для Lazarusa этот тип данных и свой визуальный редактор для него?

Как это сохранять/загружать в lfm?
resident
энтузиаст
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Сообщение resident »

qivi писал(а):Хотел бы узнать как можно прописать для Lazarusa этот тип данных и свой визуальный редактор для него?

Как это сохранять/загружать в lfm?

Я пока своих компонентов не разрабатывал, но У Вас задача похоже немного пересекается с моей:
http://freepascal.ru/forum/viewtopic.php?f=5&t=9761
Объект должен быть наследнком от TPersistent


з.ы. Вот тут еще немного информации:
http://forum.vingrad.ru/topic-94245/view-all.html
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

Да с TPersistent встречался...

Но возвращаясь к своей задаче. Как я уже говорил выше, у меня есть класс, внутри которого есть динамический массив и методы его обработки. Допустим я наследую этот класс от TPersistent... а дальше то как?

Как добавить в Lazarus свой редактор для этого класса который по сути будет редактировать содержимое этого динамического массива? Что нужно сделать что бы данные из этого массива сохранились в LFM файл?

Я уже не раз писал простенькие компоненты, но решать задачу когда публикуемой для инспектора объектов пропертью становится некий самописный класс, тем более содержащий данные в массиве ещё не доводилось.
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

Когда то давно уже видел эту статью... но чем она мне поможет в вышеназванном вопросе?
ViTality
постоялец
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

Сообщение ViTality »

решил подкинуть ссылок "до кучи")
а вообще еслиб я задался вашим вопросов добавить в панельку лазаруса плюс редактор, то подсмотрел бы как сделал alexs в rxLib. и если что поспрашивать непонятные моменты))
MiniQ
новенький
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Сообщение MiniQ »

Для того, чтобы лазарус поддерживал компонент в дизайн-тайме нужно создать пакет с компонентом и скомпилить лазарус с этим пакетом.
iskander
энтузиаст
Сообщения: 627
Зарегистрирован: 08.01.2012 18:43:34

Сообщение iskander »

qivi писал(а):Как это сохранять/загружать в lfm?

Нужно переопределить метод DefineProperties.
http://www.rsdn.ru/article/delphi/serialization.xml (псевдосвойства).
qivi писал(а):Как добавить в Lazarus свой редактор для этого класса который по сути будет редактировать содержимое этого динамического массива?

Написать редактор свойства - наследника от TPropertyEditor (см. PropEdits.pp) и зерегистрировать его в пакете.
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

iskander писал(а):Нужно переопределить метод DefineProperties.
http://www.rsdn.ru/article/delphi/serialization.xml (псевдосвойства).

~

Написать редактор свойства - наследника от TPropertyEditor (см. PropEdits.pp) и зерегистрировать его в пакете.


iskander, глубоко сейчас не вчитывался, но это похоже на то, что я спрашивал, - поизучаю на досуге. Правда я тут нащёл и реализовал себе не шибко изящное для данного случая решение, я преобразовал базовую рекорд в потомка TCollectionitem, а класс обслуживающий массив этих рекордов в потомка TCollection. Это не совсем то что хотелось, но по крайней мере это позволяет редактировать содержимое моего визуального компонента в дизайнере.
Ответить