Добрый день.
Спасибо за оперативный ответ на предыдущий вопрос.
В документации сказано, что Ячейка (TM_TableCell) имеет свойство Variable и приведён пример
Table1.Columns[3].Cells[1].Variable.Value := 10;
В проекте есть 25 однотипных объектов с 64 свойствами.
Под объект приготовлено окно, делается привязка переменных при вызове окна OnShow
var
aNum : String;
tblParam : TM_Table;
begin
aNum:=IntToStr(Sender.Tag;); // получили номер объекта
tblParam := GetTableByName('tblParam'+aNum);
if tblParam <> nil then
begin
tblParam.Tag:=IntToStr(Sender.Tag;); // передали его ниже
tblParam.OnDataChangeEvent // обновили данные на объект
end;
end;
Далее OnDataChangeEvent выводит актуальные данные (пример для времени шага)
tblParam := GetTableByName('tblParam'+aNum);
if tblParam <> nil then
with tblParam as TM_Table do
begin
Columns[2].Cells[1].Text:=SecondsToStr(GetVariableByName('StepRunTimeSet_T'+aNum+'_W').AsInt64);
...
end;
Оператору надо менять параметры техпроцесса. По OnCellClick попробовали менять переменную (тип в ОРС - на запись в контроллер)
begin
with Cell do
case Row of
1:Variable.Value :=Text; // попытка присвоить отображаемое значение
2:Variable.Value :=1800; // попытка писать число
...
end;
end;
Сервер выдаёт ошибку "Ошибка в скрипте Table_onClick в строке _номер_строки_с_присвоением_ Access violation at address 0389AA7. Read jf address 0CD1582."
Но варианты записи
Table3.Columns[2].Cells[17].Variable:=GetVariableByName('StepMonTimeSet_T01_W');
StepMonTimeSet_T02_W.Value:=3600;
проходят успешно.
Получить тег объекта, чтоб определить имя переменной StepMonTimeSet_T01_W,StepMonTimeSet_T02_W ... StepMonTimeSet_T25_W нет возможности у процедуры параметр типа TM_TableCell.
Как быть в такой ситуации?