Здравствуйте.
Когда проект загрузился полностью инициализируем CheckBox согласно значениям основной и дополнительной переменных.
Далее то же самое в скрипты на изменение основной и вспомогательной переменных.
Если данные скрипты написаны по изменению переменной, то не нужно их дополнительно писать на событие "Запуск проекта". После запуска проекта в любом случае выполнятся скрипты по изменению переменных и цвета CheckBox изменятся в соответствии с условиями скрипта.
Захотел сделать в глобальном модуле обработку свойств CheckBox. И в одно секундном скрипте вызывать процедуру. Не надо плодить кучу
скриптов по изменению
Это плохая идея, следует избегать использования секундных скриптов, когда задачу можно решить без них. Если требуется изменять свойства CheckBox в зависимости от значений основной и доп. переменной, то для этого достаточно написать один универсальный скрипт, например:
begin
if Sender is TM_CheckBox then
with Sender as TM_CheckBox do
begin
{ изменение цвета по основной переменной }
if AsBool = True then
Color := clLime
else
Color := clAqua;
{ изменение цвета фона по доп. переменной }
if VariableEx.AsBool = True then
BackgroundColor := $008040
else
BackgroundColor := $003030;
end;
end.
, данный скрипт нужно назначить на события OnDataChange и OnDataChangeEx нужных объектов CheckBox. Теперь все объекты, у которых назначен данный скрипт будут изменять цвет по основной переменной, а цвет фона по доп. переменной.
Подскажите как в глобальном модуле в параметры процедуры указать константу цвета
Для этого нужно объявить переменную с типом LongWord:
procedure CheckBoxColoration(NeededCB:TM_CheckBox; Color1, Color2:LongWord);
, а при вызове передавать в переменные цветов нужный цвет, например:
CheckBoxColoration(CheckBox1, $008040, $003030);
вызывает ошибку "... Undeclared identifier "BackgroundColor"...".
Если Sender уже приведен к нужному типу строчкой "with Sender as TM_CheckBox do", то далее можно сразу обращаться к нужным свойствам объекта(см. пример скрипта выше). Если написать "Sender.BackgroundColor", то будет производиться работа с общим типом данных "
TM_Control", в котором нет свойства BackgroundColor, поэтому и возникает ошибка. Чтобы скрипт скомпилировался корректно, нужно явно привести Sender к нужному типу "(Sender as TM_CheckBox).BackgroundColor := $003030;", но так как у Вас в скрипте Sender уже приведен к нужному типу, то можно сразу обращаться к нужным свойствам(см. пример скрипта выше).