Переменную-предупреждение привязываем к объекту как основную, переменную-тревогу - как дополнительную.
Далее пишем универсальный скрипт:
with Sender as TM_Object do
case Variable.AsInt + 10*VariableEx.AsInt of
00: Color := clGreen; //-- Норма
01: Color := clYellow; //-- Предупреждение
10,11: Color := clRed; //-- Тревога
end;
И привязываем этот скрипт к событиям OnDataChange и OnDataChangeEx объекта.
Или так, если речь чисто о булевых переменных:
with Sender as TM_Object do
if VariableEx.AsBool then
Color := clRed
else if AsBool then
Color := clYellow
else
Color := clGreen;
end;