Книга: Windows Script Host для Windows 2000/XP

Обработка событий, генерируемых элементами управления формы

закрыть рекламу

Обработка событий, генерируемых элементами управления формы

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

<input type="button" value="<<" name="btnFirst">

Для доступа к элементу управления используется объект Document, который соответствует загруженному в браузер HTML-документу. Ссылка на объект Document Хранится в свойстве Document объекта Application:

//Получаем ссылку на объект Document
doc = ie.Document;

Обработчики событий для элементов управления формы указываются тогда следующим образом:

doc.all.ControlName.EventName=FunctionName;

Здесь ControlName — имя элемента управления, EventName — имя обрабатываемого события, FunctionName — имя функции-обработчика, которая будет вызываться при наступлении события EventName. Событие, возникающее при нажатии на кнопку в форме, называется onclick, а событие, происходящее при изменении текста в поле ввода, — onchange:

//Указываем функции-обработчики нажатий на кнопки формы
doc.all.btnSave.onclick=btnSave_OnClick;
doc.all.btnCancel.onclick=btnCancel_OnClick;
doc.all.btnFirst.onclick=btnFirst_OnClick;
doc.all.btnPrevious.onclick=btnPrevious_OnClick;
doc.all.btnNew.onclick=btnNew_OnClick;
doc.all.btnDelete.onclick=btnDelete_OnClick;
doc.all.btnNext.onclick=btnNext_OnClick;
doc.all.btnFinal.onclick=btnFinal_OnClick;
//Указываем функции-обработчики изменения текста в полях ввода
doc.all.txtLastName.onchange = txtBoxOnChange;
doc.all.txtName.onchange = txtBoxOnChange;
doc.all.txtPhone.onchange = txtBoxOnChange;
doc.all.txtStreet.onchange = txtBoxOnChange;
doc.all.txtHouse.onchange = txtBoxOnChange;
doc.all.txtApp.onchange = txtBoxOnChange;
doc.all.txtNote.onchange = txtBoxOnChange;

Сами функции-обработчики нажатий на различные кнопки и изменения текста в полях ввода приведены с подробными комментариями в листинге 7.12.

Листинг 7.12. Функции-обработчики нажатия кнопок и изменения поло ввода

//Функция-обработчик нажатия на кнопку "Сохранить"
function btnSave_OnClick() {
 //Сохраняем данные из формы в XML-файле
 objListPersons.SaveData();
}
//Функция-обработчик нажатия на кнопку "Отменить"
function btnCancel_OnClick() {
 //Заново загружаем данные из текущего элемента массива
 //в форму
 objListPersons.LoadDialog();
 //Выводим сообщение в заголовке окна
 doc.title = "Данные восстановлены";
}
//Функция-обработчик нажатия на кнопку "<<"
function btnFirst_OnClick() {
 //Проверяем, были ли сделаны изменения в форме
 if (objListPersons.IsChanged) { //Изменения были сделаны
  //Сохраняем данные в XML-файле
  objListPersons.SaveData();
  //Заново загружаем данные из XML-файла в массив PersonArr
  objListPersons.FileToArray();
 }
 //Переходим к первой записи в массиве
 objListPersons.FirstRecord();
 //Загружаем в форму данные из массива PersonArr
 //для первой записи
 objListPersons.LoadDialog();
 //Выводим сообщение в заголовке окна
 doc.title = "Запись N " + (objListPersons.CurRecord + 1);
}
//Функция-обработчик нажатия на кнопку "<"
function btnPrevious_OnClick() {
 //Проверяем, были ли сделаны изменения в форме
 if (objListPersons.IsChanged) {  //Изменения были сделаны
  //Сохраняем данные в XML-файле
  objListPersons.SaveData();
  //Заново загружаем данные из XML-файла в массив PersonArr
  objListPersons.FileToArray();
 }
 //Переходим к предыдущей записи в массиве
 objListPersons.PreviousRecord();
 //Загружаем в форму данные из массива PersonArr
 //для текущей записи
 objListPersons.LoadDialog();
 //Выводим сообщение в заголовке окна
 doc.title = "Запись N " + (objListPersons.CurRecord + 1);
}
//Функция-обработчик нажатия на кнопку "Новая запись"
function btnNew_OnClick() {
 //Проверяем, были ли сделаны изменения в форме
 if (objListPersons.IsChanged) { //Изменения были сделаны
  //Сохраняем данные в XML-файле
  objListPersons.SaveData();
  //Заново загружаем данные из XML-файла в массив PersonArr
  objListPersons.FileToArray();
 }
 //Добавляем новую запись в XML-файл
 objListPersons.NewRecord();
 //Загружаем в форму данные из массива PersonArr
 //для добавленной записи
 objListPersons.LoadDialog();
 //Выводим сообщение в заголовке окна
 doc.title = "Добавлена новая запись";
}
//Функция-обработчик нажатия на кнопку "Удалить"
function btnDelete_OnClick() {
 //Удаляем текущую запись из XML-файла
 objListPersons.DelRecord();
 //Загружаем в форму данные из массива PersonArr
 //для первой записи
 objListPersons.LoadDialog();
 //Выводим сообщение в заголовке окна
 doc.title = "Запись удалена";
}
//Функция-обработчик нажатия на кнопку ">"
function btnNext_OnClick() {
 //Проверяем, были ли сделаны изменения в форме
 if (objListPersons.IsChanged) { //Изменения были сделаны
  //Сохраняем данные в XML-файле
  objListPersons.SaveData();
  //Заново загружаем данные из XML-файла в массив PersonArr
  objListPersons.FileToArray();
 }
 //Переходим к следующей записи в массиве
 objListPersons.NextRecord();
 //Загружаем в форму данные из массива PersonArr
 //для текущей записи
 objListPersons.LoadDialog();
 //Выводим сообщение в заголовке окна
 doc.title = "Запись N " + (objListPersons.CurRecord + 1);
}
//Функция-обработчик нажатия на кнопку ">>"
function btnFinal_OnClick() {
 //Проверяем, были ли сделаны изменения в форме
 if (objListPersons.IsChanged) { //Изменения были сделаны
  //Сохраняем данные в XML-файле
  objListPersons.SaveData();
  //Заново загружаем данные из XML-файла в массив PersonArr
  objListPersons.FileToArray();
 }
 //Переходим к последней записи в массиве
 objListPersons.FinalRecord();
 //Загружаем в форму данные из массива PersonArr
 //для текущей записи
 objListPersons.LoadDialog();
 //Выводим сообщение в заголовке окна
 doc.title = "Запись N " + (objListPersons.CurRecord + 1);
}
//Функция-обработчик изменения текста в полях ввода
function txtBoxOnChange() {
 //Устанавливаем признак изменения данных в форме
 objListPersons.IsChanged = true;
 //Выводим сообщение в заголовке окна
 doc.title = "Редактирование данных";
}
 

Оглавление книги


Генерация: 1.263. Запросов К БД/Cache: 4 / 1
поделиться
Вверх Вниз