Может мы говорим о разных механизмах, но у меня повторное срабатывание триггера окна закрывает открытое. В прикреплении пробный проект, с которым я "играюсь". Кнопка "Управление_картинкой_1" пока отключена от открывания окон.
Может мы говорим о разных механизмах, но у меня повторное срабатывание триггера окна закрывает открытое. В прикреплении пробный проект, с которым я "играюсь". Кнопка "Управление_картинкой_1" пока отключена от открывания окон.
Да, Вы правы, это действительно так. Мой косяк, не разобравшись поспешил с ответом.
Можете пояснить что требуется?Если всплывающее окно открыто, а триггер сработает снова, то окно закрывается. И, соответственно, нужно как-то контролировать "открытость" окна.
1. окно должно оставаться открытым при повторном срабатывании триггера
2. окно должно открываться/закрываться по триггеру
3. пользователь может открывать/закрывать окно
4. нужно отслеживать состояние открытости/закрытости окна вне зависимости от того, было ли оно открыто/закрыто пользователем или триггером
1. Да, оно должно оставаться открытым при повторном срабатывании триггера
2. Окно должно открываться по триггеру, закрывать его должен пользователь
3. Да, пользователь может открывать и закрывать окна
4. Да, я думаю, что не важно кто или что открыло/закрыло окно
Вкратце обрисую задачу. Есть диспетчер, который сидит у компьютера и наблюдает за некоторым рядом объектов, открывая и закрывая окна (не обязательно, конечно, "серфить" по окнам объектов, но может ему от скуки придет такое в голову). Если на объекте происходит тревожное событие, то должен открыться соответствующий экран и подсветиться та часть схемы объекта, где произошла тревога. В общем случае, на одном и том же объекте последовательно могут произойти несколько тревожных событий, а диспетчер может успеть закрыть окно между событиями, а может и не успеть.
Тут еще всплывает вопрос. А если одновременно на двух объектах произойдет тревожное событие (маловероятно, но возможно), то как откроются окна? Не будут ли мешать друг другу?
А диспетчер тем временем занят разбором ситуации на другом объекте. Очень Вы ему поможете, очень. Сами же дальше правильные вопросы задаёте. Это порочный подход, если коротко.
У меня нет знаний по организации окон/экранов конкретно в мастерскаде, потому общие соображения. Наличие общей для всех экранов области, в которой выводится список активных алармов. Т.е. на всех окнах/экранах (за исключением pop-up) должна быть зона вывода активных алармов в определенном порядке (время возникновения, приоритет и т.п.). При выборе конкретного аларма из этого списка диспетчер сам должен определиться с действиями - просто квитировать, перейти на экран объекта, связанный с этим алармом, ничего не делать, что-то ещё.
ХЗ. Пока постановка задачи заказчиком такая. А от списка аварий с цветовой дифференциацией приоритетов никто не отказывается в любом случае.
Вот, что получилось: WindowsControl.zip Вроде по всем пунктам отрабатывает. По тэгу окно только открывается. Закрывать может только пользователь. Даже, если пользователь закрыл окно, а тэг все еще в 'True', окно не откроется до следующего 'True' тэга. Но пользователь всегда может открывать/закрывать окно. Пришлось отключить "Разрешить закрытие" у окна и добавить отдельную кнопку, иначе не отследить закрытие. Заголовок у окна теперь полностью пустой, нужен только для "drag-and-drop"а. Сами увидите. Вынес все в библиотеку, чтобы было удобно разместить сразу несколько экземпляров. Управление вынес в программу на ST, иначе получается нагромождение параметров и условий (легко запутаться). Триггер срабатывает по двум условиям ("Открытие окна по тэгу" ИЛИ "Ручное открытие окна"). Окно будет открытым/закрытым даже, если обновить страницу.
Откроются все сразу, если иного условия нет. Во вложенном проекте сразу откроются, т.к. каждое окно находится в своем экземпляре и работает независимо от других. Если окна большие, то да, будут мешать. В примере большие и мешают, но я сделал их открытие со смещением от элемента. Стало немного лучше. Чем больше будет открытых окон, тем сильнее будет страдать UI и UX. Автоматически всплывающие окна это хорошо, но в меру по количеству и их размерам. Вообще для тревожных событий, в том числе, существуют журналы, индикаторы событий. В MS4D это есть. Их можно фильтровать и настраивать под определенные тревоги и события. Например, на главное окно можно вывести текущий журнал и настроить его на все критически важные тревоги/события, на клик по ячейке повесить любое действие.Тут еще всплывает вопрос. А если одновременно на двух объектах произойдет тревожное событие (маловероятно, но возможно), то как откроются окна? Не будут ли мешать друг другу?
У MS4D на YouTube-канале есть видео по журналам и сообщениям: MasterSCADA 4D–платформа для автоматизации и диспетчеризации. Работа с журналами и системой сообщений
Спасибо большущее! Буду разбираться. Правда, скорее всего, завтра - сегодня хочется отдохнуть. Еще раз спасибо!!!