Новые возможности программы

Вызов скрипта (кнопки пользовательской панели) из другого скрипта и контекстного меню

При редактировании скрипта, в списке функций теперь доступны другие скрипты, что дает возможность их програмного вызова (запуска) с передачей и возвратом параметров. Вызов скриптов выполняется аналогично вызову встроенных функций.

Существующие скрипты в списке имеют следующий вид - %Script.Имя_панели.Имя_кнопки

Где Имя панели это имя пользовательской панели (tlb-файла) в котором содержится кнопка со скриптом, а Имя кнопки, это имя кнопки скрипта, присвоенное через контекстное меню Название. Кнопки для которых название не присвоено, получают автоматические имена вида Button1, Button2, и т.д. по их порядковому номеру на панели. Вызывать можно скрипты, которые расположены как на видимых, так и на скрытых панелях.

При вызове, можно передать вызываемому скрипту строку с входными параметрами, а также получить строку с результатом. Для этого, в вызываемом скрипте необходимо использовать зарезервированные переменные $PARAMETERS и $RESULT. Таким образом можно организовывать процедуры и функции, выполняющие типовые действия как это принято в полноценных языках программирования.

Пример взаимодействия скриптов с передачей параметров

;Текст основного скрипта (первая кнопка)
$S=%Script.Sample.Button2 Входные параметры
@Dialog.Message $S

;Текст вызываемого скрипта (вторая кнопка)
@Dialog.Message $Parameters
$Result=Возвращаемый результат

Sample.tlb (192 Bytes)Любая поданная на вход скрипта строка, внутри него становится доступной в переменной $PARAMETERS. А результат, который вызываемый скрипт присвоит переменной $RESULT, вернется вызывающему скрипту (в данном примере будет присвоен переменной $S).

Если необходимо передать или вернуть несколько параметров, то для этого нужно использовать функцию извлечения подстроки - @StringPart, например следующий скрипт выдаст сообщение со строкой 222:

$S=@StringPart 2 111 222 333
@Dialog.Message $S

По умолчанию StringPart делит строку на части по пробелам, но можно указать любой другой символ, например $S=@StringPart 2~111~222~333

Допустим, в скрипт нужно подать три строковых параметра, которые могут содержать пробелы. Тогда это можно сделать так:

$S1=…
$S2=…
$S3=…
%Library.MyScript $S1~$S2~$S3

А внутри скрипта снова разделить строку параметров на отдельные части:

$S1=@StringPart 1~$PARAMETERS
$S2=@StringPart 2~$PARAMETERS
$S3=@StringPart 3~$PARAMETERS

Аналогично скрипт, может возвращать несколько разных значений в переменной $RESULT.

Для передачи скрипту длинных списков, с неизвестным наперед количеством элементов, можно также использовать объект @Text. Например:

;Вызов скрипта
@Text.Add Первый элемент списка
@Text.Add Второй элемент списка
…
@Text.Add N-ый элемент списка
$S=@Text.Text
%Library.MyScript $S

;Текст скрипта
@Text.Text $PARAMETERS
$C=@Text.Count
@If $C=0 @Break Список параметров пуст
;обработка строк списка параметров от 1 до $С через @Text.Lines[$I]

Вызов скриптов из контекстого меню пользователя

В пользовательское контекстное меню (Сервис|Наcтройки|Правка|Контекстное меню пользователя) теперь можно добавлять не только вызовы команд основного меню, но и кнопок со скриптами. В списке они доступны с теми же именами вида %Script.Имя_панели.Имя_кнопки.