PDA

Просмотр полной версии : Интерфейс составления рецептов



Vitorgan
03.07.2022, 17:00
Добрый день, существует окно рецептов, в нем:

1) Выпадающий список с названием рецептов (тут все понятно);
2) Список компонентов рецепта, например 4 компонента, их вес. В вашем примере сделана таблица, но мне надо что-то визуально похожее на таблицу, но более продвинуто. По логике сделано так- какой компонент в этой таблице выбран первым, тот и загружается в дозатор первым. Поэтому компоненты динамические, тут приходит в голову список строк с названием компонентов, но для 4 строк моей таблице придется выносить в это окно 4 раза список строк, да так чтобы все эти "списки" были идентичными, то есть при создании новой строки при добавлении нового компонента, во всех строках обновился список, возможно ли это организовать с помощью экземпляров?

SCADAMaster
04.07.2022, 09:28
Не используйте выпадающий список, а используйте ВФБ "Список строк". Его можно привязать на какой то определенный файл и тогда обновив содержимое файла, обновятся значения во всех контролах ВФБ.

Vitorgan
05.07.2022, 12:26
Не используйте выпадающий список, а используйте ВФБ "Список строк". Его можно привязать на какой то определенный файл и тогда обновив содержимое файла, обновятся значения во всех контролах ВФБ.
Понял Вас, нашел, спасибо.
А как быть с таблицами? если мне надо на каждую строку не только 1 параметр изменять, а например 3? В Этом варианте таблица становиться бесполезной? Чем можно заменить таблицу в этом случае, что бы ввод данных был как в таблице, без появления окна ввода?

Vitorgan
05.07.2022, 12:38
61537
как привести таблицу к нормальному ввиду? есть возможность регулировки ее строк и столбцов с помощью чисел, а не двиганием мыши? Вертикальные линии в свойствах таблицы у Вас называются горизонтальными, горизонтальные - вертикальными.... Я скадой пользуюсь 7 лет, да косяков было много, исправляли, но таблицей потребовалось воспользоваться впервые, ну очень не доработана она.....

SCADAMaster
05.07.2022, 13:36
Обычно данная задача решается просто командами, у которых включают границу и из них собирают такую "псевдотаблицу"
Ну или можете написать свой ВФБ на С#

Vitorgan
05.07.2022, 16:24
Обычно данная задача решается просто командами, у которых включают границу и из них собирают такую "псевдотаблицу"
Ну или можете написать свой ВФБ на С#

Команды - так команды) Подскажите как правильно завязать команды с выходами "Сохранение в файле", ведь в таблице есть входы и выходы, обратную связь в команде не поставишь, как быть в данной ситуации?

SCADAMaster
05.07.2022, 16:44
Лучше это через скрипт сделать.
В поставку скады входит пример такого скрипта.
Скрипт находится в Палитра ФБ - Библиотека - Примеры скриптов - Сохранение и загрузка наборов команд. Скрипт нужно расположить в объекте, с командами, значения которых нужно сохранять и загружать по запросу.
У скрипта есть три входа. "Набор" - строковое имя набора (например название рецепта) под которым будет произведено сохранение значени или наоборот загрузка. "Сохранение" - при подаче на него импульса происходит сохранение значений команд с именем заданным на входе "Набор". "Загрузка" - при подаче на него импульса происходит загрузка значений команд из сохраненного набора (также заданного на входе "Набор").
Единственное ограничение скрипта - нет возможности работать со строками, но это ограничение можно снять.

Vitorgan
05.07.2022, 18:08
Лучше это через скрипт сделать.
В поставку скады входит пример такого скрипта.
Скрипт находится в Палитра ФБ - Библиотека - Примеры скриптов - Сохранение и загрузка наборов команд. Скрипт нужно расположить в объекте, с командами, значения которых нужно сохранять и загружать по запросу.
У скрипта есть три входа. "Набор" - строковое имя набора (например название рецепта) под которым будет произведено сохранение значени или наоборот загрузка. "Сохранение" - при подаче на него импульса происходит сохранение значений команд с именем заданным на входе "Набор". "Загрузка" - при подаче на него импульса происходит загрузка значений команд из сохраненного набора (также заданного на входе "Набор").
Единственное ограничение скрипта - нет возможности работать со строками, но это ограничение можно снять.

Как его снять подскажите пожалуйста

