В предыдущей статье мы посмотрели, как будут вести себя и выглядеть существующие приложения MapBasic при запуске в 64-битной версии MapInfo Pro, в которой интерфейс пользователя, основанный на классическом меню, был заменён ленточным интерфейсом.
Большинство приложений MapBasic будет работать, но, возможно, будут интегрированы в новый интерфейс не лучшим образом, так как были спроектированы под интерфейс с классическим меню.
В этой статье мы рассмотрим, как лучше интегрировать ваше MapBasic приложение в новый ленточный интерфейс, используя новую версию MapInfo MapBasic 12.5.1.
Интеграция ваших приложений в ленточный интерфейс
Мы создали .NET API, который можно использовать из языка .NET, такого как VB.NET или C#. Но вы также можете обращаться к этому API в MapBasic через объявления методов .NET. Эти определения есть в новом файле IMapInfoPro.def в составе MapInfo MapBasic 12.5.1. Новая версия MapBasic доступна на сайте: http://mapinfo.ru/product/mapinfo-mapbasic#estimap-tab-128.
Улучшенная поддержка .NET
С выходом 64-битной версии MapInfo Pro 12.5 мы улучшили поддержку .NET в MapBasic.
В течение нескольких лет (начиная с версии 9.5) вы могли использовать преимущества .NET из MapBasic. Однако, вы могли использовать только статические методы в сборках. Вы не могли получить экземпляры объектов .NET и использовать их непосредственно из MapBasic.
В MapBasic 12.5.1 вы теперь можете создавать .NET объекты в режиме исполнения и использовать их из ваших MapBasic приложений. Вы можете вызывать экземпляры класса, интерфейсные методы и свойства.
Просто помните, что вам надо объявить в MapBasic (Declare Method) методы и свойства класса, для того чтобы иметь возможность использовать их из MapBasic.
Мы добавили несколько новых типов переменных в MapBasic для поддержки вышеуказанных возможностей:
- This - содержит ссылку на объект .NET
- RefPtr - может использоваться для передачи ссылки на объект .NET
- IntPtr - делает возможной работу с определёнными типами данных операционной системы в 32 и 64-битных приложениях. Это помогает создавать приложения, которые будут работать и в 32-битной и в 64-битной версиях MapInfo Pro
Структура ленточного интерфейса
Давайте начнём с обзора элементов ленты, чтобы получить представление о её структуре и о том, как с ней работать.
Так как мы используем .NET API для ленточного интерфейса, воспринимайте ленту объектно-ориентированно.
Первое, что у вас есть - объект MapInfo Application. Это сама MapInfo Pro.
Из MapInfo Application вы можете получить ряд других объектов, таких как лента (Ribbon), запущенные приложения MapBasic, окна, менеджер стыковки (Docking Manager) и строка состояния (Statusbar).
Давайте внимательней посмотрим на объект лента (Ribbon). Из объекта лента (Ribbon) вы можете получить коллекцию вкладок, размещённых на ленте.
Вы можете пройти в цикле через коллекцию вкладок или, например, добавить новую вкладку (Tab) к коллекции.
В коде MapBasic это будет выглядеть так:
Из определённой вкладки (Tab) вы можете получить коллекцию групп (Groups).
Теперь вы можете пройти по коллекции групп циклом или можете добавить новую группу к коллекции, чтобы создать вашу собственную группу на вкладке. Вы можете добавить группу в конец, либо вставить в определённую позицию перед одной из существующих групп.
После того как вы нашли требуемую группу или добавили вашу собственную, вы можете получить коллекцию элементов управления (Controls) из этой конкретной группы.
Вы можете пройти по коллекции элементов управления в цикле, чтобы найти нужный или добавить свой новый элемент управления. Элемент управления может быть одним из нескольких типов. Он имеет имя, заголовок, и ему можно назначить подсказку (tooltip) и изображение.
В коде на MapBasic это может выглядеть так:
Вышеприведённый фрагмент взят из примеров кода, поставляемого в комплекте с MapBasic 12.5.1. Смотрите файл Ribbon.mb.
И ещё
Пример выше показывает основную идею работы с лентой из MapBasic или любого языка .NET.
Но это только самый простой пример.
Ленточный интерфейс в MapInfo Pro это больше, чем просто добавление кнопок на ленту.
Для начала вы можете сгруппировать кнопки особым образом, так как интерфейс поддерживает такие элементы, как разворачивающиеся кнопки (SplitButtons) и галереи (Galleries). Кнопка SplitButton - это кнопка, которая может содержать другие кнопки и даже галереи кнопок. Новая кнопка "Открыть" хороший пример этого.
Галерея также содержит больше, чем одну команду, и хорошо подходит для схожих элементов. Галерея Окна на вкладке Главная пример этого.
Вы можете добавить ваши команды и в другие места, такие как контекстное меню приложения, которое появляется в окне инструменты (Tools window) и на мини панель инструментов, которую вы видите, когда нажимаете правую кнопку в окне карты.
Вы также можете создать пользовательский элемент управления .NET и поместить его на ленту, можете добавить пользовательский элемент управления к менеджеру стыковки (docking manager) MapInfo Pro, если вы хотите добавить расширенный набор элементов управления к новому окну.
Помощь в миграции MapBasic приложений
Обновление вашего MapBasic приложения для работы в 64-битной MapInfo Pro может потребоваться, если приложение имеет компоненты пользовательского интерфейса и/или применимы любые из ранее обсуждаемых ограничений.
Мы можем оценить ваше MapBasic приложение и определить затраты, необходимые для модификации приложения под 64-битную версию MapInfo Pro. Более того, мы можем предложить широкий спектр услуг по миграции приложений MapBasic, включая:
- Разработка/перенос приложений под ключ.
- Совместная разработка/миграция приложений.
- Сопровождение и обучение.
Ваша возможность максимально полно использовать потенциал MapBasic для 64-битной MapInfo Pro будет расти с опытом. Если у вас есть сложная задача миграции приложения и жёсткие временные рамки, или вы предпочитаете решения под ключ, наши опытные консультанты могут помочь быстро обновить ваше приложение.
Итоги
Новый ленточный интерфейс 64-битной MapInfo Pro и MapBasic 12.5.1 представляет много вариантов для интеграции ваших приложений в пользовательский интерфейс.
Вместе с новыми возможностями пришло некоторое усложнение работы с интерфейсом, особенно по сравнению с интерфейсом, основанном на классическом меню.
Предлагаю вам ознакомиться с примерами программ, которые приходят с новой версией MapBasic 12.5.1, это даст вам различные идеи по работе с лентой.
В следующей статье мы рассмотрим, как упростить работу, используя библиотеку MapBasic, которая сводит работу с лентой к использованияю набора процедур и функций MapBasic.
Автор Peter Horsbøll Møller, MapInfo, GIS & Location Intelligence Specialist