Пусть в проекте имеется переменная "vrMy" с типом данных "Word" и изображение "Image1". Допустим, требуется изменить цвет изображения на зеленый и скорость анимации на 10 кадров/сек., если третий бит (считая с нуля) переменной "vrMy" равен 1. Если этот бит равен 0, то нужно сбросить скорость анимации на 0 и изменить цвет изображения на красный. Для решения задачи необходимо связать изображение "Image1" с переменной "vrMy" и на событие "OnDataChange" написать скрипт.
Важно! Если необходимо, чтобы множество однотипных объектов меняли цвет по одинаковым условиям, то рекомендуется написать один универсальный скрипт(см. примеры ниже), тогда не нужно будет писать отдельный скрипт для каждого объекта, что значительно ускорит разработку проекта, а также повысит скорость его работы.
Примеры скриптов
1. Простой скрипт
begin
if GetBit(vrMy.AsInt, 3) = TRUE then
begin
Image1.Color := clGreen;
Image1.AnimSpeed := 10;
end else
begin
Image1.Color := clRed;
Image1.AnimSpeed := 0;
end;
end.
|
2. Универсальный скрипт(можно применить к любому изображению)
Изображения нужно связать с необходимыми переменными и у каждого изображения в свойстве "Тэг" указать номер бита, по которому должен меняться цвет. Далее, нужно написать универсальный скрипт приведенный ниже и установить его на событие OnDataChange требуемых изображений:
begin
if Sender is TM_Image then // сначала убедимся, что скрипт вызван объектом "Изображение"
with Sender as TM_Image do // далее будем работать с объектом Sender, как с изображением
if GetBit(AsInt, Tag) = TRUE then
begin
Color := clGreen;
AnimSpeed := 10;
end else
begin
Color := clRed;
AnimSpeed := 0;
end;
end.
|
3. Универсальный скрипт по битам двух переменных(можно применить к любому изображению)
Если необходимо изменять цвет по биту одной переменной, а скорость анимации по биту другой переменной, то нужно указать в свойстве изображения "Переменная" первую переменную, а в свойстве "Доп. переменная" вторую переменную. Далее, нужно написать универсальный скрипт приведенный ниже и установить его на событие OnDataChange и OnDataChangeEx требуемых изображений:
begin
if Sender is TM_Image then // сначала убедимся, что скрипт вызван объектом "Изображение"
with Sender as TM_Image do // далее будем работать с объектом Sender, как с изображением
begin
{меняем цвет изображения по основной переменной}
if GetBit(AsInt, 3) = TRUE then Color := clGreen else Color := clRed;
{меняем скорость анимации изображения по доп. переменной "VariableEx"}
if GetBit(VariableEx.AsInt, 1) = TRUE then AnimSpeed := 10 else AnimSpeed := 0;
end;
end.
|
Универсальный скрипт можно применить к любому объекту, для этого требуется:
1.Выделить необходимый объект(или множество объектов) и через инспектор объектов перейти на вкладку "События".
2.В свойстве "OnDataChange" выбрать из списка наш созданный скрипт - он привяжется ко всем выделенным объектам.
3.Не забыть связать объект(объекты) с нужной переменной.
4.В дальнейшем, при необходимости можно копировать однотипные объекты и только менять у них переменную.
Теперь все объекты, у которых в событии "OnDataChange" выбран универсальный скрипт будут работать в соответствии с условиями скрипта.