22.02.2017 16:10:03
Похоже тема бьет все рекорды по просмотрам.
|
|
|
|
01.04.2017 09:31:11
Здравствуйте! Решил поделиться наработками в области адаптации GIS ToolKit под Lazarus. В процессе работы использовал опыт адаптации GIS ToolKit под Kylix. Ниже предлагаю описание последовательности своих действий. 1.В качестве ОС используется 64-разрядную Astra Linux SE версии 1.5. 2.Установите все инсталляционные пакеты библиотеки визуальных компонент gtk версии 2.0, включая пакеты для разработчиков. Для разработки Lazarus использовался указанный инструментарий. 3.Версию Lazarus 1.6.2 в формате DEB можно скачать с официального сайта 3.Скачать с сайта КБ Панорама инсталляцию ГИС Конструктор для Astra Linux SE по ссылке 4. Скачать с сайта КБ Панорама исходные тексты GIS ToolKit 11 по ссылке 5.Установите пакеты Free Pascal и Lazarus. Я применял команды: $sudo dpkg –i fpc_3.0.0-151205_amd64.deb $sudo dpkg –i fpc-src_3.0.0-151205_amd64.deb $sudo dpkg –i lazarus-project_1.6.2-0_amd64.deb 6.Запустите Lazarus командой: $sudo lazarus-ide 7.Вызовите диалог “Параметры сборки Lazarus” и в поле “Очистка” установите галочку “Очищать все”, нажмите кнопку “Собрать” (рисунок 1). Lazarus полностью пересоберет свой проект и “переоткроется”. 7.Установите инсталляционный пакет ГИС Конструктор согласно readme-файлу. 8.Скопируйте в выбранный каталог исходные тексты GIS ToolKit 11. Файлы формата DFM советую перевести в текстовый вид. Тексты необходимо преобразовать в кодировку KOI8-R, так как ее используют библиотеки ГИС Конструктор. В файле mapvers.inc “открыть” строку {$DEFINE LINUXAPI} и ниже добавить строки: {$DEFINE LAZARUS} – далее будем отделять ключевым словом LAZARUS текст GTK, предназначенный исключительно для Lazarus {$DEFINE CPUX64} – укажем платформу (x64) 9.Далее вызовите задачу “Преобразование пакета Delphi” активировав пункт меню “Сервис-Преобразование кода на Delphi-Преобразовать пакет Delphi в пакет Lazarus” для пакета mappack.dpk (рисунок 2). В результате mappack.dpk будет преобразован в файл mapack.lpk и далее Lazarus автоматически внесет в исходный текст необходимые преобразования. Далее предстоит вручную корректировать исходный текст. 10.Откройте проект mappack.lpk и далее начинается этап компиляции. Применение ключевого слова LAZARUS покажу на примере:
Модули, названия которых начинаются с Q (пример QGraphics), относятся к среде разработки Kylix. Поэтому добавляем отдельную ветку объявления unit для Lazarus. Далее делаем правки в соответствии с логикой адаптации: в местах, указанных компилятором, меняем существующий функционал на аналогичный для Lazarus. 11.Следующий вопрос: отображение карты на компоненте TMapView (mapcmp.cpp). В функции я поменял вызов функции mapPaint95 на mapPaintToXImage. Изменения представлены ниже:
12.В результате последовательного выполнения пунктов 10 и11, я получил готовый к использованию пакет mappack.lpk. Тестирование проводил на примере MapMtr. Файл формата DFM перевел в текстовый вид. Затем адаптировал проект MapMtr для Lazarus, выполнив пункты 9 и 10. На рисунке 3 представлен результат работы примера. В следующий раз расскажу о возможности использования библиотек ГИС Конструктора, содержащих диалоги на Qt, в среде Lazarus.
Изменено: |
|||||
|
|
05.04.2017 19:22:02
Здравствуйте! В дополнение к предыдущему сообщению: 1. Важно помнить при переносе структур ГИС Конструктор: на платформе x64 longint в Lazarus равен 4 байтам, int64 – 8 байтам. В С++ - размер long int равен 8 байтам. Поэтому все поля структур ГИС Конструктор, имеющие тип long int, должны быть перенесены в Lazarus с типом int64. 2. Чтобы в полной мере использовать возможности ГИС Конструктор для своих программ на Lazarus, необходимо знать внутреннюю кухню ГИС Конструктор. Коротко: Экранный вид карты реализуется внутренними функциями ГИС Конструктор, которые в свою очередь используют функционал библиотеки XWindow. Принтерно-растровый вид реализован на классах Qt4. Диалоговый интерфейс ГИС Конструктор также использует Qt4.
Изменено: |
|
|
|
09.04.2017 21:15:35
Предлагаю описание своих действий по адаптации GIS ToolKit под Lazarus в связке с Qt. Будем считать, что первая часть действий, которая описана в предыдущем сообщении, выполнена. 1.Работе Lazarus под профилем Qt посвящена страница проекта FreePascal Скопируйте библиотеки libQt4Pas… в каталог /usr/lib. Файл qt4.pas не нужен, он входит в состав Lazarus. 2.6.Запустите Lazarus командой: $sudo lazarus-ide Соберите его под профилем qt. Вызовите диалог “Параметры сборки Lazarus”, в поле “Очистка” установите галочку “Очищать все”, в поле “Библиотека виджетов LCL” установите “qt”, в поле “Профиль сборки” установите “Очистить и сборать все”, нажмите кнопку “Собрать” (рисунок 1). Lazarus полностью пересоберет свой проект и “переоткроется”. 3.Далее необходимо полностью пересобрать проект MapMtr. Запустим программу, активируем режим выбора контекста отображения (компонент TMapSelectDialog). Откроется диалог “Состав объектов карты” (рисунок 2). Данный диалог основан на Qt4 и вызывается из библиотеки ГИС Конструктор libqdmapselec.so В следующий раз подготовлю информацию по настройке принтерно-растрового режима отображения карты. Данный режим реализован в ГИС Конструктор на классах Qt4 с использованием callback-функций (функций обратного вызова).
Изменено: |
|
|
|
14.04.2017 15:29:38
Здравствуйте! Подготовил небольшой материал по настройке принтерно-растрового вида карты в Lazarus. Как писал ранее, данный режим реализован в ГИС Конструктор на классах Qt4 с использованием callback-функций (функций обратного вызова), реализация которых находится в файле qdmwina.cpp исходных текстов ГИС Конструктор. Тексты лежат в каталоге /usr/share/qt4/examples/gisdesigner11/Sources инсталляции. Так как callback-функции подключаются в конструкторе компонента QDMapView, мы должны написать код библиотеки (назовем ее libmapqtinit.so), в которой создается экземпляр данного класса. Вот исходный код:
Далее копируем библиотеку в каталог /usr/lib и загрузим ее в наш проект. Установим принтерно-растровый вид отображения карты в проекте на Lazarus и запустим программу. Результат на рисунке. В приложении: архив с исходными текстами библиотеки и примера.
Изменено: |
|||
|
|
19.04.2017 18:23:34
Здравствуйте!
Предлагаю краткий материал по разработке прикладной задачи для ГИС Оператор в среде программирования Lazarus (язык программирования Free Pascal)). Что необходимо учитывать при разработке: 1. При использовании MAPAPI-интерфейса ГИС Оператор необходимо помнить, что символьная информация в библиотеках ГИС-ядра храниться в кодировке KOI8-R, Lazarus же использует кодировку UTF8. Поэтому предлагаю следующий путь преобразования символов на примере кода:
2.При использовании диалоговый интерфейс Lazarus необходимо учитывать последовательность объявления unit. Главное: unit Interfaces должен быть объявлен до unit Forms. 3.Перед началом разработки сделайте “линк”-ссылку на библиотеку ГИС Оператор – libmapacces.so командой: ln –s /usr/Operator11/libmapacces.so /usr/lib/libmapacces.so Последовательность разработки включает следующие простые шаги: 1.Для запуска прикладной задачи необходимо описать функцию CallMapFunctionEx. Предлагаю ее код:
2.Описание прототипа функции MAPAPI-интерфейса представлено ниже:
3.Вызываются функции MAPAPI-интерфейса следующим образом:
4.На рисунках представлен результат работы задачи в среде ГИС Оператор как под Astra Linux, так и Windows. В архиве: исходные тексты прикладной задачи для ГИС Оператор, разработанной в среде Lazarus (язык программирования Free Pascal).
Изменено: |
|||||||||
|
|
26.04.2017 18:34:21
Здравствуйте!
Решил подвести первые итоги работы с Lazarus. Общие выводы: 1. Лазарус является бесплатным продуктом. 2. Наличие исходных текстов позволяет использовать данный продукт для разработки программ, которые в дальнейшем необходимо сертифицировать. 3. Lazarus является кроссплатформенной средой разработки. То есть разработанную программу в Windows можно перенести на Linux и наоборот. 4. Достаточная совместимость Lazarus с Delphi позволяет перенести наработки с Delphi на Lazarus. Выводы по взаимодействию с программой ГИС Конструктор. Выделю два: 1. Программа, написанная на Лазарус в сборке с Qt4, может использовать диалоги ГИС Конструктор, которые написаны на Qt4. 2. Программа, написанная на Лазарус в сборке с Qt4, может отображать карту в принтерно-растровом виде, который реализован в ГИС Конструктор на Qt4 на уровне MAPAPI-интерфейса.
Изменено: |
|
|
|
27.03.2018 11:44:29
Здравствуйте! В продолжении знакомства с программированием прикладных задач в среде Lazarus (Операционная система Astra Linux CE) для ГИС Оператор предлагаю краткий обзор разработки с применением классов TPanTask, TPanWindow, TPanAction. Сначала напомню, что необходимо учитывать: 1.Задача разрабатывалась на базе исходных текстов из архива SDK для ГИС Оператор, который можно скачать по ссылке 2. Структуры и параметры необходимо привести к требованиям 64-битной ОС. Пример:
За образец я взял исходные тексты на C++. 3.При использовании диалогового интерфейса необходимо учитывать последовательность объявления unit. Главное: unit Interfaces должен быть объявлен до unit Forms. 4.Перед началом разработки необходимо сделать “линк”-ссылку на библиотеку ГИС Оператор – libmapacces.so командой: ln –s /usr/Operator11/libmapacces.so /usr/lib/libmapacces.so Далее для работы необходимо адаптировать классы TPanTask, TPanWindow, TPanAction для работы в Lazarus. В качестве эталона я использовал тексты на С++: pantask.cpp, h, panwin.h, panact.h. Главное, как упоминал выше, необходимо привести структуры и параметры к требованиям 64-битной ОС. В моем случае – это ОС Astra Linux CE (релиз Орел). Опишу главные моменты: 1.В описание TPanWindow необходимо добавить ссылку на функцию-обработчик главной программы:
Описание типа функции представлено ниже:
2.Далее в конструкторе класса укажем реальный адрес:
3.Для функций класса TPanWindow необходимо для указателей-параметров задавать преобразование к 64-битной переменной:
4.В функцию добавления кнопки в панель для Lazarus необходимо внести следующие изменения:
В указанном выше описании я привел основные ньюансы по созданию прикладной задачи в среде Лазарус для Linux. Исходные тексты прилагаются к данной теме. На рисунках представлен результат работы задачи в среде ГИС Оператор под Astra Linux CE.
Изменено: |
|||||||||||||
|
|
27.09.2022 11:07:15
мне нужно подключить Панораму к Lazarus |
|||
|
|
27.09.2022 17:08:34
Здравствуйте!
Актуальные инсталляции продуктов для Linux доступны для скачивания на нашем сайте в разделе "Скачать": Также на сайте доступна актуальная версия средств разработки для ГИС "Оператор" SE и ГИС "Панорама": Обращаем Ваше внимание, что на текущий момент поддерживается разработка прикладных задач только на языках C++/Python. |
||||
|
|
|||
© КБ Панорама, 1991-2024 Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности |