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

       

Работа с окнами


 
При открытии каждого документа и при редактировании макрокоманды WinWord создает новое окно, в котором и происходит работа с ними. Однако в каждый момент времени только одно из этих окон активно. В меню Окно (Windows) имеется список открытых окон, причем активное окно помечено галочкой. Группа операторов и функций языка WordBasic позволяет узнать номер активного окна, его заголовок, сделать активным другое окно и многое другое. Посмотрим, как это делается.
Число открытых окон возвращает функция CountWindows().
Функция Window() возвращает номер активного окна в списке окон меню Окно. При этом 1 – соответствует первой позиции в списке, 2 – второй и т. д. Если открытых окон нет, то Window() возвращает 0 (ноль). Обратите внимание, что WinWord выводит список заголовков окон в алфавитном порядке, при этом изменение текущего каталога может изменить порядок следования заголовков в этом списке, так как для текущего каталога выводится только имя файла, а для файлов в других каталогах в заголовке окна указывается еще и полный путь.
Получить заголовок открытого окна можно с помощью функции WindowName$(номер), где номер – номер заголовка в списке. Если номер опущен или равен 0,
возвращается заголовок активного окна.
WindowList номер – делает активным окно с заданным номером. Если номер больше числа открытых окон в списке, то диагностируется ошибка. Этот оператор кроме всего весьма полезен при отладке макрокоманд.
Два оператора NextWindow и PrevWindow позволяют циклически перемещаться по списку окон в обоих направлениях. NextWindow – активирует окно, находящееся в списке непосредственно после активного окна. Если имя активного окна стоит в списке последним, то активизируется окно, стоящее в списке первым. Если активное окно единственное в списке, ничего не происходит. Оператор PrevWindow работает точно так же, но в обратном направлении.
 
Пример.
 
Оператор PrevWindow часто используется для переключения между окном редактирования макрокоманд и окном документа.


Оба этих окна должны быть предварительно открыты.
 
Sub MAIN
If DocMaximize() = 0 Then DocMaximize
MsgBox "Нажмите OK, чтобы перейти к предыдущему окну"
PrevWindow
MsgBox "Теперь нажмите OK, чтобы вернуться."
PrevWindow
End Sub
 
Чтобы отличить окно, в котором происходит редактирование, от окон документов,
используется функция IsMacro([номер]). Она возвращает -1, если это так, и 0, если нет.
Оператор WordNewWindow – открывает новое окно, содержащее документ, находящийся в активном окне. К заголовкам обоих окон WinWord добавляет двоеточие номер (соответствует выбору пункта Новое окно в меню Окно).
Оператор WindowArrangeAll упорядочивает расположение окон на экране таким образом, чтобы они не перекрывались (соответствует выбору пункта Упорядочить все в меню Окно).
Пример: Активизация первого окна, содержащего документ TEST.DOC:
 
numwin = CountWindows()
If numwin <> 0 Then
      i = 1
      While i <= numwin And leave <> 1
                  winname$ = WindowName$(i)
                  If InStr(winname$, "TEST.DOC") Then leave = 1
                  If leave <> 1 Then i = i + 1
      Wend
End If
If InStr(winname$, "TEST.DOC") Then
      WindowList i
Else
      MsgBox "В списке нет окна, содержащего TEST.DOC."
End If
 

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