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

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

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

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

Сообщение qivi » 20.03.2014 11:49:26

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

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

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

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

Сообщение resident » 20.03.2014 12:31:11

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

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

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


з.ы. Вот тут еще немного информации:
http://forum.vingrad.ru/topic-94245/view-all.html
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

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

Сообщение qivi » 20.03.2014 15:12:55

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

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

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

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


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

Сообщение qivi » 20.03.2014 15:44:36

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

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

Сообщение ViTality » 20.03.2014 20:43:58

решил подкинуть ссылок "до кучи")
а вообще еслиб я задался вашим вопросов добавить в панельку лазаруса плюс редактор, то подсмотрел бы как сделал alexs в rxLib. и если что поспрашивать непонятные моменты))
ViTality
постоялец
 
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

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

Сообщение MiniQ » 21.03.2014 18:53:34

Для того, чтобы лазарус поддерживал компонент в дизайн-тайме нужно создать пакет с компонентом и скомпилить лазарус с этим пакетом.
MiniQ
новенький
 
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

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

Сообщение iskander » 22.03.2014 12:45:37

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

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

Написать редактор свойства - наследника от TPropertyEditor (см. PropEdits.pp) и зерегистрировать его в пакете.
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

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

Сообщение qivi » 24.03.2014 10:01:01

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

~

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


iskander, глубоко сейчас не вчитывался, но это похоже на то, что я спрашивал, - поизучаю на досуге. Правда я тут нащёл и реализовал себе не шибко изящное для данного случая решение, я преобразовал базовую рекорд в потомка TCollectionitem, а класс обслуживающий массив этих рекордов в потомка TCollection. Это не совсем то что хотелось, но по крайней мере это позволяет редактировать содержимое моего визуального компонента в дизайнере.
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 93

Рейтинг@Mail.ru