Создание скриптов
Процедуры
Объект
Установка свойств для элементов управления и объектов
Обработка событий

Данная статья предназначена тем, кто хотел бы получить представление о программировании на Visual Basic Script, подмножестве языка Visual Basic. VBScript позволяет решать задачи, связанные с Internet, а именно создавать сценарии (или скрипты) управления объектами (кнопками, списками, ниспадающими меню и т. д.) на Web-страничках. Для понимания этого материала нужно иметь представление о структуре HTML-документа, а также основах программирования на Visual Basic. Описанные в статье сценарии могут быть использованы в браузере Microsoft Internet Explorer 3.0. Другие браузеры попросту не понимают этого языка. В настоящее время существуют всего два языка создания сценариев по управлению объектами - Microsoft VBScript и Sun JavaScript. Оба поддерживаются IE 3.0. Браузер же компании Netscape воспринимает только JavaScript.

С помощью VBScript вы можете быстро создавать собственные страницы или даже писать игры. И все это размещается внутри вашего HTML-документа. Если вы уже имели дело с Visual Basic или Visual Basic for Applications, то легко справитесь и с VBScript.

Создание скриптов

Для того чтобы браузер мог различать команды VBScript, нужно все операторы VBScript на HTML-страницах обрамлять тегами . Первый из них используется в паре с атрибутом LANGUAGE для определения языка создания сценария. В нашем случае - Visual Basic Script (хотя может быть и JavaScript). Значением для этого языка является "VBScript":


Пример странички с фрагментом на VBScript



Обычная первая страничка


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

При разработке приложения на VBScript необходимо знать концепцию этого языка, а также иметь представление о том, как работают объекты, события и процедуры. Это поможет вам в дальнейшем разобраться в функционировании объектной модели Internet Explorer 3.0 и объектов ActiveX. Помните, что объекты и VBScript связаны друг с другом.

Процедуры

Процедуры - это относительно самостоятельные фрагменты программы, оформленные особым образом и обозначенные именами. Упоминание этих имен в тексте программы называется вызовами процедур. Процедуры помогают разбить программу на ряд независимых частей, что необходимо для экономии памяти. Каждая процедура существует в программе в единственном экземпляре, но обращаться к ней можно из разных точек программы. При вызове процедуры вступает в действие последовательность операторов, которые находятся внутри этой процедуры. Процедуре могут быть переданы некоторые параметры.

Виды процедур

В VBScript существует два вида процедур: подпрограмма (Sub) и функция (Function). Подпрограмма (Sub) - это последовательность VBScript-операторов, обрамляемая операторами Sub и End Sub. Подпрограммы могут принимать параметры (константы, переменные или выражения, которые передаются при вызове процедуры), но не возвращают значений. Если подпрограмма не содержит параметров, то ее оператор должен включать пустой набор круглых скобок. Следующая подпрограмма использует две функции языка VBScript - InputBox и MsgBox. Она запрашивает у пользователя ввод температуры в градусах Фаренгейта, переводит ее в градусы Цельсия и отображает результат. Вычисление температуры происходит в функции Celsius.

Функция (Function) - это последовательность операторов VBScript, обрамляемая операторами Function и End Function. Она похожа на подпрограмму, но отличается от последней тем, что может возвращать некоторое значение. Функция может принимать параметры (константы, переменные или выражения, передаваемые при вызове). Если она не содержит параметров, то оператор Function должен включать пустой набор круглых скобок. Возвращаемый тип у Function - Variant.

В следующем примере функция Celsius переводит градусы Фаренгейта в градусы Цельсия. Когда вызывается функция из подпрограммы ConvertTemp, переменная, содержащая параметр-значение, передается в функцию. Результат вычисления возвращается в вызывающую процедуру и отображается в MsgBox.

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

Используйте функции вместо подпрограмм, если требуется возвратить некоторое значение.

Использование подпрограмм и функций

Для применения функций в вашей программе необходимо поставить ее название справа от переменной или выражения, в которое будет возвращаться результат выполнения функции, например:

или

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

Обратите внимание, что круглые скобки опускаются при вызове подпрограммы, если оператор Call не применяется.

Объект

Объект (Object) - это простой объект, методами, свойствами и событиями которого вы можете управлять. Метод - это процедура или просто набор команд, сообщающих объекту, что нужно выполнить некоторую задачу. Свойство - это некоторый вид параметра объекта. Событие - это сигнал, подаваемый, если с объектом что-то происходит. И методы, и свойства, и события разработчик выбирает сам, исходя из потребностей задачи. Так, если в вашей программе нужно отследить время окончания работы, то имеет смысл обращать внимание на событие, сигнализирующее об этом. В противном случае эта информация бесполезна.

Объектная модель

Рассмотрим объект ActiveX Label (объект и элемент управления для VBScript фактически означают одно и то же). Он состоит из свойств и имеет один метод. Некоторые из его свойств включают заголовок (Caption), цвет фона (BackColor), цвет шрифта (ForeColor), размер (FontSize) и стиль шрифта (FontName). Его методом является About Box, отображающий при вызове окно с информацией об ActiveX. Событием для Label является перемещение указателя мыши над Label. Существует специальный тег для вставки объектов в HTML-страницу. В его синтаксисе используются два тега: и . Первый - для определения используемого объекта, а также других главных параметров, связанных с объектом; второй - для установки разных свойств объекта, определенного тегом , во вложенных тегах . Атрибуты тега перечислены в табл. 1, а тэга - в табл. 2.

