Interested Article - MSE (среда визуального программирования)
- 2021-02-28
- 1
MSE — среда визуального программирования с использованием компилятора Free Pascal . Состоит из библиотеки визуальных компонентов MSEgui и редактора форм и исходных текстов MSEide .
В отличие от, например, проекта Lazarus , MSE не ориентируется на совместимость с Delphi VCL , что в некоторых случаях упрощает разработку и освобождает от громоздкости.
Имеет: встроенный отладчик , подсветку синтаксиса, автозавершение полей классов, навигацию по коду, генератор отчётов и т. д.
ВНИМАНИЕ
: проект MSE теперь является частью
mse-org
: https://github.com/mse-org
Исходники MSEide и MSEgui находятся здесь: https://github.com/mse-org/mseide-msegui
Биография Мартина: https://sites.google.com/view/martin-schreiber-biography/
Особенности и преимущества
Юникод
Во всех компонентах используется Юникод . Также юникод используется и при печати, что позволяет в одном выходном документе выводить символы нескольких кодировок. Исходные тексты тоже могут быть в юникоде, что позволяет использовать текстовые константы без проблем переносимости между Win32 и Linux .
Печать
Имеет несколько механизмов печати :
- в выходном формате PostScript (Win32 и Linux);
- прямая печать GDI-принтер (естественно — только для Win32);
- в «contributed» — есть класс для текстовой печати в выходной кодировке CP866 (Russian DOS), со спецметодами форматирования (урезание, автоперенос, заполнение) столбцов, и рисования рамок — как псевдографических, так и упрощенных (из символов «|-+»);
Базы данных
Особый акцент сделан на разработку приложений для работы с БД
- доступ к БД на PostgreSQL , MySQL , SQLite и Firebird без промежуточных драйверов
- доступ к БД на Oracle, MSAcess, ASA, DB2 и прочим — при наличии исходников промежуточной библиотеки ZeosDBO
-
имеет очень мощный компонент TMSESQLQuery, который предоставляет
- чтение и запись БД через SQL-запросы, включая SQLite3
- реализация «FieldDefs» позволяет вручную назначить типы полей выборки, если они определились некорректно (очень полезно для SQLite3)
- параметрические запросы
- автогенерация запросов изменения данных
- возможность прозрачной замены автоматически снегерированных запросов на «свои»
- автоопределение уникальных индексов и автоназначение ключевых полей по найденному PRIMARY-индексу
- оффлайновый режим для модификации данных после разрыва соединения, с записью при восстановлении соединения
- локальный режим, заменяющий TMemDataset
- локальные индексы на всех типах полей, кроме MEMO/BLOB (с авто-переупорядочением выборки при активации индекса) и фильтрация, эти индексы могут быть составными
- оффлайновый и локальный режимы имеют возможность хранить данные (включая BLOB и картинки) в локальном файле
- выборка, кэширование и запись BLOB-полей
- юникодная перекодировка на лету
- раздельные транзакции для чтения и записи
- опциональный фиктивный режим транзакций (очень полезен для SQLite3 и прочих БД, в которых невозможны вложенные транзакции)
- опциональное автоподтвержение транзакции после записи изменений
- опциональная перевыборка данных после подтверждения транзакции
-
компонент TDBWidgetGrid :
- позволяет разместить списки выбора, логические переключатели, изображения и т. п. прямо в ячейках таблиц
- позволяет разместить в фиксированных строках (header и footer) практически любые виджеты, что удобно для реализации переключателей сортировки, режимов и т. п.
- позволяет объединять ячейки в фиксированных строках
- предоставляет автонумеруемые фиксированные столбцы
- экономный режим работы БД-таблиц, когда таблица «держит» в памяти только минимально необходимую порцию данных
- компонент TDBLookupBuffer позволяет скопировать одно или несколько полей выборки в сверхбыстрый буфер памяти, используемый для обслуживания списков выбора, поиска одного поля через другое и прочих операций, не вызывая при этом ренавигации и прочих нежелательных эффектов в выборке
- каждый тип данных имеет свой компонент для ускорения обращения к полям (если доступ через «FieldByName» оказывается медленным)
- компонент для работы с автоинкрементными полями (очень полезен для вставке данных в режиме «мастер -детали»)
- компоненты для прозрачной увязки таблиц «мастер-детали»
Библиотеки
Полностью сама отрисовывает компоненты. Например, в GNU / Linux не использует никаких сторонних виджетов — в Linux работает напрямую с Xlib , в Windows : использует только функции API . Адаптирует встроенную палитру к не-TrueColor режимам экрана с малым количеством цветов (255 и менее)
Базовым классом для элементов GUI является twidget . В отличие от Delphi MSEgui не делает различия между простыми графическими элементами и элементами, которые могут получить фокус ввода — всем виджетам доступна вся функциональность класса twidget.
Экземпляры twidget имеют два важных свойства — twidget.frame и twidget.face .
- frame ответственен за рамку вокруг рабочей области элемента — это может быть как «стандартная» псевдотрёхмерная рамка, так и некая составная конструкция, собираемая из растровых элементов.
- face отрисовывает фон рабочей области GUI элемента — позволяет отображать цветовые градиенты, растровые изображения и использовать полупрозрачность.
Свойства frame и face можно задавать централизовано, используя tframecomp и tfacecomp — что упрощает использование «скинов».
Для редактирования исходных данных простых типов в MSEgui доступны специализированные виджеты ( tintegeredit , trealedit , tdatetimeedit …). Главное свойство-обработчик сообщений этих виджетов — onsetvalue , через него задаётся реакция виджетов на пользовательский ввод.
Может создавать окна непрямоугольной формы, при этом используя библиотеку libXext. Поддерживает Wayland .
В отличие от Lazarus, MSEgui позволяет наследование визуальных форм и создание MDI -приложений.
Лицензия
Бесплатная, с открытыми исходниками. Оболочка распространяется под лицензией GNU GPL , библиотека — под модифицированной GNU LGPL с возможностью прилинковки к закрытым проектам.
История
Будучи в основном программистом на паскале Мартин Шрайбер разработал MSEgui после того, как компания Borland прекратила поддержку своей linux -среды программирования Kylix . Он использовал получившийся программный продукт для своей основной работы — разработки программного обеспечения для PC и микроконтроллеров на заказ .
В 2013 году он начал работу над более простым по сравнению с Free Pascal паскалеподобным языком программирования MSElang, использующим в качестве бэкенда LLVM и добился на этом пути определённых результатов .
29 ноября 2018 года с Мартином Шрайбером случился сильный сердечный приступ и 27 декабря 2018 года он скончался . в настоящее время разработка MSEgui и других проектов Мартина Шрайбера продолжена сообществом на GitHub
См. также
- Lazarus
- Free Pascal
- FpGUI
- KOL
Примечания
- Équipe Pascal. (фр.) . Developpez.com (23 декабря 2015). Дата обращения: 7 февраля 2019. 9 февраля 2019 года.
- (англ.) . GitLab. Дата обращения: 7 февраля 2019. 9 февраля 2019 года.
- . www.lazarusforum.de. Дата обращения: 7 февраля 2019. 9 февраля 2019 года.
- на сайте GitHub
Ссылки
- на сайте GitHub
- на SourceForge.net .
- Вадим Станкевич. // Компьютерные вести. — 2008. — № 4 .
- 2021-02-28
- 1