Добрый день господа разработчики. Пишу на c# gis Toolkit 12.
Мне необходимо открыть карту с моего сервера. Для этого я использую функцию MapGisServer.DoDlgOpenData(). Вопросы: 1. Как записать в переменную значение выбранной мной карты из списка? 2. Как отключить в диалоговом окне кнопку "Добавить"? 3. Как поймать нажатие на кнопку "Открыть"?
Компонент axMapGisServer предназначен для установки связи с ГИС Сервером, выбора пространственных данных для их открытия в связанном с ним компоненте axMapView (или axMapScreen). Диалог, вызываемый методом MapGisServer.DoDlgOpenData(), автоматически откроет (добавит) выбранные данные в компоненте axcMapView. Поэтому "отловить" эти действия можно уже в компоненте axcMapView - например, с помощью событий OnChangeMap или OnAppendSite. Кнопка "Добавить" должна быть и так отключена, когда в связанном с axMapGisServer компоненте axcMapView нет ни одной открытой карты (добавлять не к чему).
Если такая реализация не устраивает, Вы можете самостоятельно вызывать этот диалог, используя MAPAPI:
Код
// Вызвать диалог выбора доступных пользователю данных на ГИС Сервере
// parm - параметры задачи (поле Handle должно содержать
// идентификатор главного окна)
// name - буфер для размещения выбранного алиаса данных
// (выделять не менее MAXPATH)
// size - размер выделенного буфера
// Имя выбранного алиаса карты помещается в name
// При ошибке возвращает ноль
long int WINAPI svOpenDataEx(TASKPARM *parm,char * name,long int size);
Но для корректной работы диалога потребуется реализовать обработку сообщений в окне, передаваемом в параметре parm.Handle. Окну шлются следующие сообщения: MSG_AW_OPENDOCUN = $623; // открыть карту MSG_AW_OPENDOC = $655; // открыть карту MSG_AW_GETCURRENTDOC = $673; // вернуть идентификатор открытых данных MSG_MT_CHANGEDATA = $65D; // изменение данных MSG_AW_OPENATLAS = $0680+373; // открыть атлас
Подробнее можно посмотреть в исходных текстах самого компонента - в модуле mapgsrv.pas.