CFA LogoCFA Logo Computer
Загрузка поиска
Новости Компьютеры Прайс-лист [Новое] Прайс-лист [Б/У] Для ноутбуков Конфигуратор ПК Заказ, Оплата, Доставка Сервис объявления Драйвера Статьи Как нас найти Контакты
Новости
RSS канал новостей
Компания MSI заявляет о выпуске серии настольных систем MSI Trident 3, которые благодаря обновленной ...
Американская компания Hewlett-Packard в прошлом году представила линейку продуктов рассчитанных ...
В рамках выставки CES 2017 компания Dell, известная во всем мире своими отличными моделями мониторов, ...
В Сети уже появлялась информация о том, что компания Gigabyte Technology готовит к выходу новую ...
Тайваньская компания ASUStek познакомила мировую общественность с линейкой новейших материнских ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2003 ГОД

VB в ипостаси Script

Константин НОСОВ k_n@ua.fm

Продолжение, начало см. МК 20 (243)

VBScript и элементы управления

Создание интерактивных web-приложений, взаимодействующих с пользователем через элементы управления — одно из главных применений VBScript. Для этого VBScript поддерживает объектно-ориентированные средства, наделяющие его объекты методами, свойствами и событиями. Для тех, кто недостаточно знаком с принципами объектно-ориентированного программирования, кратко поясним, что это означает.

Метод объекта — это процедура или команда, сообщающая объекту, что нужно выполнить некоторую задачу. Свойство — это один из параметров объекта. Наконец, событие — это сигнал, подаваемый, когда с объектом что-то происходит.

Используя методы, свойства и события, разработчик может осуществлять полный контроль над объектом. Например, если в программе нужно обработать нажатие кнопки, разработчик должен запрограммировать соответствующее событие. Если же необходимо в текстовое поле ввести какое-либо значение, обращаются к соответствующему свойству поля. В далбнейшем мы неоднократно будем со всем этим сталкиваться на примерах.

Обычно для создания web-приложений используют стандартные элементы управления: поля ввода, списки строк, разворачивающиеся списки, кнопки и т.д. Собственно говоря, эти элементы относятся к языку разметки HTML, но без использования сценариев, в т.ч. на VBScript, они практически не способны выполнять какую-либо полезную работу. Кроме традиционных элементов управления, VBScript позволяет принимать ввод и от других объектов HTML-кода, которые элементами управления по существу не являются. Например, для текстового параграфа можно запрограммировать обработку таких событий как нажатие (клик) мышки или наведение курсора мышки на объект.

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

Результат показан на Рис. 1. Кратко опишем содержимое нашей формы. Для ввода чисел создано два поля (с именами N1 и N2), для выбора операции — разворачивающийся список с именем D1 (он содержит три элемента для выбора указания нужной операции), поле для вывода результата (T1) и кнопку запуска (ExeBtn). Описанные элементы — все, что нужно для создания интерфейса нашего примера.

Рис. 1.

Перейдем к программной части. Функцию 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 и его квадрат (Рис. 2). Думаю, приведенный код в особых комментариях не нуждается, следует только обратить внимание на то, что операторы VBScript (которые при обычной записи занимают одну отдельную строку) отделены двоеточиями (:).

Рис. 2.

Наконец, существует еще один способ написания процедуры-обработки события, отличный от предыдущих. Он состоит в том, что на элемент управления и обрабатываемое событие указывает сам <SCRIPT>-фрагмент. Предыдущий пример при этом будет выглядеть так: из описания кнопки в секции <INPUT> исключается атрибут OnClick, для которого создается отдельный сценарий следующего вида:

В этом варианте информация об элементе управления и обрабатываемом событии содержится в дополнительных атрибутах (FOR и EVENT) сценария, кроме того, код обработки заключен в самом <SCRIPT>-фрагменте, а не в процедуре Sub.

Как видим, VBScript прекрасно справляется с интерактивностью, поэтому и находит (как и JavaScript) широкое применение при проверке заполненных форм перед отправкой на сервер. Читатель, хотя бы один раз регистрировавшийся на какой-нибудь web-службе, безусловно, сталкивался с этой процедурой.

Для иллюстрации возможностей VBScript для проверки ввода данных в форму создадим небольшой, но полнофункциональный пример. Для того чтобы сделать пример максимально похожим на имеющиеся в Сети, воспользуемся объектной моделью браузера, позволяющей с помощью сценария управлять окном браузера и загруженным в него документом. О самой объектной модели было подробно рассказано в статьях автора о JavaScript, поэтому мы ограничимся ссылкой на них, чтобы избежать повторений.

Создадим форму (Рис. 3), содержащую два поля (для ввода имени и возраста пользователя) и две кнопки (для отправки содержимого и очистки полей):

С кнопкой Очистить все понятно: при ее нажатии в поля заносятся пустые строки, тем самым очищается содержимое полей. Для ясности стоит сказать, что атрибут OnClick кнопки Очистить представляет строку, заключенную в двойные кавычки, а значениям полей ввода (T1.Value и T2.Value) присваиваются пустые строки в виде пары одиночных кавычек без пробела между ними.

Рис. 3.

Основную работу выполняет другая кнопка —Отправить. Напишем процедуру для обработки ее нажатия:

Здесь использованы дополнительные процедуры InvalidData и SuccessEnter, которые мы приводим ниже:

Теперь нам остается объяснить, как это работает. Процедура SendBtn_OnClick выполняет основную работу по проверке условия правильности заполнения формы. Условный оператор, который и составляет костяк процедуры, проверяет следующие условия:

заполнены ли оба поля ввода T1 и T2;

является ли введенное в поле T2 значение численным.

При нарушении каждого из условий вызывается процедура InvalidData,сообщающая об ошибке. Эту процедуру мы реализовали следующим образом: открываем текущий документ для записи и передаем в него новое содержимое. На экране остается прежнее окно браузера, но изменяется его наполнение и заголовок (Рис. 4). Процедура InvalidData имеет один параметр, который и определяет выводимое сообщение, что позволяет использовать одну процедуру для вывода различных сообщений.

Наконец, если оба условия выполнены, вызываются метод Submit формы F3 и процедура SuccessEnter, подтверждающая правильность ввода (Рис. 5).

Рис. 4.   Рис. 5.

Понятно, что при создании реального web-приложения проверка условий может быть значительно сложнее. Например, можно проверить, укладывается ли возраст в разумные пределы, имеет ли пароль необходимую длину и т.д. В нашем же примере мы сознательно ограничились простыми условиями, зато без ущерба его наглядности.

Следующий урок мы посвятим использования VBScript для работы с компонентами ActiveX.

(Продолжение следует)

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы: *
captcha
Обновить






Рейтинг@Mail.ru
Хостинг на серверах в Украине, США и Германии. © www.sector.biz.ua 2006-2015 design by Vadim Popov