Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
napTu3aH Гость
|
Добавлено: Пн Апр 10, 2006 11:21 am Заголовок сообщения: Интегрированная картография |
|
|
При интегрированной картографии (Delphi) выполняю оператор изменения центра карты :
Mi.Do('Set Map Center (..,..)');
Карта довольно большая и её обновление происходит несколько секунд.
Как отследить время завершения этого оператора?
Т.е. нужно чтобы программа ничего не делала пока этого обновления не произошло. |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Пн Апр 10, 2006 11:22 am Заголовок сообщения: |
|
|
Здесь возможен один хитрый workaround (другого пути я к сожалению пока не нашел). Пишется mb-программа, там реализуется обработчик RemoteQueryHandler. Далее в своей проге вызываете не MI.Do(), а MB.Eval() - где MB - наша mb-программа. MB.Eval() - это есть вызов RemoteQueryHandler в ней. Так вот, в Delphi не вернется управление пока не выполниться до конца вызов RemoteQueryHandler - ну а там собственно вы и вызываете Set Map Center (..,..) и прочие необходимые вам конструкции.
Этот хак нигде не описан, исследовал я его сам и вовсю используется в Инструментарии. |
|
Вернуться к началу |
|
|
Sunzh Гость
|
Добавлено: Пн Апр 10, 2006 2:37 pm Заголовок сообщения: |
|
|
Еще вопрос по интегрированной картографии.
Как известно ПК MapInfo предлагает концепцию внедрения возможностей MapInfo в другие приложения под названием Интегрированная Картография. Есть там в доке у объекта Application интересный метод DataObject(WindowId)позволяющий якобы получать доступ к метафайлу окна по ID, и довольно расплывчатое описание его использования. Библиотека типов MapInfo указанные интерфейсы IDataObject и др. не описывает, если кто-нибудь сталкивался, просветите пожалуйста как заполучить этот метафайл |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Пн Апр 10, 2006 2:37 pm Заголовок сообщения: |
|
|
В их библиотеке типов есть еще интерфейс IMIMapGen, у меня такое подозрение что это как раз то, что возвращает DataObject(WindowId). Попробуй, может получиться. О результатах доложить в студию! |
|
Вернуться к началу |
|
|
Sunzh Гость
|
Добавлено: Вт Апр 11, 2006 2:29 pm Заголовок сообщения: |
|
|
А вот такой вопрос:
При объявлении предопределенных процедур SetStatusText и др. в COM объекте уведомления (callbackobject) в окне редактора библиотеки типов Delphi указываю возвращаемый тип как SCODE, а она мне говорит, что тип должен быть HResult, процедуры конечно работают и так, но хотелось бы привести все в наилучший вид, если кто знает заранее спасибо. |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Вт Апр 11, 2006 2:30 pm Заголовок сообщения: |
|
|
Делайте в Delphi не COM-объект, а Automation Object. |
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Чт Фев 01, 2007 3:05 pm Заголовок сообщения: |
|
|
Да, как-то пытался получить данные через DataObject(), но ничего вразумительного не происходило. Удавалось получить картинку требуемого окна, но она всегда была какого-то маленького размера. Про IMIMapGen тоже видел, но руки не дошли. Единственное что нашел в доке, так это требование инициализации этого интерфейса (возможно не точно выразился) путем присваивания свойста "Рабочий набор" (в рабочем окне должно быть одно единственное окно карты!!!!) В своей работе использую MI.Do, MI.Eval и т.п. Пока не совсем понял необходимость IMIMapGen (может он остался для обратной совместимости). |
|
Вернуться к началу |
|
|
DEMON_UN
Зарегистрирован: 29.10.2008 Сообщения: 1
|
Добавлено: Ср Окт 29, 2008 9:17 pm Заголовок сообщения: |
|
|
Подниму тему :)
Можно ли поподробнее узнать как Вы использовали IDataObject? Непосредственно с COM объектом проблем нет, когда приходится выполнять "стандартные" действия, но вот (как я понимаю это единственная возможность заполучить граф. объект, исключая экспорт) при попытке получить ссылку на интерфейс получается ...No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)). |
|
Вернуться к началу |
|
|
|