Страница 1 из 1

OCX

СообщениеДобавлено: Вт мар 22, 2011 7:45 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.

Re: OCX

СообщениеДобавлено: Вт мар 22, 2011 8:07 am
Klinkmann_Msk
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-консоли.

СообщениеДобавлено: Вт мар 22, 2011 8:11 am
Little_Cat
так в том то и дело, что логи чистые. Но привязки нет. Не могу понять почему он перестает работать если привязывать скриптом поля.

СообщениеДобавлено: Вт мар 22, 2011 8:33 am
Klinkmann_Msk
Little_Cat писал(а):так в том то и дело, что логи чистые. Но привязки нет. Не могу понять почему он перестает работать если привязывать скриптом поля.

Скорее всего, скрипт выполняется по StartUp окна?
Попробуйте на окне нарисовать кнопку и перенести скрипт на неё.

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

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

Скорее всего, при Startup-е самого контрола сам контрол не успевает грузануться в память.
Кнопку попробуйте доработать, в начале кнопочного скрипта ещё раз переприсвоить теги св-вам контрола.

СообщениеДобавлено: Вт мар 22, 2011 11:30 am
Little_Cat
Скрипт отрабатывает. Это видно по логу.

СообщениеДобавлено: Вт мар 22, 2011 12:01 pm
Klinkmann_Msk
Little_Cat писал(а):А скрипт хамит.

Может всё-таки раскроете тайну? Что говорит скрипт?

СообщениеДобавлено: Вт мар 22, 2011 12:27 pm
Little_Cat
Ну мой скрипт выглядит вот так.

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

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

СообщениеДобавлено: Вт мар 22, 2011 1:03 pm
Klinkmann_Msk
Little_Cat писал(а):Ну мой скрипт выглядит вот так.

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

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

Контрол самописный?

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

СообщениеДобавлено: Вт мар 22, 2011 2:00 pm
Klinkmann_Msk
Little_Cat писал(а):Да.

При закрытии окна ActiveX удаляется из памятиб рвётся подключение. Попробуйте поместить его на главную форму (там, где поле ввода и кнопка) и "играть" Visibility контрола.

СообщениеДобавлено: Вт мар 22, 2011 2:04 pm
Little_Cat
Да, но как видно я не закрываю окно а связь рвется. И к тому-же по тому как скрипт работает видно что он отрабатывает каждый раз при открытии. На главном окне не подходит по ряду причин. У меня проект многооконный.
Может кто подскажет, как сделаны например индастриал гаджеты?? Они не обнуляют привязанные тэги на себя при открытии.

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

Если скрипт отрабатывает без логов ошибок, то, на мой взгляд, надо грешить на сам OCX.

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

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

Ну, вообще то для написания "правильных" OCX существует WW Toolkit. Может там и есть какая-нибудь "фича"...

СообщениеДобавлено: Ср мар 23, 2011 8:41 am
Little_Cat
Это для Интача платный пакет?
Гм.

СообщениеДобавлено: Ср мар 23, 2011 9:00 am
Klinkmann_Msk
Little_Cat писал(а):Это для Интача платный пакет?
Гм.

Не только для InTouch. Toolkit-ы много чего умеют.
Да, платный. Входит в состав Dev Studio Advanced.

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

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

Всё несколько хитрее...
WW Toolkit - набор мастеров, интегрируемых в Visual Studio. Сам код пишется в Visual Studio.