OCX

Вопросы, не попадающие в другие разделы.

OCX

Сообщение Little_Cat » Вт мар 22, 2011 7:45 am

Доброго дня, коллеги. Кто сталкивался с такой траблой.
Делаю как тут написано в КБ вондервари.
* Timing Issue Initializing Controls

There is a timing problem between the initialization of a tag and the creation of an ActiveX control. Due to this timing problem, it is impossible to guarantee that the initial value of the tagname will be the value of the associated property in the ActiveX control. To address this issue, Startup and Shutdown events have been added to all controls in the 7.1 release.

The solution is to create an association between the Startup event and an InTouch script. In this script, implement the logic that assigns the tagname's value to the property of the control.

For example:

#ThisControl.Property = SomeTag;

Once the event fires, the script will run and the property of the control and the tag value will be in sync. After doing this, the normal notifications occur between the property and the tag.

но сама привязка тэгов не происходит. Точнее, как-то странно происходит. Я могу прочитать значение 1 раз из контроллера и все. Записать или повторно прочитать значение уже не получается. При привязке из Виндов Мэйкера все работает на ура, кроме того, что сбрасываются тэги в 0 при открытии окна с контролом. А скрипт хамит. Тип окна - оверлей, InTouch 10 СП2.
Little_Cat
 
Сообщения: 78
Зарегистрирован: Пт апр 18, 2008 5:12 pm

Re: OCX

Сообщение Klinkmann_Msk » Вт мар 22, 2011 8:07 am

Little_Cat писал(а):Доброго дня, коллеги. Кто сталкивался с такой траблой.
Делаю как тут написано в КБ вондервари.
* Timing Issue Initializing Controls

There is a timing problem between the initialization of a tag and the creation of an ActiveX control. Due to this timing problem, it is impossible to guarantee that the initial value of the tagname will be the value of the associated property in the ActiveX control. To address this issue, Startup and Shutdown events have been added to all controls in the 7.1 release.

The solution is to create an association between the Startup event and an InTouch script. In this script, implement the logic that assigns the tagname's value to the property of the control.

For example:

#ThisControl.Property = SomeTag;

Once the event fires, the script will run and the property of the control and the tag value will be in sync. After doing this, the normal notifications occur between the property and the tag.

но сама привязка тэгов не происходит. Точнее, как-то странно происходит. Я могу прочитать значение 1 раз из контроллера и все. Записать или повторно прочитать значение уже не получается. При привязке из Виндов Мэйкера все работает на ура, кроме того, что сбрасываются тэги в 0 при открытии окна с контролом. А скрипт хамит. Тип окна - оверлей, InTouch 10 СП2.

Приведите логи хамства скрипта и SMC-консоли.
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Little_Cat » Вт мар 22, 2011 8:11 am

так в том то и дело, что логи чистые. Но привязки нет. Не могу понять почему он перестает работать если привязывать скриптом поля.
Little_Cat
 
Сообщения: 78
Зарегистрирован: Пт апр 18, 2008 5:12 pm

Сообщение Klinkmann_Msk » Вт мар 22, 2011 8:33 am

Little_Cat писал(а):так в том то и дело, что логи чистые. Но привязки нет. Не могу понять почему он перестает работать если привязывать скриптом поля.

Скорее всего, скрипт выполняется по StartUp окна?
Попробуйте на окне нарисовать кнопку и перенести скрипт на неё.
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Little_Cat » Вт мар 22, 2011 8:46 am

Скрипт выполняется по StartUp самого контрола. И ладно - не работало бы. Я у себя имею кнопку- читать - нажимаю, читает. Изменил значение в контроллере- нажимаю читать - не читает. И все. Приехали. Такой дряни нет если привязывать напрямую тэги. В свойствах самого контрола. Сейчас чуть позже скринов кину или кино, чтобы понятнее было.
Little_Cat
 
Сообщения: 78
Зарегистрирован: Пт апр 18, 2008 5:12 pm

Сообщение Klinkmann_Msk » Вт мар 22, 2011 8:51 am

Little_Cat писал(а):Скрипт выполняется по StartUp самого контрола. И ладно - не работало бы. Я у себя имею кнопку- читать - нажимаю, читает. Изменил значение в контроллере- нажимаю читать - не читает. И все. Приехали. Такой дряни нет если привязывать напрямую тэги. В свойствах самого контрола. Сейчас чуть позже скринов кину или кино, чтобы понятнее было.

Скорее всего, при Startup-е самого контрола сам контрол не успевает грузануться в память.
Кнопку попробуйте доработать, в начале кнопочного скрипта ещё раз переприсвоить теги св-вам контрола.
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Little_Cat » Вт мар 22, 2011 11:30 am

Скрипт отрабатывает. Это видно по логу.
Little_Cat
 
Сообщения: 78
Зарегистрирован: Пт апр 18, 2008 5:12 pm

Сообщение Klinkmann_Msk » Вт мар 22, 2011 12:01 pm

Little_Cat писал(а):А скрипт хамит.

Может всё-таки раскроете тайну? Что говорит скрипт?
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Little_Cat » Вт мар 22, 2011 12:27 pm

Ну мой скрипт выглядит вот так.

#Control1.Prop = TESt;
LogMessage("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");

и соответственно я вижу АААААААААААААААААААААААААА
каздый раз когда открываю окно с контролом.
Little_Cat
 
