В дополнение.
Концепция:
1. Нажали на кнопку. 2 состояния для отображения чтобы диспетчер понимал, что он нажал на кнопку (см. рис. ButtonCmd и ButtonCmdOn).
2. Флажок. 2 состояния, чтобы диспетчер понимал, что система приняла команду (см. рис. ButtonSystemAccepredCmd).
3. Изменение фона кнопки, чтобы диспетчер понял, что команда выполнена (см. рис. ButtonSystemExecutedCmd).
Так скрипты.
Для кнопки для OnDataChangeEx (в Тег указываем нужный бит для доп. переменной):
begin
if Sender is TM_Button then
with Sender as TM_Button do
begin
if (GetBit(VariableEx.AsInt, Tag) = TRUE) AND (ActiveState = 0) then
begin
States[0].Color := RGB(0,72,24);
States[0].BorderColor := RGB(32,160,60);
States[0].FontColor := RGB(64,200,120);
end;
if (GetBit(VariableEx.AsInt, Tag) = FALSE) AND (ActiveState = 0) then
begin
States[0].Color := RGB(0,48,48);
States[0].BorderColor := RGB(16,120,120);
States[0].FontColor := RGB(32,240,234);
end;
end;
end.
для флажка для OnDataChange:
begin
if Sender is TM_CheckBox then
with Sender as TM_CheckBox do
begin
if GetBit(Variable.AsInt, BitNumber) then
begin
Color := RGB(32,160,60);
Alpha := 255;
end
else
begin
Color := RGB(16,120,120);
Alpha := 128;
end;
end;
end.
Пару вопросов к разработчикам.
1. Решение будет работать больше чем на одном клиенте? А то в некоторых темах такое упоминается.
2. Флажок можно как то сделать по центру, а то минимум можно только геометрию сделать ш40хв32 для красивости?
3. Для кнопки можно сделать смещения текста надписи влево\по центру\вправо - да\нет в ответе достаточно.
Жду ответов и предложений.