Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Подскажите по ActiveX (число прочтений - 2444 )
Анатолий
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 18. Сентября 2008
Подскажите по ActiveX
18. Сентября 2008 :: 20:10
Печать  
Доброго времени суток. Суть в следующем:
Разбираюсь с ActiveX контролом MapWinGis.ocx (это оупенсорсная ГИС).
Элемент управления, отвечающий за отрисовку карты создается (MapWinGis.Map.1). В него надо добавлять шейпфайлы - объекты другого класса. Работа с этими объектами и не получается.
В VB это выглядит так:
Код
Выбрать все
        Dim hnd As Long
        Dim success As Boolean
        Dim sf As Shapefile 'Создаем переменную-шейпфайл
        'Открываем шейпфайл с диска
        success = sf.Open("C:\CITIES.SHP", Me)
        'Добавляем шейпфайл на карту, сохраняем хэндл на слой
        hnd = Map1.AddLayer(sf, True) 


В 1С пробую:
Код
Выбрать все
sf = СоздатьОбъект("MapWinGIS.Shapefile.1");
sf.Open("C:\CITIES.SHP");
 


Ругается, что не обнаружено поле агрегатного объекта (Open)
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подскажите по ActiveX
Ответ #1 - 19. Сентября 2008 :: 03:22
Печать  
Элемент управления, отвечающий за отрисовку карты создается (MapWinGis.Map.1).
И написано
sf = СоздатьОбъект("MapWinGIS.Shapefile.1");
sf.Open("C:\CITIES.SHP");

С именем объекта в коде, случайно, не ошибся - MapWinGis.Map ?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Анатолий
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 18. Сентября 2008
Re: Подскажите по ActiveX
Ответ #2 - 19. Сентября 2008 :: 05:55
Печать  
По-моему, нет. Там разные классы, каждый за свое в ответе)) (отображение карты, файлы данных, сетка координат и т.д.).
Классу Map принадлежит метод AddLayer(), с помощью которого добавляется слой данных на карту.
Классу MapWinGIS.Shapefile принадлежит метод Open(), с помощью которого можно открыть внешний файл с данными. Т.е. я сначала создаю элемент управления:
Код
Выбрать все
		Эл = СоздатьОбъект("АктивИкс");
		Эл.УстановитьАтрибут(Форма, "АктХ");
		Эл.СоздатьЭУ("MapWinGIS.Map.1"); 


, а потом пытаюсь создать объект класса Shapefile, открыть им данные с диска, которые уже буду добавлять на карту. Но, видимо, неправильно с ним обращаюсь)
  
Наверх
 
IP записан
 
Kolhoznik
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 32
Зарегистрирован: 11. Февраля 2008
Re: Подскажите по ActiveX
Ответ #3 - 19. Сентября 2008 :: 07:00
Печать  
В свое время http://www.1cpp.ru/forum/YaBB.pl?num=1206047336
решил эту проблему другим путем - написал ВК-прокладку.
  
Наверх
 
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подскажите по ActiveX
Ответ #4 - 19. Сентября 2008 :: 08:46
Печать  
Попробуй вот так:
Код
Выбрать все
Эл = СоздатьОбъект("АктивИкс");
Эл.УстановитьАтрибут(Форма, "АктХ");
Эл.СоздатьЭУ("MapWinGIS.Map.1");

sf=СоздатьОбъект("MapWinGIS.ShapeFile");
scr=СоздатьОбъект("MSScriptControl.ScriptControl");
scr.Language="vbscript";
scr.AddObject("sf1",sf);
scr.AddObject("map1",Эл.Объект);
Если scr.Eval("sf1.Open("""+ИмяФайла+""")")=-1 Тогда
    scr.Eval("map1.AddLayer(sf1,True)");
КонецЕсли;
 


С деревом аналогичный трюк проходил
  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
Анатолий
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 18. Сентября 2008
Re: Подскажите по ActiveX
Ответ #5 - 20. Сентября 2008 :: 16:31
Печать  
Kolhoznik писал(а) 19. Сентября 2008 :: 07:00:
В свое время http://www.1cpp.ru/forum/YaBB.pl?num=1206047336
решил эту проблему другим путем - написал ВК-прокладку.

Если не жалко, не поделитесь наработками?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать