|
|||
реклама у нас | |||
*** |
VB в ипостаси Script - 2Автор: Константин НОСОВ Продолжение, начало см. в izone449 VBScript и элементы управления Создание интерактивных web-приложений, взаимодействующих с пользователем через элементы управления — одно из главных применений VBScript. Для этого VBScript поддерживает объектно-ориентированные средства, наделяющие его объекты методами, свойствами и событиями. Для тех, кто недостаточно знаком с принципами объектно-ориентированного программирования, кратко поясним, что это означает. Метод объекта — это процедура или команда, сообщающая объекту, что нужно выполнить некоторую задачу. Свойство — это один из параметров объекта. Наконец, событие — это сигнал, подаваемый, когда с объектом что-то происходит. Используя методы, свойства и события, разработчик может осуществлять полный контроль над объектом. Например, если в программе нужно обработать нажатие кнопки, разработчик должен запрограммировать соответствующее событие. Если же необходимо в текстовое поле ввести какое-либо значение, обращаются к соответствующему свойству поля. В далбнейшем мы неоднократно будем со всем этим сталкиваться на примерах. Обычно для создания web-приложений используют стандартные элементы управления: поля ввода, списки строк, разворачивающиеся списки, кнопки и т.д. Собственно говоря, эти элементы относятся к языку разметки HTML, но без использования сценариев, в т.ч. на VBScript, они практически не способны выполнять какую-либо полезную работу. Кроме традиционных элементов управления, VBScript позволяет принимать ввод и от других объектов HTML-кода, которые элементами управления по существу не являются. Например, для текстового параграфа можно запрограммировать обработку таких событий как нажатие (клик) мышки или наведение курсора мышки на объект. Для иллюстрации работы с элементами управления начнем, как всегда, с простых примеров. На прошлом уроке мы разобрали создание на VBScript функции, возвращающей максимум двух чисел. Сейчас мы дадим этой функции практическое применение, создав с помощью VBScript небольшой калькулятор. Включим в web-страницу форму ввода: Кратко опишем содержимое нашей формы. Для ввода чисел создано два поля (с именами N1 и N2), для выбора операции — разворачивающийся список с именем D1 (он содержит три элемента для выбора указания нужной операции), поле для вывода результата (T1) и кнопку запуска (ExeBtn). Описанные элементы — все, что нужно для создания интерфейса нашего примера. Перейдем к программной части. Функцию Max(x1,x2) мы создали на прошлом уроке. Поэтому ее текст без изменения включим в <SCRIPT>-секцию где-нибудь в преамбуле документа. В эту секцию также будем включать и другие функции примера. Совершенно аналогично строится функция Min(x1,x2) для вычисления наименьшего из аргументов x1 и x2. Для полноты картины приведем листинг последней: Остается ввести код, обрабатывающий нажатие кнопки Вычислить. Для этого создадим процедуру-событие, вызываемую при нажатии кнопки ExeBtn нашей формы. Наиболее простой вариант выглядит так: Разберем, что здесь написано. Первое, на что стоит обратить внимание — имя процедуры. Оно выбрано неслучайно. Первая его часть (до подчеркивания, т.е. «ExeBtn») соответствует имени элемента управления, к которому относится процедура — в данном случае к кнопке. Вторая часть отвечает событию элемента управления. Одним из стандартных событий для кнопки является нажатие (OnClick), что и отражено в имени процедуре. Если соблюсти эти несложные правила относительно имен, VBScript сам поймет, какие события каких объектов обрабатываются в процедурах. Другое важное преимущество такого подхода с именованием процедур-событий состоит в их мнемоничности, что облегчает восприятие кода. В теле процедуры сначала переменной S присваивается значение, соответствующее выбранному пункту выпадающего списка, затем переменные R1, R2 получают значения, набранные в текстовых полях N1 и N2 нашей формы. Обратите внимание, что ссылка на значение элемента управления включает не только его имя, но и имя формы, содержащей этот элемент. Для того чтобы корректно присвоить этим переменным численные значения, используем функцию CDbl, преобразующую строку в переменную подтипа Double. Смысл других операторов совершенно прозрачен: в зависимости от значения S в поле результата T1 записывается значение вычисленной функции. Несмотря на иллюстративность данного примера, в нем отражены основные принципы взаимодействия VBScript с содержимым форм. Принципы эти просты и естественны: в формы вставляются элементы управления, а к HTML-документу присоединяется сценарий, обрабатывающий события. Описанный только что способ обработки событий элементов — наиболее часто используемый, но вовсе не единственный. Если код обработки события небольшой по объему, то иногда удобнее обработку события включать в само описание элемента управления. Проиллюстрируем это следующим примером: Этим кодом создается небольшая форма, содержащая одно текстовое поле и кнопку. Принципиальное отличие от предыдущего примера заключается в способе обработки нажатия на кнопку: весь код обработки включен в атрибут OnClick. Сама же процедура обработки очень проста — в переменную S заносится значение введенного в поле T1 числа, а в окне сообщения выводится значение S и его квадрат. Думаю, приведенный код в особых комментариях не нуждается, следует только обратить внимание на то, что операторы VBScript (которые при обычной записи занимают одну отдельную строку) отделены двоеточиями (:). Наконец, существует еще один способ написания процедуры-обработки события, отличный от предыдущих. Он состоит в том, что на элемент управления и обрабатываемое событие указывает сам <SCRIPT>-фрагмент. Предыдущий пример при этом будет выглядеть так: из описания кнопки в секции <INPUT> исключается атрибут OnClick, для которого создается отдельный сценарий следующего вида: В этом варианте информация об элементе управления и обрабатываемом событии содержится в дополнительных атрибутах (FOR и EVENT) сценария, кроме того, код обработки заключен в самом <SCRIPT>-фрагменте, а не в процедуре Sub. Как видим, VBScript прекрасно справляется с интерактивностью, поэтому и находит (как и JavaScript) широкое применение при проверке заполненных форм перед отправкой на сервер. Читатель, хотя бы один раз регистрировавшийся на какой-нибудь web-службе, безусловно, сталкивался с этой процедурой. Для иллюстрации возможностей VBScript для проверки ввода данных в форму создадим небольшой, но полнофункциональный пример. Для того чтобы сделать пример максимально похожим на имеющиеся в Сети, воспользуемся объектной моделью браузера, позволяющей с помощью сценария управлять окном браузера и загруженным в него документом. О самой объектной модели было подробно рассказано в статьях автора о JavaScript, поэтому мы ограничимся ссылкой на них, чтобы избежать повторений. Создадим форму, содержащую два поля (для ввода имени и возраста пользователя) и две кнопки (для отправки содержимого и очистки полей): С кнопкой Очистить все понятно: при ее нажатии в поля заносятся пустые строки, тем самым очищается содержимое полей. Для ясности стоит сказать, что атрибут OnClick кнопки Очистить представляет строку, заключенную в двойные кавычки, а значениям полей ввода (T1.Value и T2.Value) присваиваются пустые строки в виде пары одиночных кавычек без пробела между ними. Основную работу выполняет другая кнопка — Отправить. Напишем процедуру для обработки ее нажатия: Здесь использованы дополнительные процедуры InvalidData и SuccessEnter, которые мы приводим ниже: Теперь нам остается объяснить, как это работает. Процедура SendBtn_OnClick выполняет основную работу по проверке условия правильности заполнения формы. Условный оператор, который и составляет костяк процедуры, проверяет следующие условия: заполнены ли оба поля ввода T1 и T2; является ли введенное в поле T2 значение численным. При нарушении каждого из условий вызывается процедура InvalidData,сообщающая об ошибке. Эту процедуру мы реализовали следующим образом: открываем текущий документ для записи и передаем в него новое содержимое. На экране остается прежнее окно браузера, но изменяется его наполнение и заголовок. Процедура InvalidData имеет один параметр, который и определяет выводимое сообщение, что позволяет использовать одну процедуру для вывода различных сообщений. Наконец, если оба условия выполнены, вызываются метод Submit формы F3 и процедура SuccessEnter, подтверждающая правильность ввода. Понятно, что при создании реального web-приложения проверка условий может быть значительно сложнее. Например, можно проверить, укладывается ли возраст в разумные пределы, имеет ли пароль необходимую длину и т.д. В нашем же примере мы сознательно ограничились простыми условиями, зато без ущерба его наглядности. Следующий урок мы посвятим использования VBScript для работы с компонентами ActiveX. (Продолжение следует) Источник: http://www.mycomp.com.ua/ |
*** | |||||||
|
|||||||
*** | |||||||
|
|||||||
Copyright © "Internet Zone", info@izcity.com. Условия использования материалов |