УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

Динамический виджет


Автор Сообщение
Сообщение создано: 24. 08. 2015 [19:06]
chevents
Сергей К
Создатель темы
Зарегистрирован(а) с: 12.01.2015
Сообщения: 6
Создаю динамический текстовый виджет и его связь с помощью this.wdgAdd(wdgNm, ...) и this[wdgNm].linkSet("arg0val", "prm:..."), но не могу сделать активным признак Input Link аттрибута arg0val. Подскажите, как это выполнить?

[Сообщение редактировалось 2 раз(а), в последний раз 24.08.2015 в 19:08.]
Сообщение создано: 25. 08. 2015 [08:08]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"chevents" wrote:

Создаю динамический текстовый виджет и его связь с помощью this.wdgAdd(wdgNm, ...) и this[wdgNm].linkSet("arg0val", "prm:..."), но не могу сделать активным признак Input Link аттрибута arg0val. Подскажите, как это выполнить?

Указанные механизмы предусматривались только для добавления и установки связей готовых виджетов, а не ещё и разработку их там.
Следовательно готовьте библиотеку с нужными элементами и конфигурацией, а затем используйте их в сеансе.

Хотя потенциально в сеансе, через интерфейс управления, можно сделать и разработку, если доступ к редактированию атрибутов виджета открыть.

Learn, learn and learn better than work, work and work.
Сообщение создано: 09. 09. 2015 [06:46]
chevents
Сергей К
Создатель темы
Зарегистрирован(а) с: 12.01.2015
Сообщения: 6
А пример кода можно привести?
Сообщение создано: 09. 09. 2015 [21:46]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"chevents" wrote:

А пример кода можно привести?

http://wiki.oscada.org/Doc/VCAEngine#h806-1
http://oscada.org/ru/forum/posts/proekt/dinamicheskoe_dobavlenie_stranicy_v_logicheskii_kontei/

Learn, learn and learn better than work, work and work.
Сообщение создано: 17. 09. 2015 [09:00]
chevents
Сергей К
Создатель темы
Зарегистрирован(а) с: 12.01.2015
Сообщения: 6
Спасибо за ответы.
В моем проекте около 800 виджетов для описаний различных параметров и их значений.
При таком количестве виджетов проект явно тормозит - замедляется реакция на события клавиатуры и мыши.
Что-то возможно сделать, чтобы не было торможений?
Сообщение создано: 17. 09. 2015 [10:20]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"chevents" wrote:

В моем проекте около 800 виджетов для описаний различных параметров и их значений.
При таком количестве виджетов проект явно тормозит - замедляется реакция на события клавиатуры и мыши.
Что-то возможно сделать, чтобы не было торможений?

Не вызывать ресурсоёмких операций в каждом цикле интерфейса визуализации, очевидно.
У меня, например, последний проект с суммарным количеством активных виджетов > 1000 (на 7 исполняемых в фоне объектах сигнализации) не тормозит на периодичности проекта 100мс и в среднем использует 35мс, на "зелёных" машинах (50%, 1.6ГГц).

http://wiki.oscada.org/Doc/QuickStart#h988-28

Learn, learn and learn better than work, work and work.
Сообщение создано: 17. 09. 2015 [14:33]
chevents
Сергей К
Создатель темы
Зарегистрирован(а) с: 12.01.2015
Сообщения: 6
Виджеты создаю при первом проходе.
Динамически меняю только значения параметров.
Одни и те же массивы, правда, создаются всякий раз, как я понимаю, они удаляются автоматически.
Ручного способа их удаления я просто не знаю.
Сообщение создано: 17. 09. 2015 [15:01]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"chevents" wrote:

Виджеты создаю при первом проходе.
Динамически меняю только значения параметров.
Одни и те же массивы, правда, создаются всякий раз, как я понимаю, они удаляются автоматически.

Ну и зачем создавать массивы каждый раз, если они нужны всегда?
В рабочей версии не удаляются, поскольку переменные хранятся в контексте вычисления, который в свою очередь не удаляется на каждой итерации.

"chevents" wrote:

Ручного способа их удаления я просто не знаю.

Зачем?


Learn, learn and learn better than work, work and work.
Сообщение создано: 17. 09. 2015 [18:36]
chevents
Сергей К
Создатель темы
Зарегистрирован(а) с: 12.01.2015
Сообщения: 6
Чтобы удалять динамически выделяемую память, создаваемую как new Array.
С тормозами проблема остается при коде, сведенном к минимуму. Не пойму, как ее решить.
Сообщение создано: 17. 09. 2015 [19:11]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"chevents" wrote:

Чтобы удалять динамически выделяемую память, создаваемую как new Array.

При циклическом программировании ноль смысла удалять то, что создастся в следующем, только ресурсы процессора ест, и приводит к тормозам.
А вообще, достаточно скаляр присвоить переменной с массивом и любым объектом вообще.

"chevents" wrote:

С тормозами проблема остается при коде, сведенном к минимуму. Не пойму, как ее решить.

Изучайте нагрузку: http://wiki.oscada.org/Doc/OpisanieProgrammy/part4/files?get=sys_tasks.png
Свойства сеанса, который тормозит: http://wiki.oscada.org/Doc/VCAEngine/files?get=VCAeng_pg_ses.png
Протокол ошибок по сеансу: http://wiki.oscada.org/Doc/Vision/files?get=vis_wlbpg_diag.png

P.S. В последних ревизиях должно быть более оптимально.


Learn, learn and learn better than work, work and work.



0228