Разрешает или запрещает вычисление значения полей, переменных, элементов массивов, функций и выражений, которые заключены в разделители, определяющие границы для слияния текста, а также определяет, куда направлять вывод результатов слияния текста.

SET TEXTMERGE [ON | OFF] [TO [FileName] MEMVAR VarName [ADDITIVE]]
[WINDOW WindowName] [SHOW | NOSHOW]

Параметры

ON

Определяет, что поля, переменные, элементы массивов, функции и выражения, заключенные в разделители, задающие границы слияния текста вычисляются и выводятся, если они помещены в строках после символов \ или \\, либо в строках, находящихся между командами TEXT и ENDTEXT. Следующий короткий пример программы показывает, как содержимое переменной gcTodayDate и значения, возвращаемые функциями DATE( ) и TIME( ) вычисляются, когда командой SET TEXTMERGE задана установка ON. Переменная gcTodayDate, функции DATE( ) и TIME( ) вычисляются потому, что они заключены в разделители, задающие границы текстового слияния и команда SET TEXTMERGE задает установку ON.
  Скопировать код
CLEAR
SET TALK OFF
STORE 'Сегодня: ' TO gcTodayDate
SET TEXTMERGE ON
\<<gcTodayDate>>
\\<<DATE( )>>
\Время:
\\ <<TIME( )>>
Здесь показан результат вывода при запуске программы 1 января 1998г:
  Скопировать код
Сегодня: 01/01/98
Время: 10:55:19
OFF

(По умолчанию) Определяет, что поля, переменные, элементы массивов, функции и выражения выводятся так, как они записаны вместе с окружающими их разделителями, задающими границы слияния текста. Отметьте разницу в выводе результатов по сравнению с предыдущим примером когда командой SET TEXTMERGE задана установка OFF:
  Скопировать код
CLEAR
SET TALK OFF
STORE 'Сегодня: ' TO gcTodayDate
SET TEXTMERGE OFF
\<<gcTodayDate>>
\\<<DATE( )>>
\Время:
\\ <<TIME( )>>
Здесь показан результат вывода этой программы:
  Скопировать код
<<gcTodayDate>><<DATE( )>>
Время: <<TIME( )>>
TO [ FileName]

Определяет что вывод из строк, начинающихся символами \, \\ или находящихся между командами TEXT ... ENDTEXT направляется в текстовый файл. Помимо основного окна Visual FoxPro, куда текст по умолчанию направляется всегда, вы также можете направить вывод в текстовый файл, указав его имя в FileName. Если файл с указанным именем не существует, будет создан новый файл. Если файл с таким именем уже имеется и командой SET SAFETY задана установка ON, вы получите возможность перезаписать существующий файл. Текстовый файл открывается на низком уровне (low-level) и его дескриптор (handle) запоминается в системной переменной _TEXT. Вы можете закрыть файл, использовав команду SET TEXTMERGE TO без дополнительных аргументов. Если в системной переменной _TEXT ранее был запомнен дескриптор другого файла, этот файл будет закрыт.
MEMVAR VarName

Определяет имя переменной, в которую направляются результаты, получаемые при выводе посредством TEXTMERGE. Поскольку команда SET TEXTMERGE имеет глобальный диапазон действия и может распространяться на несколько процедур или методов, переменная, указанная в MEMVAR VarName может оказаться в некоторых из них недоступной. Но и в этом случае команда будет выполняться, ничего не направляя на вывод. Вы можете управлять видимостью MEMVAR VarName, объявляя переменную как PUBLIC или PRIVATE (а также LOCAL - прим. переводчика). Эта фраза может также приводить к рекурсии, которую вы можете предотвратить при помощи команды SET TEXTMERGE TO, как показано в в следующем примере:
  Скопировать код
USE LABELS
STORE "" to myVar, myVar2

SET TEXTMERGE ON TO MEMVAR myVar && Выполнение TEXTMERGE начинается со следующей строки

\Hey Now
\<<date()>>

SCAN
\ <<name>>
ENDSCAN

* Удалите комментарий со строки, содержащей SET TEXTMERGE TO предотвращая ошибку рекурсии
* с переменными myVar и myVar2.
* SET TEXTMERGE TO

TEXT TO myVar2
<b> Здесь кое-что на HTML. </b>
Это HTML
<<date()>>
ENDTEXT

SET TEXTMERGE OFF
USE

CLEAR
? myVar && Результат TEXTMERGE помещен в переменные
? myVar2
ADDITIVE
Определяет что вывод из строк, начинающихся символами \, \\ или находящихся между командами TEXT ... ENDTEXT добавляется к содержимому существующего файла или переменной памяти. Для дальнейшей информации по направлению вывода при слиянии текста см. _TEXT System Variable.

WINDOW WindowName
Определяет что вывод из строк, начинающихся символами \, \\ или находящихся между командами TEXT ... ENDTEXT направляется в определенное пользователем окно, а не в главное окно Visual FoxPro, как это принято по умолчанию. WindowName определяет имя окна, в которое направляется вывод. Окно должно быть создано командой DEFINE WINDOW перед тем, как в него будет направлен вывод. Окно обязательно должно быть активным или видимым.
SHOW | NOSHOW

(По умолчанию) SHOW делает видимым вывод результатов текстового слияния. NOSHOW подавляет вывод результатов. По умолчанию вывод, формируемый командами \, \\ и TEXT ... ENDTEXT посылается в главное окно Visual FoxPro или активное окно, определенное пользователем.

Замечания

Команды \, \\ и TEXT ... ENDTEXT используются для слияния текста с содержимым таблиц, переменных, элементов массивов, значений,  возвращаемых функциями и выражений. Если поле, переменная, элемент массива, функция или выражение заключено в ограничители, определяющие текстовое слияние (по умолчанию << и >>), оно может быть вычислено и слито с текстом. Эта возможность позволяет вам создавать письма, программы и шаблоны для создания программ.

Коменда SET TEXTMERGE определяет, как вычисляются поля, переменные, элементы массива, функции или выражения, заключенные в ограничители, определяющие текстовое слияние. Она также позволяет вам направлять вывод в главное окно Visual FoxPro, окно, определенное пользователем или в файл.

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

См.также