Не подскажите решение. Необходимо для каждого механизма создать поле c наименованием механизма. Также должна быть возможность изменения\ редактирования оператором этого поля при необходимости.
begin
with Sender as TM_Text do
begin
EditText.Tag := Tag; // идентификатор текста
aText.Value := Text; // записать исходный текст в переменную редактирования
EditText.X := X; // позиционирование окна редактирования по X
EditText.Y := Y; // по Y
end;
end.
begin
GetTextByName('Text' + IntToStr(EditText.Tag)).Text :=
aText.AsUTF8String; // запись результата редактирования
EditText.Y := -100; // скрыть поле редактирования
end.
В приложенном Вами примере изменённый текст будет сохраняться на сервере и изменения будут видны у всех клиентов?Из "Основного руководства" по Simple-Scada:
Клиенты Simple-Scada выполняют только задачи визуализации, все необходимые данные запрашиваются у сервера.Так что скорее ДА чем НЕТ, но внести полную ясность могут только разработчики Simple-Scada. Равно как и по вопросу об одновременном редактировании значения на нескольких клиентах.
Если выполнение проекта остановить и запустить по новой то будут отображены названия механизмов уже измененные или те же самые которые создавались при создании проекта в редакторе.?При запуске проекта свойства объекта инициализируются статическими начальными значениями, заданными при создании проекта в редакторе. Для динамических начальных значений (изменяемых в процессе исполнения и сохраняемых в качестве новых начальных значений) всю работу прийдется выполнять самостоятельно, включая:
И ещё один вопрос как в редакторе можно изменить тип события, по которому будет вызван скрипт например с "универсального" на "полностью запущен"Создать новый скрипт соответствующего типа и скопипровать в него содержимое исходного.
Создать в базе данных свою таблицу с четырьмя столбцам индекс, номер механизма, назначение механизма (группа освещения, приточная система, вытяжная система и т.д.)Судя по названию столбцов, это редко редактируемые данные, возможно только один раз.
В приложенном Вами примере изменённый текст будет сохраняться на сервере и изменения будут видны у всех клиентов?Изменения всегда отображаются на всех клиентах подключенных к серверу.
Если выполнение проекта остановить и запустить по новой то будут отображены названия механизмов уже измененные или те же самые которые создавались при создании проекта в редакторе.?После перезапуска проекта Simple-Scada просто считает текущие значения переменных с OPC-серверов, отобразит эти значения в соответствующих полях, выполнит соответствующие OnDataChange-скрипты (если такие есть в проекте) и т.д. Если у Вас на контроллере есть строковая переменная для хранения названия механизма, то вы можете вывести её в скаду и менять когда угодно. После перезапуска проекта эта переменная снова считается с контроллера и отобразится в скаде. Т.е. контроллер в этом случае будет запоминающим устройством. Если нужно восстановить какую-то информацию на мнемосхеме, которой нет на внешних устройствах, то придется делать свою систему сохранения данных и загрузки после перезапуска. Данные можно сохранить либо в файлы, используя функции для работы с файлами (https://simple-scada.com/help/script/workfile.html), либо в БД, выполняя пользовательские SQL-запросы процедурой RunSQL (https://simple-scada.com/help/script/workbd.html). Пример по работе с файлами и БД можно найти в стандартном Demo-проекте. Работа с файлами реализована на странице "Скрипты" -> "Работа с файлами". Работа с БД на странице "Скрипты" -> "Работа с БД".
И ещё один вопрос как в редакторе можно изменить тип события, по которому будет вызван скрипт например с "универсального" на "полностью запущен"Нужно создать новый скрипт с нужным типом события, а старый скрипт удалить.
Только из руководства по скриптам не понятно как можно обратиться к конкретному номеру строки в файле.Есть два типа файлов: текстовые и двоичные. В них нет номеров строк, как и самих строк. Данные на самом деле являются одной большой "строкой". А когда Вы открываете такой файл в текстовом редакторе, то он просто находит в этой большой строке символы переноса и отображает файл разбитым на строки. Поэтому, если Вам нужно перейти к 10 строке в текстовом файле, то придется выполнить функцию TextFileReadLn (https://simple-scada.com/help/script/textfilereadln.html) десять раз. При работе с двоичными файлами такого недостатка нет и можно установить "курсор" в любое место файла используя процедуру FileSeek (https://simple-scada.com/help/script/fileseek.html). Но это удобно только если Вы знаете точный размер каждой "строки" в файле. Если же размер заранее неизвестен (например когда в строке есть строковое значение произвольной длины), то опять же придется читать файл построчно, пока курсор не дойдет до нужной позиции.