Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Инициализация таблицы  (Прочитано 807 раз)

ilnurikK

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Инициализация таблицы
« : 01 Октября 2025, 14:39:46 »
Добрый день! Необходимо проинициализировать ячейки таблицы после запуск и выполнить скрипт 1 раз.
Создал таблицу с 4 колонками (4 строки). Каждой ячейке привязал доп.переменную, из которой берется начальное значение для инициализации.
Создал скрипт Проект полностью запущен:
Код: (delphi)
var
  i : integer;
begin
    for i := 0 to Table1.RowCount do
       if GetBit(Table1.VariableEx.AsInt, i) then
        begin
          Table1.GetCell(4, i).Text := 'Вкл';
          Table1.GetCell(4, i).Color := clGreen;
        end
        else
        begin
          Table1.GetCell(4, i).Text := 'Выкл';
          Table1.GetCell(4, i).Color := clRed;
        end;
И этот скрипт почему то не инициализирует таблицу.
В чем может быть проблема?
end.
« Изменён: 01 Октября 2025, 22:18:38 от Simple_Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Re: Инициализация таблицы
« Ответ #1 : 01 Октября 2025, 22:31:29 »
Здравствуйте.

1. В любых непонятных ситуациях нужно в первую очередь проверить журнал сервера Simple-Scada. С большой вероятностью в нем будут содержаться ошибки или предупреждения, которые укажут, в чем именно проблема.
2. Строки и столбцы таблицы нумеруются с 0. В коде скрипта "Table1.GetCell(4, i)" идёт обращение к пятому столбцу.
3. "Table1.VariableEx.AsInt" - здесь выполняется обращение к доп. переменной таблицы, а не ячейки.
4. Если ячейке назначена основная переменная, то не имеет смысла менять текст ячейки через скрипты, т.к. скада будет автоматически заменять текст на значение связанной с ячейкой переменной.
5. В Вашем случае, текст и цвет ячейки можно менять по изменению доп. переменной, связанной с ячейкой. Для этого необходимо использовать скрипт на событие таблицы OnCellDatachangeEx (изменилось значение доп. переменной ячейки). Пример скрипта:
Код: (delphi)
begin
  if Cell.VariableEx <> nil then  // если к ячейке привязана доп. переменная
    if GetBit(Cell.VariableEx.AsInt, Cell.Row) then
    begin
      Cell.Text := 'Вкл';
      Cell.Color := clGreen;
    end else
    begin
      Cell.Text := 'Выкл';
      Cell.Color := clRed;
    end;
end.
6. Если не разберетесь, то пришлите на support@simple-scada.com текущую версию Вашего проекта из директории "..\Simple-Scada 2\Projects\" и укажите скрипт, который нужно проверить.