Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Проблемы при использовании ActiveX (число прочтений - 3792 )
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Проблемы при использовании ActiveX
27. Февраля 2009 :: 07:01
Печать  
Стал ковырять одну активиксину... Все вроде получается, но в один из ключевых методов нужно передвать Nothing (в примере на VB так и написано). Как это сделать на 1С?
« Последняя редакция: 27. Февраля 2009 :: 09:22 - classic »  
Наверх
 
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ActiveX. Параметр Nothing - как передать?
Ответ #1 - 27. Февраля 2009 :: 07:07
Печать  
В примере на C++ там же используется NULL. Как передать NULL из 1С? Если не указывать ничего - рукается на "Плохой тип переменной"
  
Наверх
 
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ActiveX. Параметр Nothing - как передать?
Ответ #2 - 27. Февраля 2009 :: 07:46
Печать  
Дальнейшие исследования показали, что дело не в параметрах... Судя по всему, 1С не может сохранить в своей переменной результат выполнения функций компонента...
Строка
клсТекст = Док.ActiveLayer.CreateClass(1010,);
Выдает ошибку - типы не совпадают.
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ActiveX. Параметр Nothing - как передать?
Ответ #3 - 27. Февраля 2009 :: 08:45
Печать  
classic писал(а) 27. Февраля 2009 :: 07:01:
Стал ковырять одну активиксину... Все вроде получается, но в один из ключевых методов нужно передвать Nothing (в примере на VB так и написано). Как это сделать на 1С?

ПолучитьПустоеЗначение("") ну или передать неинициализированную (только объявленную) локальную переменную или переменную модуля
  
Наверх
ICQ  
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ActiveX. Параметр Nothing - как передать?
Ответ #4 - 27. Февраля 2009 :: 09:11
Печать  
Стал копать дальше - похоже дело не в Nothing. Я пробовал тоже самое через "MSScriptControl.ScriptControl"... В общем, расскажу поподробнее.

Есть такая штука - "ProGrapherActiveX.ProGrapherControl". Векторная графика, все дела, взаимодействие с пользователем, да еще и бесплатная.

Есть у нее пример на VB. Там есть код:
Код
Выбрать все
    'Init Doc & Wnd
    Set Doc = ctrlProGrapher.Document
    
    'Create Layer "Test"
    Doc.CreateLayer(, "Test").Active = True

    'Create Rectangle Class
    Set rccl = Doc.ActiveLayer.CreateClass(ciRectangle, Nothing)
    
    'Create Rectangles
    Set rc1 = rccl.Create(0.04, 0.05, 0.025, 0.025)
    Set rc2 = rccl.Create(0.075, 0.05, 0.035, 0.015)
 


По идее, должно получиться 2 квадрата.
Вижу 2 пути решения - перевести это все на 1С (тут я натыкаюсь на ошибку "Типы не совпадают")
Или пытаться сделать это все на MSScriptControl.ScriptControl.
Получается так:
Код
Выбрать все
	ТекстСкрипта = "
	|Function Main()
	|
	|Dim rccl as ProGrapherFoundation.RectangleClass
	|Dim rc1, rc2 As ProGrapherFoundation.Rectangle
	|
	|  set rccl = Doc.ActiveLayer.CreateClass(1010, Null)
	|  rc1 = rccl.Create(0.04, 0.05, 0.025, 0.025)
	|  rc2 = rccl.Create(0.075, 0.05, 0.035, 0.015)
	| result = 1
	|End Function
	|";

	VBS=СоздатьОбъект("MSScriptControl.ScriptControl");
	VBS.Language="VBscript";
	VBS.AddObject("Doc", Объект.Document, "True");
	VBS.AddCode(ТекстСкрипта);
	Сообщить(VBS.Run("Main"));
 


"Ошибка компиляции Microsoft VBScript: Предполагается наличие окончания инструкции"

  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ActiveX. Параметр Nothing - как передать?
Ответ #5 - 27. Февраля 2009 :: 10:30
Печать  
classic писал(а) 27. Февраля 2009 :: 09:11:
     |Dim rccl as ProGrapherFoundation.RectangleClass
     |Dim rc1, rc2 As ProGrapherFoundation.Rectangle

В коде для СкриптКонтрола нельзя юзать "as".
Напиши обычный Dim без него или вообще Dim убери
  

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


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ActiveX. Параметр Nothing - как передать?
Ответ #6 - 27. Февраля 2009 :: 11:27
Печать  
artbear писал(а) 27. Февраля 2009 :: 10:30:
В коде для СкриптКонтрола нельзя юзать "as".
Напиши обычный Dim без него или вообще Dim убери

Весь день инет перерываю... Ну хоть где-нибудь бы это написано было...
Правда, все равно не работает... CreateClass возвращает Nothing.
Странная ситуация с этим vbs. Вроде и документации полный интернет, и не найдешь ничего.
  
Наверх
 
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Проблемы при использовании ActiveX
Ответ #7 - 27. Февраля 2009 :: 11:37
Печать  
Ааа, заработало!!!
С ума сойти. Я пытался использовать в CreateClass перечисления, как в примере. А оказывается, TypeName(ciRectangle) - Empty. Как только заменил перечисление на числовое значение (1040) - так все заработало.
Со вчерашнего вечера ковыряю. Так долго квадратик я еще никогда не рисовал.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблемы при использовании ActiveX
Ответ #8 - 27. Февраля 2009 :: 12:29
Печать  
classic писал(а) 27. Февраля 2009 :: 11:37:
Ааа, заработало!!!
С ума сойти. Я пытался использовать в CreateClass перечисления, как в примере. А оказывается, TypeName(ciRectangle) - Empty. Как только заменил перечисление на числовое значение (1040) - так все заработало.
Со вчерашнего вечера ковыряю. Так долго квадратик я еще никогда не рисовал.

Так в указанном тобой коде уже стоит число, а не перечисление Улыбка
И ошибка в указанном коде только в юзании "as".

Видимо, ты уже от безысходности начал с кодом чудить Улыбка
  

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


1C++ rocks!

Сообщений: 2
Зарегистрирован: 23. Ноября 2009
Re: Проблемы при использовании ActiveX
Ответ #9 - 23. Ноября 2009 :: 13:00
Печать  
Дарова всем!
я вот тож решил поюхать этот активикс
тока кто подскажет как убрать надпись "Unregistered copy" ?
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Проблемы при использовании ActiveX
Ответ #10 - 23. Ноября 2009 :: 15:13
Печать  
acrus писал(а) 23. Ноября 2009 :: 13:00:
Дарова всем!
я вот тож решил поюхать этот активикс
тока кто подскажет как убрать надпись "Unregistered copy" ?

заплатить денег разработчикам активикса, видимо Подмигивание ну или искать бесплатный аналог
  
Наверх
 
IP записан
 
acrus
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 2
Зарегистрирован: 23. Ноября 2009
Re: Проблемы при использовании ActiveX
Ответ #11 - 23. Ноября 2009 :: 15:19
Печать  
исшоб понять куды платить
ато их сайт давно не работает
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать