Страница 1 из 1
GxDialog в VBA для ArcGIS
Добавлено: 13 фев 2011, 21:41
Алексей Дорофеев
Здравствуйте!
Разбираюсь с языком программирования Visual Basic for Applications для ArcGIS 9.3. Сейчас пытаюсь разобраться с объектом GxDialog. Как я понимаю, это диалоговое окно определённого типа, но вот описания этих типов пока не нашёл.
В общем, у меня вопрос пока небольшой: объясните, пожалйуста, своими словами, как вы понимаете, что такое GxDialog?
Re: GxDialog в VBA для ArcGIS
Добавлено: 13 фев 2011, 22:15
Дмитрий Барышников
Обычное окно открытия файлов (в ArcGIS - слоев /Layer/ ). В ArcMap вызывается иконкой в виде желтого ромбика с черным крестиком.
Вот описание:
http://edndoc.esri.com/arcobjects/9.2/C ... Dialog.htm
Подумайте, стоит ли разбираться с VBA, если его уже в ArcGIS 10 нет. Или вас перспектива не интересует?
Re: GxDialog в VBA для ArcGIS
Добавлено: 13 фев 2011, 22:35
Алексей Дорофеев
Спасибо за описание.
Bishop писал(а):Обычное окно открытия файлов (в ArcGIS - слоев /Layer/ ). В ArcMap вызывается иконкой в виде желтого ромбика с черным крестиком.
Ну меня GxDialog вот зачем интересует: в ArcGIS 9.3 (ArcScene) нужно задать путь к таблице, откуда будут браться данные. А в проекте, с которым я сейчас пытаюсь работать, это реализовано через GxDialog. Но там, насколько я понимаю, можно поставить фильтр GxFilterTables, чтобы в окне предлагались для выбора только таблицы. Но там можно выбрать именно таблицу как она есть, а мне нужно, чтобы данные выбирались из нескольких связанных таблиц. Вот и думаю, можно ли это реализовать через GxDialog или же для этого нужно использовать другой объект?
Bishop писал(а):Подумайте, стоит ли разбираться с VBA, если его уже в ArcGIS 10 нет. Или вас перспектива не интересует?
Сейчас я работаю (а точнее, как я уже написал выше, пытаюсь работать

) с проектом, реализованным в ArcGIS 9.3, причём пока имею дело именно с этой средой. Поэтому разбираться с VBA, очевидно, приходится.
Re: GxDialog в VBA для ArcGIS
Добавлено: 13 фев 2011, 23:16
Дмитрий Барышников
Для вашего варианта - GxDialog может и поможет при таком сценарии: пользователь выбирает любую из связанных таблиц и нажимает "Открыть". Далее диалог закрывается, Вы в своем коде смотрите, - действительно ли они связанные. Если нет - либо диалог ошибки, либо опять открываете GxDialog, иначе процесс открытия продолжается.
Вариант написания собственного фильтра, здесь ИМХО не поможет, ибо этот подход ориентирован на один источник, а у Вас они связанные таблицы.
Если таблицы лежат в БД - то по типовому названию можно фильтровать.
Под ArcGIS Desctop можно программировать под C++, C#, Java.Net, VB.Net, Python (если ничего не забыл).
Re: GxDialog в VBA для ArcGIS
Добавлено: 13 фев 2011, 23:28
Алексей Дорофеев
Bishop писал(а):Если таблицы лежат в БД - то по типовому названию можно фильтровать.
Можно этот момент поподробнее?
Re: GxDialog в VBA для ArcGIS
Добавлено: 14 фев 2011, 08:47
Дмитрий Барышников
Пишите свой фильтр. Интерфейс для этого IGxObjectFilter (
http://resources.esri.com/help/9.3/arcg ... Filter.htm)
Переопределяете метод CanDisplayObject - в нем открываете БД (которая передается в качестве параметра этого метода) и проверяете, есть ли в ней необходимые таблицы. Если есть - возвращаете true и эта база будет отображаться в диалоге (IGxDialog), а если необходимых таблиц нет - то не будет.
Re: GxDialog в VBA для ArcGIS
Добавлено: 16 фев 2011, 11:52
Алексей Дорофеев
А может быть, здесь следует добавить нужные таблицы в слой и сделать, чтобы данные брались из таблиц слоя, а не базы? И если да, то как это можно сделать?
Re: GxDialog в VBA для ArcGIS
Добавлено: 16 фев 2011, 12:43
Дмитрий Барышников
Можно и так. Из программы получить доступ к слоям можно через интерфейс IApplication->IDocument->IMap->Layers