You are hereОбзор архитектуры

Обзор архитектуры


MSEgui не требует внешних библиотек виджетов - он связан непосредственно с графическим интерфейсом операционной системы: X11 через Xlib на GNU/Linux и gdi32 под Windows.

(GUI - переводится как "графический интерфейс пользователя".)

Для каждого элемента GUI не требуется ресурсов системы - только основные окна (main windows) известны операционной системе. Полная обработка внешних событий (клавиатура, мышь, управление фокусом ввода, ...) происходит в MSEgui на уровне Паскаля.

Базовым классом для элементов GUI является twidget. Нет никакого различия между простыми графическими элементами и элементами, которые могут получить фокус ввода, как в случае с Delphi. Все виджеты MSEgui имеют в распоряжении весь функционал класса twidget.

Важные особенности twidget - twidget.frame и twidget.face. Когда frame или face не используются, они представлены нулевым (nil) указателем, таким образом почти не используя ресурсов.

Twidget.frame ответственен за структуру вокруг рабочей области элемента. Отображение структуры высоконастраиваемое - это может быть просто и быстро отрисовываемая трехмерная структура, так же как сложная и более медленная составная конструкция, основанная на растровых изображениях. Есть также другие элементы frame, которые могут построить полосы прокрутки, кнопки и лейблы.

Twidget.frame отрисовывает фон рабочей области GUI элемента - можно показать цветные градиенты и растровые изображения в различных формах, также возможна полупрозрачность.

Установка свойств frame и face может быть централизовано при использовании tframecomp и tfacecomp, которые могут быть выбраны в tframe и tface как шаблоны.

Следующий уровень централизации - tskincontroller, через который могут быть сделаны параметры настройки всей программы. Чтобы достигнуть этого, tskinkontroller назначает на элементы GUI соответствующие шаблоны: tframcomp и tfacecomp.

Контроль функций виджета (focusin, focusout...) сделан виртуальными процедурами и функциями, а не через сообщения. У функции сообщений MSEgui есть другие задачи. Также используется интерфейс Corba-стиля  - для безопасной связи между различными компонентами, и автоматическое разъединение через destroy, используется tobjectlinker.

Тип msestring используется в MSEgui для того, чтобы хранить текст. В настоящее время, msestring означает WideString. Однако, ссылка рассчитанная [на] FPC WideString (UnicodeString), планируется для использования под Windows, как только это станет доступным в одном из будущих релизов FPC. В текстовых файлах используется utf-8, ASCII или локальная кодировка - MSEide+MSEgui не использует utf-16 файлы.

Компоненты баз данных MSEgui обеспечивают преобразование от локальных кодировок или utf-8 (настраивается) к WideString для буферизовавших данных. Для операций с файлами существует ряд собственных функций MSEgui с интерфейсом WideString. Программа, использующая MSEgui, может поэтому работать последовательно с WideStrings, что является существенным облегчением для некоторых задач.

Специализированные виджеты редактирования данных для простых типов исходных данных (целое число, вещественное, tdatetime...) доступны в MSEgui (tintegeredit, trealedit, tdatetimeedit...). Главное свойство сообщений этих виджетов - onsetvalue, которое может использоваться для того, чтобы реагировать на пользовательский ввод.

t*edit виджеты могут быть вставлены в twidgetgrid и таким образом сформировать столбец соответствующего формата данных.

Для просмотра и редактирования полей данных может использоваться tdbwidgetgrid togeather с множеством tdb*editwidgets. Стоят упоминания также: различные компоненты поиска и tlookupbuffer, быстрая ассоциативная память данных.

Основной компонент окружения баз данных MSEGUI - tmsebufdataset, из которого получен tmsesqlquery. MSEgui DB - форк системы FPC SQLDB, где TBufDataset и большие части TSQLQuery и компонентов связи были полностью переписаны.

Tmsebufdataset предлагает местные индексы, вычислимые и internalcalc- поля, режим с прерванным соединением с базой данных, режим "в памяти", где нет необходимости соединения с базой данных и может хранить местный журнал, чтобы к позже переподсоединить ранее разъединенное соединение с базой данных. tmsebufdataset хранит тексты как WideStrings переменной длины.

Ещё есть скриптовые компоненты SQL и tsqlresult для быстрых запросов без TDataset наверху. Презистентные экземпляры TField или остаются в рамках tmsesqlquery, где они могут быть отредактированы в инспекторе объектов через tmsesqlquery.controller.fields, или они могут быть вставлены в формы или модули как как отдельные компоненты из палитры компонентов 'DBf'.

MSEide поддерживает 'визуальное наследование форм', Submodule (эквивалентный Delphi TFrame) и позволяет присвоение компонентов других форм или модулей к свойствам компонента во время разработки.

Интернационализация сделана через модули ресурсов, которые загружаемы во времени выполнения. MSEi18n, инструмент, который поддерживает импорт и экспорт текстов в табличные программы, позволяющие редактировать - это облегчает перевод непрограммистами.

(Мартином Шрейбером/translated by Alexander)