Здравствуйте!
Для заполнения ячеек таблицы значениями архивных функций нужно добавить(изменить) следующие скрипты:
1.В скрипте "Прошел час" необходимо добавить переменные интервала времени и вызов архивной функции
var
...
DateStart, DateEnd: TDateTime;
begin
...
DateEnd:= Now; // текущие дата и время
DateStart:= IncHour(DateEnd, -1); // уменьшить дату и время на 1 час
{ Синхронизация, с завершением работы функции по событию "Изменилась переменная" MyVariableRes, предполагает до вызова
функции присвоить переменной значение вне ожидаемого интервала значений функции. Например, для неотрицательных значений
функции это может быть -1. События с таким значением переменной игнорируются. Для пропуска инициализации начальное значение
переменной должно быть таким же (-1)}
MyVariableRes.Value := -1;
{ вычислить максимальное значение переменной "MyVariable" за период
от "DateStart" до "DateEnd" и записать результат в переменную "MyVariableRes" }
ArchiveMax(MyVariable, MyVariableRes, DateStart, DateEnd);
...
end.
2. Скрипт "Изменилась переменная" MyVariableRes
var i, j: integer;
begin
i := Variable.AsInt; // пример для целой переменной
if i < 0 then exit; // это событие по инициализации (нач.значение MyVariableRes = -1) или перед вызовом архивной функции
j := (HourOf(Now) + 23) mod 24; // предыдущий час
Table1.GetCell(4, j + 1).Text := IntToStr(i); // вывод результата функции в столбец с индексом 4 таблицы Table1 с фиксированной 1-ой строкой
end.
Здравствуйте.
Если ячейки не связаны с переменными и заполняются через скрипт с помощью изменения свойства Text, то можно записывать в него любой текст, например:
begin
Table1.GetCell(2, 2).Text := 'Нет';
end.
Если ячейки связаны с переменными, то в них будет выводиться текущее значение переменной.
Спасибо. Решил вопрос при помощи следуущего кода:
var i, j: integer;
begin
i := MyVariableRes.AsInt; // пример для целой переменной
j := (HourOf(Now) + 23) mod 24; // предыдущий час
if i < 0 then exit; // это событие по инициализации (нач.значение MyVariableRes = -1)
//или перед вызовом архивной функции
if i = 1 then
Table50.GetCell(13, j + 1).Text := 'Срабатывание';
if i = 0 then
Table50.GetCell(13, j + 1).Text := 'Норма';
end.