Программирование в ИнГео


Содержание

Программы
Программные модули
Наборы программных модулей
Доступ к объектам Ингео из программных модулей
Обработка событий
Интеграция с интерфейсом пользователя Ингео
Использование ActiveX-объектов

Программы

Основным элементом программирования в среде ГИС ИнГео является программа - текст на каком-либо языке программирования, содержащий набор инструкций. В ГИС ИнГео используется технология Microsoft Active Scripting, позволяющая использовать язык программирования по усмотрению пользователя. Наиболее распространенными языками программирования, поддерживаемыми данной технологией, являются VBScript и JavaScript, исполняющие подсистемы которых входят в комплект программы Internet Explorer, которая практически стала частью операционной системы Microsoft Windows.

Инструкции, содержащиеся в теле программы принято объединять в специальные именованные группы, называемые процедурами или функциями.

В начало

Программные модули

При реализации сложных задач часто возникает необходимость разбить одну большую программу на несколько более мелких с целю локализации отдельных подзадач в самостоятельных программах. Для этого в ГИС ИнГео предусмотрена возможность формировать программные модули - наборы программ, предназначенных для решения одной задачи.

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

Помимо программ, модуль может содержать различные ресурсы - различные вспомогательные элементы которые, могут использоваться программами во время их выполнения для облегчения программирования некоторых задач. В качестве примера ресурса можно привести ресурс описания меню. Более подробно об этом будет сказано в последующих разделах.

Программный модуль может находится в одном из двух состояний: загружен или активен. При активизации программного модуля выполняются следующие действия:

  1. Загружаются исполняющие подсистемы языков программирования, используемых в программах модуля.
  2. Тексты программ преобразуются (компилируются) в промежуточный псевдокод, более приемлемый для быстрого исполнения, нежели исходный текст.
  3. Скомпилированные программы присоединяются к источникам событий ГИС Ингео (обработка событий более подробно будет рассмотрена далее).

После компиляции каждая программа становится объектом. При этом все определенные в программе процедуры и функции становятся методами объекта, а глобальные переменные - свойствами.

В начало

Наборы программных модулей

Верхней ступенью организации программной среды Ингео являются иерархически организованные наборы программных модулей.

Каждый набор связан с одним из объектов Ингео и загружается при активизации объекта. Наборы модулей могут быть связаны со следующими объектами Ингео:

В начало

Доступ к объектам Ингео из программных модулей

При создании программ естественным образом возникает потребность получать доступ к различным объектам и элементам ГИС Ингео, таким как списки слоев, карт, территорий, пространственные объекты. Такой доступ предоставляется со стороны Ингео в виде иерархически организованной объектной модели посредством глобальной переменной с именем Application. Переменная Application является корневым объектом всей иерархии объектов, доступной из программ. Полная иерархия объектов представлена на диаграмме объектов Ингео.

В начало

Обработка событий

На протяжении всей работы пользователя с ГИС Ингео, в системе происходят различные события (например: был удален объект, изменился набор выделенных объектов, и т.д.). Возникает естественная потребность каким-то образом обрабатывать такие события в программах, добавляя дополнительное поведение для штатных операций ГИС.

В ГИС Ингео предусмотрена возможность программной обработки некоторых событий, периодически возникающих в системе (набор событий предопределен).

Для этого в программах необходимо определять процедуры со специальными зарезервированными именами (такие процедуры принято называть обработчиками событий). При запуске программного модуля система автоматически распознает имена процедур-обработчиков событий и присоединяет эти процедуры к источникам событий. Затем, при возникновении события в системе, автоматически выполняется процедура обработки события.

В начало

Интеграция с интерфейсом пользователя Ингео

ГИС Ингео позволяет программам, созданным пользователем, встраиваться в интерфейс пользователя системы - добавлять "свои" пункты в главное меню программы и кнопки на панелях инструментов.

Подсистема интерфейса пользователя главного окна ГИС Ингео содержит три основных элемента:

  1. Список команд - содержит перечень команд, где каждая команда имеет собственное уникальное имя, процедуру обработки и различную информацию, связанную с командой: заголовок, подсказку и набор состояний.
  2. Главное меню - содержит иерархически организованный перечень всех пунктов главного меню программы. Каждый пункт связан с одной из команд из общего списка команд.
  3. Панели инструментов - перечень панелей инструментов и содержащихся в них кнопок. Каждая кнопка связана с одной из команд из общего списка команд.

Как следует из выше сказанного, пункты меню и кнопки панелей инструментов не связаны напрямую с процедурами обработки. Вместо этого они связываются с командами, которые, в свою очередь, связываются с процедурами обработки. Кроме того, ряд свойств пунктов меню и кнопок панелей инструментов жестко связаны с соответствующими свойствами команд. При изменении таких свойств у команд, автоматически изменяются свойства связанных с командой элементов интерфейса пользователя. Например, при изменении свойства Enabled (доступна) у команды, автоматически изменятся состояния всех пунктов меню и кнопок панелей инструментов, связанных с данной командой.

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

Типичный сценарий встраивания пользовательских команд выглядит следующим образом:

  1. Пользователь создает программный модуль, программу, ресурс со списком команд и ресурс с определением меню.
  2. Пользователь создает процедуру обработки события запуска модуля.
  3. В этой процедуре выполняется добавление команд из указанного ресурса списка команд. Система автоматически установит связи команд с процедурами обработки.
  4. Затем в этой же процедуре выполняется добавление пунктов меню из указанного ресурса меню.
  5. При выполнении пользователем добавленного пункта меню, автоматически вызовется процедура обработки команды, связанной с пунктом меню.

В начало

Использование ActiveX-объектов

При создании сложных программных модулей часто встает вопрос создания сложных экранных форм для взаимодействия программы с пользователем. Но возможности встроенных языков ограничены, и не позволяют организовать взаимодействие с пользователем более сложное нежели простой вывод текстового сообщения или ввод одной строки.

Кроме того, часто возможностей встроенных языков программирования недостаточны для эффективной реализации некоторых сложных алгоритмов.

Как быть в таких ситуациях?

Встроенные языки программирования позволяют создавать экземпляры внешних объектов, реализованных с учетом стандарта ActiveX. Разрабатывать ActiveX-объекты позволяют практически все современные средства разработки, такие как Delphi, C++ Builder, Visual Basic, Visual C++ и т.д.

Типичный сценарий разработки программных модулей с "участием" ActiveX-объектов выглядит следующим образом.

  1. Разрабатывается внешний ActiveX-объект: интерфейс пользователя и интерфейс объекта, который будет доступен из программных модулей Ингео.
  2. Из программы создается экземпляр внешнего ActiveX-объекта. После создания, объекту передаются ссылки на объекты Ингео, необходимые для работы внешнего объекта. Ссылка на объект запоминается в переменной программы.
  3. Из процедур обработки событий или команд происходит вызов нужных методов внешнего объекта, которые и выполняют те виды работ, которые невозможно реализовать средствами встроенных языков программирования Ингео.

В начало