Да Вы все правильно поняли.
begin
{Скрипт меняет состояние кнопок и индикаторов PLC2}
// Marsh *************************************************************************
{SILOS 1}
if GetBit(PLC2_FIRST_PRG_status.Value, 0) then
begin //если бит равен 1
bt_silos1.States[0].Color := RGB(0,95,88);
bt_silos1.States[0].BorderColor := RGB(0,95,88);
end
else
begin //если бит равен 0
bt_silos1.States[0].Color := RGB(60,60,60);
bt_silos1.States[0].BorderColor := RGB(60,60,60);
end;
{SILOS 2}
if GetBit(PLC2_FIRST_PRG_status.Value, 1) then
begin //если бит равен 1
bt_silos2.States[0].Color := RGB(0,95,88);
bt_silos2.States[0].BorderColor := RGB(0,95,88);
end
else
begin //если бит равен 0
bt_silos2.States[0].Color := RGB(60,60,60);
bt_silos2.States[0].BorderColor := RGB(60,60,60);
end;
{on TSB}
if GetBit(PLC2_FIRST_PRG_status.Value, 2) then
begin //если бит равен 1
bt_onTSB.States[0].Color := RGB(0,95,88);
bt_onTSB.States[0].BorderColor := RGB(0,95,88);
end
else
begin //если бит равен 0
bt_onTSB.States[0].Color := RGB(60,60,60);
bt_onTSB.States[0].BorderColor := RGB(60,60,60);
end;
// TSH ***************************************************************************
{AUTO}
if GetBit(PLC2_FIRST_PRG_status.Value, 5) then
begin //если бит равен 1
bt_tsh_auto.States[0].Color := RGB(0,95,88);
bt_tsh_auto.States[0].BorderColor := RGB(0,95,88);
bt_tsh_auto.States[0].FontStep := 0;
bt_tsh_auto.States[0].Caption := 'Авто вкл.';
manual_tsh.Visible := FALSE;
end
else
begin //если бит равен 0
bt_tsh_auto.States[0].Color := RGB(60,70,80);
bt_tsh_auto.States[0].BorderColor := RGB(60,70,80);
bt_tsh_auto.States[0].FontStep := 3;
bt_tsh_auto.States[0].Caption := 'Авто';
manual_tsh.Visible := TRUE;
end;
{MANUAL ON}
if GetBit(PLC2_FIRST_PRG_status.Value, 6) then
begin //если бит равен 1
bt_tsh_on.States[0].Color := RGB(0,95,88);
bt_tsh_on.States[0].BorderColor := RGB(0,95,88);
bt_tsh_on.States[0].Caption := 'Включено';
end
else
begin //если бит равен 0
bt_tsh_on.States[0].Color := RGB(60,70,80);
bt_tsh_on.States[0].BorderColor := RGB(60,70,80);
bt_tsh_on.States[0].Caption := 'Включить';
end;
{MANUAL OFF}
if GetBit(PLC2_FIRST_PRG_status.Value, 7) then
begin //если бит равен 1
bt_tsh_off.States[0].Color := RGB(0,95,88);
bt_tsh_off.States[0].BorderColor := RGB(0,95,88);
bt_tsh_off.States[0].Caption := 'Выключено';
end
else
begin //если бит равен 0
bt_tsh_off.States[0].Color := RGB(60,70,80);
bt_tsh_off.States[0].BorderColor := RGB(60,70,80);
bt_tsh_off.States[0].Caption := 'Выключить';
end;
{REVERS ON/OFF}
if GetBit(PLC2_FIRST_PRG_status.Value, 4) then
img_tsh_revers.Visible := true
else
img_tsh_revers.Visible := false;
// NORIAH ************************************************************************
{AUTO}
if GetBit(PLC2_FIRST_PRG_status.Value, 10) then
begin //если бит равен 1
bt_noriah_auto.States[0].Color := RGB(0,95,88);
bt_noriah_auto.States[0].BorderColor := RGB(0,95,88);
bt_noriah_auto.States[0].FontStep := 0;
bt_noriah_auto.States[0].Caption := 'Авто вкл.';
manual_noriah.Visible := FALSE;
end
else
begin //если бит равен 0
bt_noriah_auto.States[0].Color := RGB(60,70,80);
bt_noriah_auto.States[0].BorderColor := RGB(60,70,80);
bt_noriah_auto.States[0].FontStep := 3;
bt_noriah_auto.States[0].Caption := 'Авто';
manual_noriah.Visible := TRUE;
end;
{MANUAL ON}
if GetBit(PLC2_FIRST_PRG_status.Value, 11) then
begin //если бит равен 1
bt_noriah_on.States[0].Color := RGB(0,95,88);
bt_noriah_on.States[0].BorderColor := RGB(0,95,88);
bt_noriah_on.States[0].Caption := 'Включено';
end
else
begin //если бит равен 0
bt_noriah_on.States[0].Color := RGB(60,70,80);
bt_noriah_on.States[0].BorderColor := RGB(60,70,80);
bt_noriah_on.States[0].Caption := 'Включить';
end;
{MANUAL OFF}
if GetBit(PLC2_FIRST_PRG_status.Value, 12) then
begin //если бит равен 1
bt_noriah_off.States[0].Color := RGB(0,95,88);
bt_noriah_off.States[0].BorderColor := RGB(0,95,88);
bt_noriah_off.States[0].Caption := 'Выключено';
end
else
begin //если бит равен 0
bt_noriah_off.States[0].Color := RGB(60,70,80);
bt_noriah_off.States[0].BorderColor := RGB(60,70,80);
bt_noriah_off.States[0].Caption := 'Выключить';
end;
// ZKH1 ***********************************************************************
{AUTO}
if GetBit(PLC2_FIRST_PRG_status.Value, 13) then
begin // если бит равен 1
bt_ZKH1_auto.States[0].Color := RGB(0,95,88);
bt_ZKH1_auto.States[0].BorderColor := RGB(0,95,88);
bt_ZKH1_auto.States[0].FontStep := 0;
bt_ZKH1_auto.States[0].Caption := 'Авто вкл.';
img_ZKH1_manual.Visible := FALSE ;
end
else
begin // если бит равен 0
bt_ZKH1_auto.States[0].Color := RGB(60,70,80);
bt_ZKH1_auto.States[0].BorderColor := RGB(60,70,80);
bt_ZKH1_auto.States[0].FontStep := 3;
bt_ZKH1_auto.States[0].Caption := 'Авто';
img_ZKH1_manual.Visible := TRUE ;
end;
{MANUAL OPEN}
if GetBit(PLC2_FIRST_PRG_status.Value, 15) then
begin // если бит равен 1
bt_ZKH1_open.States[0].Color := RGB(0,95,88);
bt_ZKH1_open.States[0].BorderColor := RGB(0,95,88);
bt_ZKH1_open.States[0].Caption := 'Открыта';
end
else
begin // если бит равен 0
bt_ZKH1_open.States[0].Color := RGB(60,70,80);
bt_ZKH1_open.States[0].BorderColor := RGB(60,70,80);
bt_ZKH1_open.States[0].Caption := 'Открыть';
end;
{MANUAL CLOSE}
if GetBit(PLC2_FIRST_PRG_status.Value, 14) then
begin // если бит равен 1
bt_ZKH1_close.States[0].Color := RGB(0,95,88);
bt_ZKH1_close.States[0].BorderColor := RGB(0,95,88);
bt_ZKH1_close.States[0].Caption := 'Закрыта';
end
else
begin // если бит равен 0
bt_ZKH1_close.States[0].Color := RGB(60,70,80);
bt_ZKH1_close.States[0].BorderColor := RGB(60,70,80);
bt_ZKH1_close.States[0].Caption := 'Закрыть'
end;
// ZKH2 ***********************************************************************
{AUTO}
if GetBit(PLC2_FIRST_PRG_status.Value, 16) then
begin // если бит равен 1
bt_ZKH2_auto.States[0].Color := RGB(0,95,88);
bt_ZKH2_auto.States[0].BorderColor := RGB(0,95,88);
bt_ZKH2_auto.States[0].FontStep := 0;
bt_ZKH2_auto.States[0].Caption := 'Авто вкл.';
img_ZKH2_manual.Visible := FALSE ;
end
else
begin // если бит равен 0
bt_ZKH2_auto.States[0].Color := RGB(60,70,80);
bt_ZKH2_auto.States[0].BorderColor := RGB(60,70,80);
bt_ZKH2_auto.States[0].FontStep := 3;
bt_ZKH2_auto.States[0].Caption := 'Авто';
img_ZKH2_manual.Visible := TRUE ;
end;
{MANUAL OPEN}
if GetBit(PLC2_FIRST_PRG_status.Value, 18) then
begin // если бит равен 1
bt_ZKH2_open.States[0].Color := RGB(0,95,88);
bt_ZKH2_open.States[0].BorderColor := RGB(0,95,88);
bt_ZKH2_open.States[0].Caption := 'Открыта';
end
else
begin // если бит равен 0
bt_ZKH2_open.States[0].Color := RGB(60,70,80);
bt_ZKH2_open.States[0].BorderColor := RGB(60,70,80);
bt_ZKH2_open.States[0].Caption := 'Открыть';
end;
{MANUAL CLOSE}
if GetBit(PLC2_FIRST_PRG_status.Value, 17) then
begin // если бит равен 1
bt_ZKH2_close.States[0].Color := RGB(0,95,88);
bt_ZKH2_close.States[0].BorderColor := RGB(0,95,88);
bt_ZKH2_close.States[0].Caption := 'Закрыта';
end
else
begin // если бит равен 0
bt_ZKH2_close.States[0].Color := RGB(60,70,80);
bt_ZKH2_close.States[0].BorderColor := RGB(60,70,80);
bt_ZKH2_close.States[0].Caption := 'Закрыть'
end;
end.
Как видно из текста скрипта ,он меняет визуальное отображение совершенно разных кнопок.
В связи с внедрением новой возможности в S-S .OnDataChangeEx хотел раскидать скрипты непосредственно на кнопки.
Из этого следует вопрос. Не будит ли новый вариант медленней?
Ведь каждая кнопка будет одновременно вызывать свой скрипт.(так как переменная по которой срабатывает OnDataChangeEx одна)