Имеется анимированное изображение вентилятора c именем "Image1". Задача: запускать анимацию, если переменная "MyVar" больше нуля и останавливать анимацию, если ее значение равно нулю. Свяжем изображение "Image1" с переменной "MyVar". Для этого, выделим изображение в редакторе и выберем в свойстве "Переменная" переменную "MyVar". Далее, на событие "OnDataChange" изображения напишем скрипт.
Важно! Если необходимо управлять свойствами множества однотипных объектов по одинаковым условиям, то рекомендуется написать один универсальный скрипт(см. примеры ниже), тогда не нужно будет писать отдельный скрипт для каждого объекта, что значительно ускорит разработку проекта, а также повысит скорость его работы.
Примеры скриптов
1. Простой скрипт
begin
{ если значение переменной (в виде целого числа),
которая связана с изображением больше нуля, то }
if Image1.AsInt > 0 then
Image1.AnimSpeed := 16 // запустить анимацию
else // иначе
Image1.AnimSpeed := 0; // остановить анимацию
end.
|
2. Универсальный скрипт (можно применить к любому изображению)
begin
if Sender is TM_Image then // проверяем, что Sender это изображение
with Sender as TM_Image do // приводим Sender к типу "TM_Image"
{ если значение переменной (в виде целого числа),
которая связана с изображением больше нуля, то }
if AsInt > 0 then
AnimSpeed := 16 // запустить анимацию
else // иначе
AnimSpeed := 0; // остановить анимацию
end.
Как можно заметить, в универсальном скрипте есть дополнительные проверки. Так как Sender это заранее неизвестный объект и в него может быть подставлен любой объект проекта, то сначала необходима проверка, в которой нужно убедиться, что Sender это изображение. После этого можно работать с объектом Sender, как с изображением. Кстати, строчку "with Sender as TM_Image do" можно удалить, но тогда придется везде приводить Sender к типу "TM_Image" самостоятельно, вот так:
begin
{ проверяем, что скрипт вызван объектом "Изображение" }
if Sender is TM_Image then
if TM_Image(Sender).AsInt > 0 then
TM_Image(Sender).AnimSpeed := 16
else
TM_Image(Sender).AnimSpeed := 0;
end.
Обращаем внимание, что нельзя написать просто: "Sender.AnimSpeed := 16;", так как свойство AnimSpeed не является свойством класса "TM_Control". Оно есть только у изображений (TM_Image). А для работы со свойствами класса "TM_Control" не требуется приводить Sender к какому-либо типу и можно работать напрямую, например: "Sender.Visible := False;" или "Sender.Color := clRed;".
|
Универсальный скрипт можно применить к любому объекту, для этого требуется:
1.Выделить необходимый объект(или множество объектов) и через инспектор объектов перейти на вкладку "События".
2.В свойстве "OnDataChange" выбрать из списка наш созданный скрипт - он привяжется ко всем выделенным объектам.
3.Не забыть связать объект(объекты) с нужной переменной.
4.В дальнейшем, при необходимости можно копировать однотипные объекты и только менять у них переменную.
Теперь все объекты, у которых в событии "OnDataChange" выбран универсальный скрипт будут работать в соответствии с условиями скрипта.