Розглянемо найпоширеніший випадок, коли потрібно змінювати колір об'єкта при зміні значення пов'язаної з ним змінної. Для цього:
1. В якості "Змінна" об'єкта вибираємо потрібну змінну.
2. У інспекторові об'єктів переходимо на вкладку "Події" і двічі натискаємо за подією "OnDataChange" (змінилося значення змінної пов'язаної з об'єктом).
Пишемо скрипт. Якщо буде одна умова можна використовувати конструкцію "if. Then". Наприклад, для зміни кольору поля:
Звичайний скрипт, якщо умова одна:
begin
if Field1.AsInt = 1 then // якщо значення змінної поля дорівнює 1, то
Field1.Color: = clGreen // змінити колір поля на зелений
else // інакше
Field1.Color: = clRed; // змінити колір поля на червоний
end.
Компілюємо скрипт через меню "Скрипт -> Компілювати" або натиснувши клавішу "F9". Якщо компіляція пройшла успішно можна запустити клієнт Simple-Client і перевірити результат.
Якщо необхідно, щоб безліч однотипних об'єктів міняли колір за однаковими умовами, то рекомендується написати один універсальний скрипт використовуючи універсальний об'єкт "Sender". "Sender" - це якийсь (заздалегідь невідомий) об'єкт, який викликав скрипт, тобто це може бути зображення, або текст, або фігура, або поле і т.д.
Універсальний скрипт, якщо умова одна (можна застосувати до будь-якого об'єкта).
begin
if Sender is TM_Object then // перевіряємо, що Sender це об'єкт
with Sender as TM_Object do // наводимо Sender до типу "TM_Object"
if AsInt = 1 then // якщо значення змінної об'єкта дорівнює 1, то
Color: = clGreen // змінити колір об'єкта на зелений
else // інакше
Color: = clRed; // змінити колір об'єкта на червоний
end.
Якщо умов кілька, то рекомендується використовувати конструкцію "case. Of".
Звичайний скрипт, якщо умов кілька:
begin
case Field1.AsInt of // якщо значення змінної поля одно:
1. 3. Field1.Color: = clRed; // від 1 до 3 - змінити колір поля на червоний
4. Field1.BorderColor: = clGreen; // 4 - змінити колір рамки поля на зелений
5. Field1.FontColor: = $ FFFF00; // 5 - змінити колір шрифту поля на жовтий
6. Field1.Color: = RGB (0. 0. 255); // 6 - змінити колір поля на синій
end;
end.
Універсальний скрипт, якщо умов кілька (можна застосувати до будь-якого об'єкта).
begin
// Sender - це об'єкт, який викликав скрипт (наприклад поле, зображення і т.д.)
if Sender is TM_Object then // перевіряємо, що Sender це об'єкт
with Sender as TM_Object do // наводимо Sender до типу "TM_Object"
case AsInt of // якщо значення змінної пов'язаної з об'єктом одно:
1. 5. Color: = clRed; // від 1 до 5 - змінити колір на червоний
6. 7. Color: = clGreen; // 6 або 7 - змінити колір на зелений
8. Color: = clYellow; // 8 - змінити колір на жовтий
end;
end.
Розглянуті універсальні скрипти можна встановити будь-якого об'єкта, для цього:
1. Виділяємо необхідний об'єкт і через інспектор об'єктів переходимо на вкладку "Події".
2. В якості "OnDataChange" вибираємо зі списку наш створений скрипт.
3. Не забуваємо зв'язати об'єкт з потрібною змінної.
Тепер всі об'єкти, у яких в подію "OnDataChange" обраний універсальний скрипт будуть змінювати свій колір відповідно до умов скрипта.
За допомогою параметра "Sender" можна звертатися тільки до властивостей класу "TM_Control". Для звернення до решти властивостями необхідно привести "Sender" до потрібного типу. Наприклад, якщо необхідно в універсальному скрипті змінити властивість "Колір рамки поля", то необхідно привести "Sender" до типу "TM_Field":
Універсальний скрипт для об'єкта "Поле".
begin
if Sender is TM_Field then // перевіряємо, що Sender це поле
with Sender as TM_Field do // наводимо Sender до типу "TM_Field"
case AsInt of // якщо значення змінної пов'язаної з полем одно:
1. BorderColor: = clGreen; // змінити колір на зелений
2. BorderColor: = clRed; // змінити колір на червоний
3. BorderColor: = clYellow; // змінити колір на жовтий
4. BorderColor: = clGray; // змінити колір на сірий
end;
end.