SCADAMaster
05.07.2022, 18:19
if (objValue == null || objValue is string) //строка не сохраняется
убрать || objValue is string
Но помните что строка не должна содержать точку с запятой.

Vitorgan
06.07.2022, 07:05
if (objValue == null || objValue is string) //строка не сохраняется
убрать || objValue is string
Но помните что строка не должна содержать точку с запятой.

Спасибо, про ограничения запомнил.

Vitorgan
06.07.2022, 09:35
Подскажите пожалуйста, можно ли каким нибудь образом обойти выделение строки в выпадающем списке? Если отключать подтверждение выбора, то выделенная строка висит, пока не попадешь на какой нибудь другой ВФБ, любое неаккуратное движение колесиком, строка поменялась...... Почему нельзя снять выделение после выбора?

Vitorgan
06.07.2022, 13:34
Если можно еще вопрос, требуется создать с левой стороны мнемосхемы блок навигации виджетов, при нажатии на каждый виджет, открывается окно с его кнопками,текстами и т.д. Но открывается оно без рамки, названия, именно в том месте где находится выделенная облась под окна виджетов, все работает вроде бы хорошо. Но из за "не относительного" смещения окон, при открытии дерева объектов в режиме исполнения, вся картинка рушится, потому что окна сдвигаются относительно выделенного для них места на мнемосхеме. Есть ли возможность привязать окна объектов к зонам на мнемосхеме? понимаю что окно объектов практически всегда будет закрыто, но мало ли....

SCADAMaster
06.07.2022, 14:56
Не совсем понятно в чем проблема, но посмотрите вот эту статью:
https://insat.ru/blog/rezhim-listaniya-okon/

SCADAMaster
07.07.2022, 14:42
Подскажите пожалуйста, можно ли каким нибудь образом обойти выделение строки в выпадающем списке? Если отключать подтверждение выбора, то выделенная строка висит, пока не попадешь на какой нибудь другой ВФБ, любое неаккуратное движение колесиком, строка поменялась...... Почему нельзя снять выделение после выбора?
В завтрашней Бета версии будет настройка контрола "Убрать фокус после ввода"

Vitorgan
10.07.2022, 13:58
В завтрашней Бета версии будет настройка контрола "Убрать фокус после ввода"
Отлично, подскажите пожалуйста, можно ли использовать как-то пустую строку выпадающего списка? Обработать переменную в ST могу, уже проверил, а вот сделать так чтобы в выпадающем списке была настоящая пустая строка (не пробел) нет могу, как быть? Эта пустая строка при инициализации только есть...Можно конечно создать строку с названием пусто или подобной, но криво смотрится.

SCADAMaster
10.07.2022, 20:05
Вам нужно пустую строку вывести? Просто подайте сигнал на вход Сброс

Vitorgan
12.07.2022, 22:28
SCADAMaster, подскажите пожалуйста, структуры и указатели ST в masterscada отсутствуют?

SCADAMaster
13.07.2022, 08:12
Структуры можно делать, а указателей нет.

Vitorgan
14.07.2022, 14:31
Подскажите пожалуйста, в скрипте как правильно прописать сохранение в файл "на три папки по иерархии назад" ?
var FilePathName = HostFB.TreeItemHlp.FolderPath+Набор+".csv"; //путь сохранения файла

SCADAMaster
14.07.2022, 14:47
Parent берите - это родительский объект, и так сколько угодно.

Vitorgan
14.07.2022, 16:48
Подскажите пожалуйста, мне надо понимать, что подгрузились все параметры из набора,
Вопрос, можно ли сделать так, чтобы последнему параметру, скрипт выдал индивидуальный номер, и чтобы этот номер не повторялся не в одном наборе?

SCADAMaster
14.07.2022, 18:39
Ничего не понятно, опишите вашу проблему подробнее. Желательно со скриншотами

Vitorgan
14.07.2022, 18:56
Извиняюсь проблему решил, появилась другая, про parent понял файл сохраняется на два уровня ниже, а как сохранить в папку которая находится на уровень выше:
папка1/папка2/папка3/Скрипт
а сохранять наборы надо папка1/папка4 и чтоб если она отсутствует, еще и создал ее

SCADAMaster
14.07.2022, 19:26
Поднимаетесь до папки 1 через Parent затем средствами Net создаете папку:
https://docs.microsoft.com/ru-ru/dotnet/api/system.io.directoryinfo.create?view=net-6.0