Сообщения: 78
Зарегистрирован: Пт апр 18, 2008 5:12 pm

Сообщение Klinkmann_Msk » Вт мар 22, 2011 1:03 pm

Little_Cat писал(а):Ну мой скрипт выглядит вот так.

#Control1.Prop = TESt;
LogMessage("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");

и соответственно я вижу АААААААААААААААААААААААААА
каздый раз когда открываю окно с контролом.

Контрол самописный?
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Little_Cat » Вт мар 22, 2011 1:19 pm

Да.
Little_Cat
 
Сообщения: 78
Зарегистрирован: Пт апр 18, 2008 5:12 pm

Сообщение Klinkmann_Msk » Вт мар 22, 2011 2:00 pm

Little_Cat писал(а):Да.

При закрытии окна ActiveX удаляется из памятиб рвётся подключение. Попробуйте поместить его на главную форму (там, где поле ввода и кнопка) и "играть" Visibility контрола.
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Little_Cat » Вт мар 22, 2011 2:04 pm

Да, но как видно я не закрываю окно а связь рвется. И к тому-же по тому как скрипт работает видно что он отрабатывает каждый раз при открытии. На главном окне не подходит по ряду причин. У меня проект многооконный.
Может кто подскажет, как сделаны например индастриал гаджеты?? Они не обнуляют привязанные тэги на себя при открытии.
Little_Cat
 
Сообщения: 78
Зарегистрирован: Пт апр 18, 2008 5:12 pm

Сообщение Klinkmann_Msk » Ср мар 23, 2011 8:01 am

Little_Cat писал(а):Да, но как видно я не закрываю окно а связь рвется. И к тому-же по тому как скрипт работает видно что он отрабатывает каждый раз при открытии. На главном окне не подходит по ряду причин. У меня проект многооконный.
Может кто подскажет, как сделаны например индастриал гаджеты?? Они не обнуляют привязанные тэги на себя при открытии.

Если скрипт отрабатывает без логов ошибок, то, на мой взгляд, надо грешить на сам OCX.
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Little_Cat » Ср мар 23, 2011 8:32 am

Сам ОСХ не работал бы вообще, а не так как работает. С привязкой из мэйкера все классно, с привязкой из скрипта срабатывает только раз, потом - труба. Да и я попробовал на компоненте, который писал другой человек - результат тот-же. У нас фины поставляли визуалки на Интаче, так там, по неведомой для меня причине( до сих пор) все сделано на ДДЕ взаимодействии с Интачем. Теперь похоже понятно почему так.
Little_Cat
 
Сообщения: 78
Зарегистрирован: Пт апр 18, 2008 5:12 pm

Сообщение Klinkmann_Msk » Ср мар 23, 2011 8:40 am

Little_Cat писал(а):Сам ОСХ не работал бы вообще, а не так как работает. С привязкой из мэйкера все классно, с привязкой из скрипта срабатывает только раз, потом - труба. Да и я попробовал на компоненте, который писал другой человек - результат тот-же. У нас фины поставляли визуалки на Интаче, так там, по неведомой для меня причине( до сих пор) все сделано на ДДЕ взаимодействии с Интачем. Теперь похоже понятно почему так.

Ну, вообще то для написания "правильных" OCX существует WW Toolkit. Может там и есть какая-нибудь "фича"...
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Little_Cat » Ср мар 23, 2011 8:41 am

Это для Интача платный пакет?
Гм.
Little_Cat
 
Сообщения: 78
Зарегистрирован: Пт апр 18, 2008 5:12 pm

Сообщение Klinkmann_Msk » Ср мар 23, 2011 9:00 am

Little_Cat писал(а):Это для Интача платный пакет?
Гм.

Не только для InTouch. Toolkit-ы много чего умеют.
Да, платный. Входит в состав Dev Studio Advanced.
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Little_Cat » Ср мар 23, 2011 10:17 am

То есть, чтобы писать компоненты под InTouch мне нужен дополнительно покупать пакет, стоимостью как авианосец? Что-то рано я начал петь начальству о простоте и доступности Интача.
Ну ладно, спасибо вам за ваше время, уважаемый Klinkmann_Msk.
Трабла осталась к сожалению.
Может кто-то откликнется еще кто сталкивался с написанием компонентов для Интача в вижуал басике?
ЗЫ: В ВинЦЦ 6.0 все работает на ура.
Little_Cat
 
Сообщения: 78
Зарегистрирован: Пт апр 18, 2008 5:12 pm

Сообщение Klinkmann_Msk » Ср мар 23, 2011 10:25 am

Little_Cat писал(а):То есть, чтобы писать компоненты под InTouch мне нужен дополнительно покупать пакет, стоимостью как авианосец? Что-то рано я начал петь начальству о простоте и доступности Интача.
Ну ладно, спасибо вам за ваше время, уважаемый Klinkmann_Msk.
Трабла осталась к сожалению.
Может кто-то откликнется еще кто сталкивался с написанием компонентов для Интача в вижуал басике?
ЗЫ: В ВинЦЦ 6.0 все работает на ура.

Всё несколько хитрее...
WW Toolkit - набор мастеров, интегрируемых в Visual Studio. Сам код пишется в Visual Studio.
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am


Вернуться в Другое

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 50