Добрый день, подскажите как победить проблему?
по нажатию на кнопку открывается окно Window1, на нём есть кнопки, к кнопкам привязан универсальный скрипт по изменению переменной для смены цвета. пробовал разные скрипты, не получается ничего.
begin
if not (Sender is TM_Object) then
Exit;
with (Sender as TM_Object) do
case AsInt of
0: Color := clRed;
1: Color := clGreen;
// else
// Color := clNone;
end;
end.
и такой пробовал
begin
if Sender is TM_Button then // проверяем, что Sender это объект
with Sender as TM_Button do // приводим Sender к типу "TM_Object"
if Variable.AsBool = true then //AsBool = true then // если значение переменной объекта равно 1, то
Color := clGreen // изменить цвет объекта на зеленый
else
Color := clRed ;
end.
и такой
begin
if Sender is TM_Object then // проверяем, что Sender это объект
with Sender as TM_Object do // приводим Sender к типу "TM_Object"
if AsInt = 1 then
//if AsBool = true then // если значение переменной объекта равно 1, то
Color := clGreen // изменить цвет объекта на зеленый
else // иначе
Color := clRed; // изменить цвет объекта на красный
end.
в общем когда открываю окно кнопки как были серые, так и остаются таковыми (независимо от текущего состояния привязанной переменной), пока не сделаешь вкл/выкл, нет изначальной информативности по состоянию переменной.
пробовал делать то же самое не в окне, а на другой странице. индикации нет, пока не переключишь туда-сюда, только тогда появляется индикация. НО когда переходишь на другую страницу и снова возвращаешься назад, то снова ничего не "подсвечивается"
подскажите пожалуйста как победить? нужен универсальный скрипт, потому что таких переменных около 10000.
использую arOPC без ограничений и simple-scada 2 без огрничений. последняя версия с режимом отладки.
спасибо, проверил.
а я пытался еще вот такой фигнёй заниматься
begin
if Sender is TM_Button then // проверяем, что Sender это объект
with Sender as TM_Button do // приводим Sender к типу "TM_Object"
if AsBool = false then // если значение переменной объекта равно 1, то
States[0].Icon := 59 // 76 77
//Color := clGreen // изменить цвет объекта на зеленый
else
States[0].Icon := 88; // иначе
if Sender is TM_Button then // проверяем, что Sender это объект
with Sender as TM_Button do // приводим Sender к типу "TM_Object"
if AsBool = false then // если значение переменной объекта равно 1, то
//States[0].Icon := 43
Color := clGreen // изменить цвет объекта на зеленый
else
//States[0].Icon := 51;
Color := clYellow;
//Button260.States[0].FontColor:=clBlack;
if Sender is TM_Button then // проверяем, что Sender это объект
with Sender as TM_Button do // приводим Sender к типу "TM_Object"
if AsBool = false then // если значение переменной объекта равно 1, то
States[0].FontColor:=clWhite // 76 77
//Color := clGreen // изменить цвет объекта на зеленый
else
States[0].FontColor:=clBlack;
end.
Подскажите, такой скрипт будет правильно работать?
А то уж очень не хочется миллион кнопок тыкать и свойства состояний им править
begin
if Sender is TM_Button then
with Sender as TM_Button do
if AsBool = false then
begin
States[0].FontColor := clBlack;
States[0].Color := clRed;
end
else
begin
States[1].FontColor := clYellow;
States[1].Color := clGreen;
end;
end.