Здравствуйте.
могу ли я вызвать один скрипт в другом в проекте?
Если требуется вызывать свои процедуры/функции в разных скриптах, то для этого можно использовать
глобальный модуль.
как мне вызвать метод который я написала в теле этого же скрипта?
Пример использования подпроцедур можно найти
по ссылке.
Приведенный код выполняется по нажатию на кнопку? Тогда подпроцедура Delay работать не будет, т.к. данный код будет выполнен один раз при нажатии на кнопку, а также из-за того что в подпроцедуре используется локальная переменная aTimer. Локальные переменные скрипта инициализируются при каждом выполнении скрипта, поэтому их нельзя использовать для подсчета секунд.
Код "While (Shape2.X > 192) AND (Shape3.X >232) do" в данном скрипте также не имеет смысла, т.к. выполнится мгновенно и это будет аналогично записи:
Shape2.X := 192;
Shape3.X := 232;
Если в скрипте требуется написать обратное условие, то используйте ключевое слово else:
if S7Tag_Q00.AsBool then
begin
Button1.Color := clGreen;
Button2.Color := clRed;
end else
begin
Button1.Color := clRed;
Button2.Color := ClGreen;
end;
Судя по Вашему скрипту, Вы пытаетесь сделать задержку при выполнении скрипта. В скаде задержку можно реализовать только на основе таймеров или событий.
UPD: начиная с версии 2.6.14.0 добавлена возможность запускать задержки через RunDelay.Таймерные функции рассмотрены
по ссылке. Пример работы с таймерами можно найти в демо-проекте -> страница "Скрипты" -> "Простые скрипты (1)" -> пример №3. Пример простейшего таймера можно посмотреть
по ссылке. Реализация подобных задержек - это максимально плохой и ненадежный способ. Правильнее и проще решать подобные задачи на контроллере.
Также, Вы можете прислать на support@simple-scada.com текущую версию Вашего проекта и максимально подробно описать, что именно требуется сделать. Возможно мы предложим решение.