Здравствуйте.
Никак не могу понять, как работает и работает ли вообще выполнение скриптов по событию OnDataChangeEx. Создаю 2 переменные типа BOOL. Создаю объект Shape (квадратную фигуру). Одну из переменных назначаю этой фигуре как основную, другую как дополнительную. Пишу 2 универсальных скрипта, один для поворота фигуры на 45 градусов, другой - на изменение цвета в зависимости от значений привязанных переменных. Назначаю эти скрипты на события OnDataChange и OnDataChangeEx Ниже привожу код скриптов:
Изменение угла поворота:
begin
If Sender is TM_Object then
with Sender as TM_Object do
if AsInt = 1 Then
Angle := 45
Else
Angle := 0;
end.
Изменение цвета:
begin
If Sender is TM_Object then
with Sender as TM_Object do
if AsInt = 1 Then
Color := ClRed
Else
Color := RGB(191,191,191);
end.
По моей логике должно работать так: изменяю основную переменную - фигура должна поворачиваться, изменяю дополнительную - фигура должна менять цвет. Эти события не должны зависеть друг от друга и срабатывать всякий раз, когда я меняю любую из привязанных переменных.
Вывожу на лист проекта эту фигуру и два поля, где можно менять привязанные переменные. При изменении основной переменной, которая отвечает за поворот фигуры скрипт отрабатывает без замечаний. А вот при изменении дополнительной переменной скрипт не работает совсем. Но однако, если я один раз меняю основную переменную, потом дополнительную, скрипт по событию OnDataChangeEx выполняется один раз. Снова меняю дополнительную переменную - скрипт по событию OnDataChangeEx не выполняется. Что я делаю не так?
Версия SS2 - 2.3.6.7
Разобрался, немного почитав форум, в скрипте на событие OnDataChangeEx надо проверять условие на изменение дополнительной переменной, вот так: if VariableEx.AsInt = 1 Then ... Тогда всё будет работать.