Мигание цветом
> [HTML Version](flashing.html)
Рассмотрим случай, когда нужно реализовать мигание объекта при определенном значении связанной с ним переменной. Для этого:
1. В свойстве "Переменная" объекта выбираем нужную переменную.
2. В инспекторе объектов переходим на вкладку "События" и дважды кликаем по событию "OnDataChange" (изменилось значение переменной связанной с объектом).
Важно\! Если необходимо управлять миганием множества однотипных объектов по одинаковым условиям, то рекомендуется написать один [универсальный](script-types.md) скрипт(см. примеры ниже), тогда не нужно будет писать отдельный скрипт для каждого объекта, что значительно ускорит разработку проекта, а также повысит скорость его работы.
**Примеры скриптов**
**(./images/tog_code_1.png) 1. Простой скрипт, если условие одно**
````
begin
if Image1.AsInt = 1 then // если значение переменной изображения = 1, то
Image1.FlashColor := clRed // включить мигание изображения красным цветом
else // иначе
Image1.FlashColor := clNone; // отключить мигание изображения
end.
````
````
**(./images/tog_code_1.png) 2. Универсальный скрипт, если условие одно (можно применить к любому объекту)**
````
begin
if Sender is TM\_Object then // проверяем, что Sender это объект
with Sender as TM\_Object do // приводим Sender к типу "TM\_Object"
if AsInt = 1 then // если значение переменной объекта равно 1, то
FlashColor := clRed // включить мигание объекта красным цветом
else // иначе
FlashColor := clNone; // отключить мигание объекта
end.
````
````
**(./images/tog_code_1.png) 3. Простой скрипт, если условий несколько**
````
begin
// отключаем мигание в начале скрипта - таким образом не нужно будет
// отдельно отключать мигание для каждого условия ниже
Image1.FlashColor := clNone;
case Image1.AsInt of // если значение переменной равно:
1 : Image1.Color := clYellow; // 1 - изменить цвет на желтый
// 2 – изменить цвет на "без цвета" - для того, чтобы мигание было только
// зеленым цветом, а не с желтого на зеленый
2 :
begin
Image1.Color := clNone;
Image1.FlashColor := clGreen; // включить мигание зеленым цветом
end;
3 : Image1.Color := clBlue; // 3 – изменить цвет на синий
end;
end.
````
````
**(./images/tog_code_1.png) 4. Универсальный скрипт, если условий несколько (можно применить к любому объекту)**
````
begin
// Sender - это объект, который вызвал скрипт(например поле, изображение и т.д.)
if Sender is TM\_Object then // проверяем, что Sender это объект
with Sender as TM\_Object do // приводим Sender к типу "TM\_Object"
begin
// отключаем мигание в начале скрипта - таким образом не нужно будет
// отдельно отключать мигание для каждого условия ниже
FlashColor := clNone;
case AsInt of // если значение переменной равно:
1 : Color := clYellow; // 1 - изменить цвет на желтый
// 2 – изменить цвет на "без цвета" - для того, чтобы мигание было только
// зеленым цветом, а не с желтого на зеленый
2 :
begin
Color := clNone;
FlashColor := clGreen; // включить мигание зеленым цветом
end;
3 : Color := clBlue; // 3 – изменить цвет на синий
end;
end;
end.
````
---
````
Универсальный скрипт можно применить к любому объекту, для этого требуется:
1. Выделить необходимый объект(или множество объектов) и через инспектор объектов перейти на вкладку "События".
2. В свойстве "OnDataChange" выбрать из списка наш созданный скрипт - он привяжется ко всем выделенным объектам.
3. Не забыть связать объект(объекты) с нужной переменной.
4. В дальнейшем, при необходимости можно копировать однотипные объекты и только менять у них переменную.
Теперь все объекты, у которых в событии "OnDataChange" выбран универсальный скрипт будут работать в соответствии с условиями скрипта.
Все объекты в проекте для которых применяется мигание будут мигать синхронно, по-умолчанию с частотой 1 секунда. Для управления частотой мигания нужно [создать новый скрипт](via-script-editor.md) с типом события "[Запуск проекта](launch-project.md)" и при помощи процедуры [SetFlashInterval](setflashinterval.md) установить требуемую частоту мигания. Следует учитывать, что процедура SetFlashInterval не работает в web-клиентах.