Язык WordBasic - практический подход

Оператор WindowNewWindow



Синтаксис:
 
WindowNewWindow
 
Пример.
 
Эта макрокоманда создаст новый документ, базирующийся на шаблоне NORMAL, открывает копию другого окна, а затем упорядочивает их на экране:
 
Sub MAIN
FileNew .Template = “Normal”
Insert “Это образец текста.”
WindowNewWindow


WindowArrangeAll
End Sub
 
Документ в окне можно максимизировать или минимизировать и, что иногда более важно, задать размеры (в пунктах) самого окна.
Оператор DocMaximize позволяет увеличить активное окно с документом до максимального размера в окне WinWord. Функция DocMaximize() возвращает значение -1, если окно максимизировано, и 0, если нет. Аналогично работают оператор DocMinimize и функция DocMinimize(), только в отношении минимизации окна документа.
Оператор DocRestore не имеет операндов. Он восстанавливает размеры окна документа, если оно был максимизировано или минимизировано. Например:
 
If DocMinimize() <> 0 Then DocRestore
 
Окно документа можно из макрокоманды разделить на два отдельных окна, чтобы увидеть на экране две его разных части, либо произвести перетаскивание кусков текста из одной части в другую. Это действие эквивалентно выбору пункта Разбить в меню Окно.
Оператор DocMove высота, ширина позволяет переместить активное в позицию, заданную его аргументами. Значения указываются в пунктах (1 пункт = 1/72 дюйма, мм). Начало координат (0,0) в верхнем левом углу экрана. Например,
If DocMaximize() = 0 Then DocMove 15, 35

перемести окно на 15 пунктов вправо и на 35 пунктов вниз, соответственно DocMove 0,0 перемещает его к левому краю экрана. Подробно это будет показано на примере.
Оператор DocWindowHeight высота устанавливает высоту окна, а функция DocWindowHeight() возвращает высоту активного окна. Аналогично оператор DocWindowWidth ширина и функция DocWindowWidth() работают с его шириной. Существует оператор, позволяющий сразу установить размеры окна:

            DocSize ширина, высота
Несколько других операторов позволяют перемещать активное окно документа или его пиктограмму в пределах рабочей области.
Оператор DocWindowPosLeft позиция
даёт возможность переместить его на расстояние позиция
от левого края рабочей области. Если активное окно максимизировано, то выдаётся сообщение об ошибке, так как операция не может быть выполнена. Функция DocWindowPosLeft() возвращает величину этого расстояния.
Оператор DocWindowPosTop позиция и функция DocWindowPosTop() аналогичны DocWindowPosLeft, только отсчёт идёт от верхнего края рабочей области.
 
Пример, заимствованный из Справки:
 
Sub MAIN
по_горизонтали = DocWindowPosLeft()
по_вертикали = DocWindowPosTop()
MsgBox "От левого края:" + Str$(по_горизонтали) + Chr$(13) + \
  "Пунктов от верхнего края:" + Str$(по_вертикали), "Позиция окна документа"
r = DocWindowHeight()
Print r
End Sub
 
Несколько операторов WordBasic служат для работы с панелями окна, при разбиении окна документа на две части (аналог Окно*Разбить, Окно*Удалить разбиение).
Разбиение окна выполняется с помощью оператора DocSplit. В качестве его аргумента задаётся процент от высоты окна, где следует произвести разбиение. Так аргумент равный 50 делит окно документа пополам. Хотя аргумент и может принимать значения от 0 (отсутствие разбиения) до 100, следует избегать значений, близких к концам этого интервала. Уже при 90%, например следующая макрокоманда начнёт выдавать сообщение об ошибке.
DocSplit 91
OtherPane
ClosePane

Оператор OtherPane переносит точку вставки (IP) из одной панели в другую, ClosePane – закрывает панель (удаляет разбиение).
Две вспомогательные функции помогают определить имеется ли разбиение документа и как поделено его окно. Функция WindowPane() возвращает 0, при отсутствии разбиения, 1 – если IP находится в верхней панели, и 3, если IP – в нижней. Функция DocSplit() возвращает 0, если окно документа не разделено, а иначе процентное отношение в котором разделение поделило окно документа.
 
Оператор
Activate имеет следующий формат:
Activate ЗаголовокОкна, [НомерПанели]



Он переносит открытый документ Word, шаблон или макро в верх хипа. Проще говоря, при работе с несколькими документами, окно с указанным в Activate именем становится активным. Например, вы хотите открыть ещё один документ, но продолжить при этом работу с предыдущим. Для этого сохраним его имя в переменной первоеокно$, загрузим нужный файл, а затем снова сделаем первое окно активным:
первоеокно$ = WindowName$()
FileOpen "CHAP2.DOC"
Activate первоеокно$

Этот результат, конечно же, можно получить и другим способом. Подумайте как.
Необязательный аргумент НомерПанели активизирует верхнюю панель окна (если оно разделено на несколько частей) при значениях 1 или 2, либо нижнюю панель при значениях 3 или 4. В остальных случаях возникает ошибка 512. Значение аргумента ЗаголовокОкна должно совпадать с одним из имён в списке пункта Окно, главного меню. Следует учесть, что при смене каталога имена в этом списке изменяются, так как к ним добавляется путь.
 

Содержание раздела