Организация диалога с помощью кнопочного меню

Организация диалога с помощью кнопочного меню

Вторым вариантом организации диалога, который мы рассмотрим, является кнопочное (командное) меню. Принцип его работы в нашем примере остается практически тем же, что и при описанной выше обработке аргументов командной строки — пользователь должен в диалоговом окне ввести символ, соответствующий одной из описанных в этом окне команд (рис. 7.2). Этот символ анализируется в сценарии, и в зависимости от его значения вызывается то или иное задание из файла PhoneBook.wsf.

Рис. 7.2. Кнопочное меню для работы с записной книжкой

Диалоговое окно, показанное на рис. 7.2, выводится в цикле while, в котором с помощью оператора switch анализируется введенный пользователем символ. Выход из цикла совершается, если введенный символ совпадает с "q" или "Q".

Текст сценария ComMenu.wsf, реализующего кнопочное меню для работы с записной книжкой, приводится в листинге 7.5.

Листинг 7.5. Командное меню для работы с записной книжкой

<job id="ComMenu">

<script language="VBScript" src="WSHInputBox.vbs"/>

<script language="JScript">

 var WshShell,SMenu,Res;

 WshShell=WScript.CreateObject("WScript.Shell");

 SMenu="[L] - Просмотр содержимого книжки ";

 SMenu+="[F] - Поиск по фамилии ";

 SMenu+="[A] - Добавление записи ";

 SMenu+="[D] - Удаление записи ";

 SMenu+="[Q] - Выход из сценария ";

 SMenu+=" Команда:";

 Res="";

 while ((Res!="q") && (Res!="Q")) {

  Res=WSHInputBox(SMenu,"Записная книжка");

  switch (Res) {

  case "L": {

   WshShell.Run("wscript PhoneBook.wsf //Job:SortName",1,true);

   break;

  }

  case "l": {

   WshShell.Run("wscript PhoneBook.wsf //Job:SortName",1,true);

   break;

  }

  case "F": {

   WshShell.Run("wscript PhoneBook.wsf //Job:FindName",1,true);

   break;

  }

  case "f": {

   WshShell.Run("wscript PhoneBook.wsf //Job:FindName",1,true);

   break;

  }

  case "A": {

   WshShell.Run("wscript PhoneBook.wsf //Job:AddRec",1,true);

   break;

  }

  case "a": {

   WshShell.Run("wscript PhoneBook.wsf //Job:AddRec",1,true);

   break;

  }

  case "D": {

   WshShell.Run("wscript PhoneBook.wsf //Job:DelRec",1,true);

   break;

  }

  case "d": {

   WshShell.Run("wscript PhoneBook.wsf //Job:DelRec",1,true);

   break;

  }

 }

}

</script>

</job>