Применение условий в макросах

В примерах макросов, которые мы приводили раньше, использовался последовательный порядок выполнения макрокоманд. Однако, как и в любой программе, порядок выполнения макрокоманд в макросе может быть изменен. Для этого вводятся условия выполнения или пропуска макрокоманд. Эти условия задаются в виде выражений в специальном столбце, который появляется в окне Конструктора макросов, если нажата кнопка Условия (Conditions) на панели инструментов (рис. 11.4).

Замечание

Как и в случае с группами макросов, можно настроить параметры системы таким образом, чтобы этот столбец появлялся в Конструкторе макросов всегда.

Применение условий в макросах

Рис. 11.4. Применение условий в макросах

На рис. 11.4 приведено окно Конструктора для группы макросов "Наклейки для клиентов" (Customer Label Dialog), используемой для печати отчета в виде наклеек на конверты. Причем можно напечатать наклейки сразу для всех клиентов или для клиентов одной страны, выбранной из списка. В окне виден столбец "Условие" (Condition). Если условие, заданное в этом столбце, истинно, выполняется макрокоманда, находящаяся в этой строке. Если условие ложно, соответствующая макрокоманда пропускается и выполняется следующая.

Если требуется при истинности условия выполнить сразу несколько макрокоманд, то для всех макрокоманд, кроме первой, в столбце "Условие" (Condition) ставится многоточие (...). Условие, которое должно проверяться, пишется в строке первой макрокоманды. Тогда, если оно истинно, выполняется весь набор макрокоманд от этого условия и до следующей макрокоманды с заданным условием, до следующего макроса или до конца макроса. Если условие ложно, пропускаются все команды, помеченные многоточием, включая макрокоманду с заданным условием. Далее выполняется макрокоманда, следующая за пропущенными, в которой содержится новое условие или поле "Условие" (Condition) не заполнено. Таким образом, в отличие от "большинства языков программирования, в макросах нет альтернативного ветвления. Для того чтобы создать макрос с двумя альтернативными ветвями, нужно сначала ввести условие и определить макрокоманды, исполняемые при выполнении этого условия. Сразу после них необходимо указать обратное условие и определить макрокоманды, исполняемые в альтернативной ветви. Затем можно ввести макрокоманды, которые исполняются безусловно. Такой способ ветвления используется, например, в макросе "Просмотр" (Preview), который связан с кнопкой Просмотр (Preview) в данной форме. Если пользователь выбрал вариант для всех стран (АН Countries), что определяется значением 1 элемента управления ПечатьНаклеек (PrintLabelFor), то отчет открывается в режиме Предварительного просмотра и форма закрывается. Если выбран переключатель для конкретной страны (Specific Country)", а страна не выбрана (значение поля со списком "ВыборСтраны" (SelectCountry) не задано), то выдается сообщение, фокус устанавливается в поле со списком для выбора страны и выполнение макроса прекращается. Если страна задана, то отображается отчет для выбранной страны и форма закрывается.

В этом макросе используется макрокоманда ОстановитьМакрос (StopMacro). Она позволяет прекратить выполнение макроса, при этом все макрокоманды, следующие по порядку за макрокомандой ОстановитьМакрос (StopMacro), не будут выполняться.

Замечание

Макрокоманду ОстановитьМакрос (StopMacro) имеет смысл использовать, только если за ней идут другие макрокоманды, которые не следует выполнять при некотором условии. Как уже было сказано выше, для указания конца макроса специальной макрокоманды не требуется.