Таблица 1.
Атрибуты тэега .

Атрибут Назначение
ID Определяет имя объекта в документе
CLASSID Класс, к которому принадлежит объект; может быть уникальным универсальным идентификатором или другой группой классов типа Java. Для элементов управления ActiveX - это идентификационный номер класса в системном реестре вашей системы
DATA Адрес, откуда объект должен получать данные; может включать данные для определения всех свойств классов
CODEBASE Адрес, где находится код объекта
TYPE Тип Internet MIME (например: application/x-oleobject будет определять OLE-объект, который должен использоваться как код)
HEIGHT Высота границы объекта
WIDTH Ширина границы объекта

Таблица 2.
Атрибуты тега .

Атрибут Назначение
NAME Определяет имя объекта, которое должно использоваться
VALUE Определяет значение, которое должно быть присвоено свойству объекта, определенному в NAME

Теперь посмотрим на исходный текст, приведенный в примере для элемента управления - Label.

 
 
Пример, демонстрирующий объект ActiveX 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Для тега определено несколько параметров, которые предоставляют полезную информацию относительно используемого объекта. Сначала определяется имя объекта "mylabel", затем свойства: ширина и высота. Далее элемент управления идентифицируется параметром "CLSID:99B42120-6EC7-11CF-A6C7-00AA00A47DD2" точно так, как он обозначается в системном реестре вашей операционной системы. Вложенные тэги содержат свойства объекта Label. Атрибут NAME используется, чтобы определить, какое свойство должно использоваться, а VALUE - для связи значения с этим свойством. Весь этот процесс автоматизирует программа ActiveX Control Pad. В ней есть окно, позволяющее корректировать свойства любого элемента управления (см. статью "Размещение ActiveX на страницах Web", "Мир ПК", # 2/97, с. 51).

Использование объектов

Теперь вы знаете, что для включения объектов в HTML-документ нужно использовать пару тегов , а для установки значений его свойств - тег . Если вы имели дело с программированием на Visual Basic, то использование тегов будет напоминать вам размещение какого-либо компонента или элемента управления на форме. Например, следующие значения тегов и добавляют на страничку (вместо формы в Visual Basic) элемент ActiveX Label:










Вы можете присваивать или устанавливать свойства, а также вызывать методы точно так же, как с любым средством управления формой. Следующий текст, например, включает элементы

, которые могут использоваться для управления свойствами двух элементов Label:





Обработчик события нажатия кнопки cmdChangeIt изменяет текст объекта Label:

Некоторые теги (прежде всего для управления вводом информации в форму) и элементы ActiveX могут обращаться к отдельным процедурам вашего сценария (скрипта), запускаемого событием. События могут вызываться из тегов , , и . В примере, который приводится ниже, при нажатии кнопки изменяется текст объекта Label:

 
 
Использование объектов с событиями 
 



В этом примере, помимо объекта Label, добавлены некоторые возможности сценария и несколько событий. Во-первых, определяется элемент управления Label, затем с помощью тега добавляется элемент управления Button. Когда пользователь нажимает на кнопку, то текст Label изменяется. При повторном нажатии кнопки возвращается прежний текст. Оба эти действия являются событиями. Когда пользователь нажимает на кнопку, возникает событие, заставляющее метку изменяться. Атрибут OnClick в теге используется для того, чтобы вызвать событие. Сам по себе атрибут OnClick является событием, и его значение вызывает процедуру VBScript, которая заставляет метку изменяться. Прежний текст возвращается с помощью сценария, имеющего две процедуры. Первая используется элементом Button (кнопка), а вторая - Label (метка), если пришло время вернуть ее старое содержание. Как вы заметили, во второй процедуре имя объекта Label (MyLabel) сопровождается подчеркиванием, после которого стоит имя события (MyLabel_Click). Это означает, что когда происходит событие OnClick для названного объекта, то должны выполняться последовательности операций, перечисленные в этой процедуре.

При интенсивном программировании лучше всего использовать программу Microsoft ActiveX Control Pad, великолепно выполняющую связывание команд Visual Basic с разными событиями и элементами управления на вашей страничке. Таким образом, вы можете больше внимания обращать на сам процесс разработки приложения.

Установка свойств для элементов управления и объектов

Установка свойств для разных объектов на странице является одной из простейших задач при программировании на VBScript. Стандартная схема этого действия выглядит так:

Здесь ObjectName - имя вашего объекта, определенное с помощью параметров ID или NAME; property - свойство объекта, называемого ObjectName; value - присваиваемое свойству значение. Пример ниже иллюстрирует, как это делается:

...
MyLabel.Caption="Watch me change!"
MyLabel.ForeColor = "65280"
MyLabel.BackColor = "14527197"
MyLabel.FontName = "Times"
...

Свойству Caption (заголовок) присваивается строка "Watch me change!". Затем устанавливаются свойства ForeColor (цвет текста), BackColor (цвет фона) и FontName (стиль шрифта). Так можно устанавливать свойства для любого объекта на странице.

Обработка событий

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

FOR определяет имя элемента управления или объекта, для которого используется последующий код; EVENT задает событие, при возникновении которого следующий код будет вызван.

Определение обработчика события через процедуру - самый простой способ выполнения некоторого кода, когда обрабатываемое событие имело место. Этот метод использует процедуру с таким же именем, как у элемента управления, который вы предполагаете использовать, плюс подчеркивание между именами объекта и события:

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

...