PDA

Просмотр полной версии : Индикация открытого окна



Party3AH
27.05.2024, 14:36
Добрый день!
Как сделать индикацию текущего открытого окна?
Никак не могу найти, каким образом можно вытащить информацию об активном окне.
Хотелось бы иметь такую переменную, и уже её использовать для динамизации свойств кнопок и прочее.

Например, есть панель навигации, в ней 10 окон. Если открыто окно №3, то кнопка окна №3 становится нажатой.

76064

1exan
27.05.2024, 15:14
Добрый день!
Как сделать индикацию текущего открытого окна?
Никак не могу найти, каким образом можно вытащить информацию об активном окне.
Хотелось бы иметь такую переменную, и уже её использовать для динамизации свойств кнопок и прочее.

Например, есть панель навигации, в ней 10 окон. Если открыто окно №3, то кнопка окна №3 становится нажатой.

76064

Возможно это как-то связано с тем, что клиентов может быть несколько - и у каждого из них может быть открыто своё окно в один и тот-же момент времени

Александр Пинэко-Скворцов
28.05.2024, 09:31
Добрый день!
Как сделать индикацию текущего открытого окна?
Никак не могу найти, каким образом можно вытащить информацию об активном окне.
Хотелось бы иметь такую переменную, и уже её использовать для динамизации свойств кнопок и прочее.

Например, есть панель навигации, в ней 10 окон. Если открыто окно №3, то кнопка окна №3 становится нажатой.

76064

Добрый день.

Для организации вкладок на визуализации в разделе Палитра - Панели есть инструмент Панель вкладок.

Party3AH
30.05.2024, 12:54
Отвечаю на вопрос сам себе, может кому пригодится:

- выбрать нужное окно, выбрать вкладку "Легенда" (там же, где и "Палитра");
- в "Легенде" выбираем вкладку "События";
- добавляем новое событие "Открытие окна";
- добавляем в это событие действие "Установить параметр";
- Источник - в начальном значении вбиваем номер окна (переменная почему-то только типа STRING);
- Приёмник - привязываем какой-то параметр (У меня "Номер открытого окна";
- Операция - присвоить;

Далее параметр "Номер открытого окна" присваиваем к фону нужно кнопки.

Всё работает :cool:
76150

Ready
30.05.2024, 17:20
Отвечаю на вопрос сам себе, может кому пригодится:

- выбрать нужное окно, выбрать вкладку "Легенда" (там же, где и "Палитра");
- в "Легенде" выбираем вкладку "События";
- добавляем новое событие "Открытие окна";
- добавляем в это событие действие "Установить параметр";
- Источник - в начальном значении вбиваем номер окна (переменная почему-то только типа STRING);
- Приёмник - привязываем какой-то параметр (У меня "Номер открытого окна";
- Операция - присвоить;

Далее параметр "Номер открытого окна" присваиваем к фону нужно кнопки.

Всё работает :cool:
76150

1. События "Открытие окна / Закрытие окна" доступны с версии скады 1.3, в 1.2 их нет.
2. Данный способ подходит, если в системе один пользователь. Если пользователей более одного, то они будут перекрывать работу друг друга, т.к. параметр "Номер открытого окна" находится в дереве объектов в качестве серверного параметра, т.е. общего для всех. Чтобы этого избежать необходимо добавить этот параметр в параметры окна "Окно выбора окон", тогда для каждого пользователя индикация будет индивидуальной.

МихаилГл
31.05.2024, 03:13
В SCADAх, где нет панелей, я делал так:
Рисовал тёмно-серые прямоугольники, поверх светлые, поверх активную зону для макроса нажатия (кнопки не использовал, так как они чувствительны к привязанному тэгу) и так по количеству окон
Ну и соответственно на нажатие активной зоны светлый прямоугольник под этой зоной скрывался, а под другими показывался, и одновременно активация нужного окна
Это всё объединяется и на каждом окне копипастится

WinCC, FactoryTalk View...

PS Вернее наоборот:
76167

imaex
31.05.2024, 08:52
2. Данный способ подходит, если в системе один пользователь. Если пользователей более одного, то они будут перекрывать работу друг друга, т.к. параметр "Номер открытого окна" находится в дереве объектов в качестве серверного параметра, т.е. общего для всех.

Читаю и не понимаю. Это штатно в MS4D так или какой-то специфический режим? Какое дело одному клиенту до того, что другой делает? А фраза "параметр "Номер открытого окна" находится в дереве объектов в качестве серверного параметра" меня вообще в ступор вводит.

Larrrik
31.05.2024, 11:59
Вопрос в месте исполнения объекта, замазанного на скриншоте. Если он назначен в задачу Экрана - то относящийся к нему "Номер открытого окна" у каждого клиента будет свой. Если в задачу Узла - то он будет общим для всех клиентов.