Важно! Перед работой с кнопками ознакомьтесь с примерами их использования.
Допустим требуется кнопка, которая переключает режим работы механизма (переменная "Select", тип "Boolean"), а также меняет свой цвет в зависимости от состояния механизма (переменная "Sost", тип "Integer"). Создадим кнопку с типом "с фиксацией". В свойстве "Переменная" кнопки укажем переменную "Select", а в свойстве "Доп. переменная" укажем переменную "Sost":

Далее создадим скрипт по событию "OnDataChangeEx" (изменилось значение доп. переменной):
Универсальный скрипт (можно применить к любой кнопке):
begin
if Sender is TM_Button then // проверяем, что Sender это кнопка
with Sender as TM_Button do // приводим Sender к типу "TM_Button"
case VariableEx.AsInt of // если значение доп. переменной кнопки равно
0 : States[0].Color := clGray; // изменить цвет первого состояния на серый
1 : States[0].Color := clGreen; // изменить цвет первого состояния на зеленый
2 : States[0].Color := clRed; // изменить цвет первого состояния на красный
// если требуется, можно изменить цвет нескольких состояний кнопки
end;
end.
Теперь кнопка будет управлять значением переменной "Select" и менять свой цвет в зависимости от доп. переменной "Sost".
Рассмотрим случай, когда необходимо брать состояния кнопки из битов доп. переменной:
begin
if Sender is TM_Button then // проверяем, что Sender это кнопка
with Sender as TM_Button do // приводим Sender к типу "TM_Button"
// если нулевой бит доп. переменной равен True, то
if GetBit(VariableEx.Value, 0) = True then
States[0].Color := clGray // изменить цвет первого состояния на серый
else // иначе…
States[0].Color := clGreen; // изменить цвет первого состояния на зеленый
// если требуется, можно изменить цвет нескольких состояний кнопки
end.
Этот скрипт также универсальный и его можно применить для любой кнопки.