function Main() {
var Res;
//Создаем объект WshShell
WshShell = WScript.CreateObject('WScript.Shell');
//Определяем пути к файлам
InitPath();
LastName=InputName();
//Запрос на удаление записи
Res=WshShell.Popup('Удалить фамилию '+LastName+
' из
'+PathBook+'?',0,
'Работа с XML-файлом',vbQuestion+vbYesNo);
if (Res==vbYes) { //Нажата кнопка Да
//Ищем в книжке нужную фамилию и удаляем относящуюся к
//ней запись
FindAndDelRecord();
}
}
/******************* Начало **********************************/
Main();
/************* Конец *********************************************/
</script>
</job>
Глава 7
Способы организации диалогового режима работы сценариев
В этой главе на примере работы с записной книжкой будут рассмотрены три способа организации из сценария диалога с пользователем.
Во-первых, мы еще раз подробно остановимся на том, как можно использовать параметры командной строки для запуска различных заданий из многозадачного WS-файла, который в нашем случае будет реализовывать несколько функций для работы с записной книжкой.
Во-вторых, для того же WS-файла мы создадим кнопочное (командное) меню, в котором пользователь сможет выбрать нужное ему действие с помощью ввода определенных символов в диалоговом окне.
Наконец, будет показано, как можно организовать в сценарии полноценный пользовательский интерфейс с помощью HTML-форм и браузера Internet Explorer.
Многозадачный сценарий для работы с записной книжкой
В качестве примера рассмотрим сценарий для работы с записной книжкой в XML-формате (структура файла book.xml, в котором хранится записная книжка, описана в предыдущей главе), в котором будут реализованы следующие функции:
? просмотр всех записей в алфавитном порядке;
? поиск записей по фамилии;
? добавление и удаление записей.
Каждая из этих задач реализуется в виде отдельного задания в файле PhoneBook.wsf (листинг 7.1).
<package>
<!-- ****************** Просмотр всех записей ******************* -->
<job id='SortName'>
…
</job>
<!-- *************** поиск записей по фамилии ************** -->
<job id='FindName'>
…
</job>
<!-- *************** удаление записи по фамилии *************** -->
<job id='DelRec'>
…
</job>
<!-- *************** добавление записи *************** -->
<job id='AddRec'>
…
</job>
</package>
Некоторые функции (например, настройка пути к XML-файлу) должны присутствовать во всех заданиях, поэтому такие общие функции мы вынесем в отдельный файл Usage.js, который будет подключаться в каждом из заданий следующим образом:
<script language='JScript' src='Usage.js'/>
В файл Usage.js помещены следующие функции:
? конструктор объекта Person
(одна запись из книжки);
? функция GetTagVal(
, которая возвращает значения тега tgName
obj
? функция PersonToArray(
, которая заполняет поля экземпляра PersonRec
объекта Person
данными из соответствующих XML- элементов и добавляет сформированную запись в массив PersonArr
;
? функции TopReport(
и BottomReport (
, с помощью которых в выходной файл печатается заголовок отчета и итоговая информация соответственно;
? функция PrintPerson(
, в которой происходит вывод данных из полей объекта PersonRec
в выходной файл;
? функция MakeOut()
, которая обеспечивает запуск Блокнота и открывает в нем выходной файл;
? функция InitPath(), в которой строятся пути к XML-файлу, содержащему данные, и выходному файлу.
Usage.js объявляются глобальные переменные и константы. Полностью содержимое файла Usage.js приведено в листинге 7.2.
/*******************************************************************/