Здравствуйте.
Подмена переменных у объектов возможна, эта возможность появилась ещё в версии 2.0.1. Для этого нужно использовать свойство Variable например:
begin
// связываем поле Field1 с переменной MyVariable
Field1.Variable := MyVariable;
end.
Также в некоторых ситуациях (если переменные имеют подобные имена) может пригодиться функция GetVariableByName (описание можно
найти здесь), которая возвращает переменную по имени, например:
var
aVar: TM_Variable;
begin
// Ищем переменную с именем "MyVariable" и результат поиска записываем в aVar
aVar := GetVariableByName('MyVariable');
if Assigned(aVar) then // если переменная с таким именем найдена
Field1.Variable := aVar; // связываем поле Field1 с найденной переменной
end;
Вопрос в том, как применить эти возможности для оптимизации Вашей задачи. Здесь можно предложить следующее решение. При создании переменных для механизмов Вы именуете их в одном стиле, например:
- Переменные для механизма 1: Var1_SP, Var1_PV, Var1_MAN;
- Переменные для механизма 2: Var2_SP, Var2_PV, Var2_MAN;
У изображений исполнительных механизмов можно использовать свойство Тег как номер механизма (или группы переменных). У одного механизма ставим Тег = 1, у другого Тег = 2. Затем пишем
универсальный скрипт по клику на исполнительный механизм:
var
aVar: TM_Variable;
aName: string;
begin
aName := 'Var' + IntToStr(Sender.Tag); // получаем приставку к имени переменной в зависимости от Тега объекта (например Var1)
aVar := GetVariableByName(aName + '_SP'); // Получаем SP переменную
FieldSP.Variable := aVar; // связываем поле FieldSP с переменной VarX_SP
aVar := GetVariableByName(aName + '_PV'); // Получаем PV переменную
FieldPV.Variable := aVar; // связываем поле FieldPV с переменной VarX_PV
aVar := GetVariableByName(aName + '_MAN'); // Получаем MAN переменную
FieldMAN.Variable := aVar; // связываем поле FieldMAN с переменной VarX_MAN
end.
Теперь можно создать множество исполнительных механизмов и у каждого выставить свой Тег (соответствующий группе переменных). Также у каждого такого механизма нужно выставить универсальный скрипт описанный выше на событие OnClick. В результате мы получаем при клике по механизму окно в котором видим переменные итого механизма. При этом нам не приходится писать отдельный скрипт для каждого механизма.
P.S. Так же возможно потребуется реализовать вызов тренда при нажатии на поле показаний датчика, а таких полей будет как минимум пару сотен.
Вы говорите о временном тренде? Или постоянный тренд (который берется из БД)?