![]() |
|
|
![]()
|
|
| Лена |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Есть компонент для картографии MapX. В примерах к нему есть код создающий специальный слой – карту, на которой можно затем рисовать. Код из стандартной справки на VB:
dim lyrInsertion as MapXlib.Layer set lyrInsertion = Map1.Layers("USA") lyrInsertion.Editable = True Set Map1.Layers.InsertionLayer = lyrInsertion После этого кода можно рисовать на слой – карте USA. Пишу код на Builder:
однако это не работает: свойство InsertionLayer не устанавливается. Пробовала так:
Тоже возвращает NULL. Попытка обернуть в OLE:
Вызывает на строке исключение (рис в архиве) Попытка получить доступ через IDispatch.Invoke (так правильно?):
Юнит компилируется, а при общей компиляции ошибка: [Linker Error] Unresolved external 'Mapxlib_tlb::CLSID_Layers' referenced from C:\DOCUMENTS AND SETTINGS\LENA\DESKTOP\AREA2\UMAP.OBJ Может кто подскажет как с этим бороться? Прилагаю файл TLB от MapX. Посмотрите, кто знает, это ошибка компонента в среде Builder или существует специфичный способ задания InsertionLayer в Builder? сайт компонента: http://extranet.mapinfo.com/products/Overv...uctcategoryid=1 Это сообщение отредактировал(а) Лена - 16.8.2006, 15:09 Присоединённый файл ( Кол-во скачиваний: 10 )
ex.zip 86,81 Kb |
||||||||
|
|||||||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
||||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
Думаю нужно просто Variant
Вот рабочий код
Это сообщение отредактировал(а) kefir01 - 25.6.2008, 16:17 |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
При любом коде InsertionLayer не работает в Builder. Чтобы в этом убедиться можно после любого кода поробывать получить имя InsertionLayer слоя:
wchar_t * name = Map1->Layers->InsertionLayer->_Name; //всегда исключение |
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
И действительно, однако код что я привел создает слой и позволяет менять его свойства.
На самом деле у меня самого возникла проблема с созданием объектов на слое, но думаю проблема тут не в InsertionLayer... |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
AnimationLayer тоже не желает работать в Builder :(
http://forum.sources.ru/index.php?showtopi...=animationlayer AnimationLayer и InsertionLayer не удалось победить в C++ Builder. Остальное вроде работает.
Что имеется в виду? P.S. Если возникнет задача установить MapX на С++ Builder 2007, то тут инструкция: http://qc.codegear.com/wc/qcmain.aspx?d=48143 |
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
Проблемы хотя бы с созданием точек
Пробую такой код:
Результат - EAccessViolation Это сообщение отредактировал(а) kefir01 - 3.7.2008, 14:47 |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
А если так:
Это сообщение отредактировал(а) Лена - 3.7.2008, 16:48 |
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
Лена, огромное тебе спасибо!
Так как в примере не получилось (0 эффекта при нажатии), зато получилось вот так.
Это сообщение отредактировал(а) kefir01 - 3.7.2008, 21:40 |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Хорошо, что все получилось. С реально работающим кодом MapX в С++ Builder трудно разобраться. МapInfo официально не поддреживает MapX в C++ Builder, поэтому трудно найти нормальные примеры. Но, хорошо что китайцы такие умные программисты.
Некоторые фрагменты кода для MapX, в свое время нашла на китайских сайтах. У китайских товарищей совсем нет проблем с MapX в C++ Builder А вот о InsertionLayer и AnimationLayer инфо не нашла... Это сообщение отредактировал(а) Лена - 4.7.2008, 09:53 |
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
А можешь тогда еще подкинуть код на вставку слоев из файла? Буду очень признателен.
А про поддержку BCB я в курсе. Китайцы трудолюбивые програмисты. Я на 3 день парок на форумы полез, а они видать сидят пробуют все пока не найдут решение =) Этот код отказывается работать.
Это сообщение отредактировал(а) kefir01 - 4.7.2008, 11:20 |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Самое простое это создать в геосет менеджере геосет из нужных слоев и затем грузить его:
Map1->GeoSet = WideString("C:\\Program Files\\MAP\\имя_геосета.gst"); //Map1->Title->set_Visible(0); Если грузить отдельный слой, то примерно как-то так:
|
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
Ок. Буду пробовать.
|
|||
|
||||
| kefir01 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
Нет, этот код не работает. Пытаюсь найти решение. Судя по документации слои добавляются через создание LayerInfo типа miLayerInfoTypeTab. Однако загвоздка заключается в том, что:
И мой вариант:
По идее в точности повторяет пример из руководства, за исключением того что там создается объект MapXMobile.LayerInfo.5 а у меня MapX.LayerInfo.5 подозреваю что ошибка может быть в этом. |
||||
|
|||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
У меня этот код работает. В Table храняться пути к слоям, значаения min, max, ZoomLayer, Visible...
Это сообщение отредактировал(а) Лена - 8.7.2008, 09:11 |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |