Visual Basic 6. Руководство разработчика

Пользовательские элементы управления ActiveX на Web-страницах


Элементы управления ActiveX используются как на формах, так и на Web-страницах. Это достаточно смелое утверждение, поскольку Рабочий стол и Web-страница имеют различные требования, и не так просто разработать элемент управления для обеих сред. Основное различие состоит в использовании приложений этих двух типов. Приложения для Рабочего стола разрабатываются с учетом того факта, что все ресурсы находятся на локальной машине, где они и запускаются. Приложения Web запускаются на удаленном компьютере, и любые дополнительные ресурсы (изображения и звук) подгружаются по мере необходимости. К счастью, большинство элементов управления, созданных для Рабочего стола, работают и на Web-страницах, но не все они работают одинаково хорошо в обеих средах.

Microsoft предлагает большое количество элементов управления ActiveX для использования на Web-страницах. Некоторые из них поставляются вместе с Internet Explorer, включая такие элементы управления, как Structured Graphics, Filter и Sequencer. Дополнительную информацию и примеры использования можно найти по адресу http://www.microsoft.com/workshop. Практически, каждый элемент управления ActiveX, размещенный на форме Visual Basic, можно использовать и на Web-странице (если он загружен и проинсталлирован на компьютере клиента). В следующих пара­графах рассказывается, как использовать на Web-страницах пользовательские элементы управления ActiveX, созданные в предыдущих главах.

Страница ALARM.HTM

В этом параграфе рассматривается создание Web-страницы с использованием элемента управления ALARM (см. гл. 16). Зачем утруждать себя размещением будильника на Web-странице (кроме как для наглядной демонстрации возможностей пользовательских элементов управления при помощи VBScript)? На рис. 19.8 показана одна причина. Страница содержит таймер, который позволяет пользователю читать страницу за 60 секунд. Пользователь всегда может оставить страницу, введением другого URL в поле Address броузера или нажатием кнопки Back. Если пользователь продержит эту страницу открытой 60 секунд, то сценарий автоматически предоставит ему или ей другую страницу.


Таймер удобен в нескольких ситуациях. Например, можно его использовать для обновления страницы "живыми" данными или отсчета времени в игре.

Знатокам элементов управления ActiveX для Web-приложений известно, что есть элемент управления Timer, который можно использовать и для Web-страниц, но это не так просто, как применение элемента управления Alarm. Во-первых, при использовании элемента управления Timer нужно вести отсчет времени в вашей программе. Во-вторых, время задержки таймера задается в миллисекундах, а сценарий должен обработать событие Timer много раз, прежде чем выполнить какое-то действие.



Рис. 19.8. Пользовательский элемент управления Alarm на Web-странице

Элемент управления ActiveX Alarm, как и элемент управления Timer из Visual Basic, не содержит видимых компонентов и если нужно, чтобы пользователь знал, что происходит, то нужно предоставить ему видимую обратную связь из сценария.

Начнем с тегов HTML для размещения, например, экземпляра элемента управления Alarm на Web-странице.

<OBJECT ID="AlarmCtl" NAME="AlarmCtl"

classid="cisid:7282EB2E-B8A9-11CF-B2FB-005348C101FC"



border="0"

width="120" heigth="33">

<PARAM NAME="CountDown" value "True">

</OBJECT>

Teг <OBJECT> вставляет элемент управления ActiveX на страницу, но его синтаксис, мягко говоря, специфический. Однако вам нет потребности вводить его вручную. Каждый элемент управления ActiveX имеет свойства NAME и ID, подобно встроенным элементам управления. Свойство CLASSID представляет собой длинную строку, которая идентифицирует элемент управления в системном реестре. Чтобы создать определение объекта на странице, используют WYSIWYG-редактор HTML, такой как Frontpage Express (поставляется вместе с Internet Explorer). Создадим новую HTML-страницу и вставим требуемый элемент управления ActiveX, выполнив следующие действия.

1. Выберите команду ActiveX диалогового окна Other Component меню Control Insert, чтобы открыть диалоговое окно ActiveX Control Properties.





2. Откройте  раскрывающийся  список  Pick a Control  и  найдите пункт AlarmProjectAlarmCtl. Таким образом, элемент управления ActiveX Alarm будет занесен в список Registry (Если Alarm ProJect.AlarmCtI в списке не появился, то следуйте инструкциям следующей врезки ''Регистрация пользовательских элемен­тов управления ActiveX").

3. Установите имя элемента управления как AlarmCtl.

4. Щелкните на кнопке Properties, чтобы установить дополнительные свойства пользовательского элемента управления. Для элемента управления Alarm установите в свойстве Count Down значение True.

5. Щелкните на кнопке ОК, чтобы закрыть диалоговое окно.

6. Выберите команду HTML меню View, чтобы открыть текстовый редактор, отображающий исходный код страницы. Выберите определение тега <OBJECT> и скопируйте его в Clipboard.

7. Переключитесь в текстовый редактор HTML-документа и вставьте определение тега <OBJECT>.

Как видите, вставить тег <OBJECT> на Web-страницу для пользовательского элемента управления не сложно. Это определение не изменяется, даже когда тег устанавливается на другом компьютере. Также тег <OBJECT> можно скопировать из любой Web-страницы, содержащей его.

Регистрация пользовательских элементов управления ActiveX

После разработки пользовательского элемента управления

ActiveX его не нужно регистрировать для использования в тестовом проекте. Если его нужно использовать в другом проекте, то сначала нужно его зарегистрировать. Для регистрации пользовательского элемента управления ActiveX выполните следующее.

1. Создайте ОСХ-файл элемента управления, выбрав команду Make control.ocx (control — это имя пользовательского элемента управления) меню File.

2. Переключитесь на сеанс работы с DOS, чтобы отобразилась командная строка DOS, перейдите в папку, в которой сохранен ОСХ-файл, и введите команду:

С:\windows\system\regsvr32 control.ocx

Замените

control.ocx именем ОСХ-файла, необходимым для регистрации.

3. Выйдите из DOS.

Новый элемент управления может использоваться в любом проекте, даже на Web-страницах. В среде разработки Visual Basic имя пользовательского элемента управления появится в диалоговом окне Components (чтобы открыть это диало­говое окно, выберите команду Components меню Project). Такое же имя появится в диалоговом окне свойств элементов управления ActiveX Frontpage.



Значение элемента управления CLASSID будет отличаться в конкретной систе­ме. Поэтому, нельзя использовать файл ALARM.HTM в том виде, в котором он нахо­дится на компакт-диске. Необходимо изменить атрибут CLASSID на значение, гене­рируемое вашей системой.

8. Введите соответствующий текст и теги HTML на страницу, сохраните ее как ALARM HTM и откройте с помощью Internet Explorer.

Кроме того, пользователь должен видеть элемент управления Alarm с обратным отсчетом прямо на странице. Конечно, ничего не произойдет, когда пройдет время выдачи сигнала, потому что не добавлен соответствующий код. Как только загрузится страница, сценарий должен включить таймер, и по истечении положенного времени он предоставит пользователю другую страницу (начальную страницу Sybex).

Для этого нужно открыть страницу в текстовом редакторе и добавить следующий сценарий.

<SCRIPT LANGUAGE="VBScript">

Sub window_onLoad()

AlarmCtl.AlarmTime = Time + #00:01.00#

Call AlarmCtl.StartTimer()

End Sub

Sub AlarmCtl_TimeOut()

Call window.navigate ("http://www.sybex.corn")

End Sub

</SCRIPT>

Событие window_onLoad инициируется при загрузке страницы. В этом событии необходимо инициализировать свойства элемента управления. Установите свойство AlarmTime на минуту вперед от текущего времени и начните отсчет. Свойство CountDown было установлено при определении тега <OBJECT> следующей командой в обработчике события onLoad.

AlarmCtl.CountDown =

True

Свойство AlarmTime не может быть установлено в режиме разработки — только в сценарии страницы.

Когда истечет указанный промежуток времени, будет инициировано событие AlarmTime. В его обработчике нужно запрограммировать броузер на переход на другую страницу с использованием метода Window.Navigate.

Программа 19.2. Страница Alarm.htm

<HTML>

<HEAD>

<SCRIPT LANGUAGE="VBScript">

Sub window_onLoad()

AlarmCtl.AlarmTime = Time + #00:01.00#

Call AlarmCtl.StartTimer()

End Sub



Sub AlarmCtl_TimeOut()

Call window.navigate ("http://www.sybex.corn")

End Sub

</SCRIPT>

<TITLE>Alarm Demo Page</TITLE>

</HEAD>

<BODY>

<OBJECT id="AlarmCtl " NAME="AlarmCtl"

classid="clsid:7282EB2E-B8A9-llCF-B2FB-005348C101FC"

border="0"

width="120" heigth="33">

<PARAM NAME="CountDown" value="True">

</OBJECT>

<CENTER>

<Hl>The Alarm Page Demo</Hl>

<FONT SIZE=4>

You will be given 60 seconds to read the important information on

this page and then you'll be taken to our home page.

<BR>

The little alarm clock at the top of the page will count down every

second and when it reaches zero, your computer will be connected to

SYBEX home page.

<FONT SIZE = 3>

<HR>

If you are not connected to the Internet, you'll get an error message

instead.

<HR>

</BODY>

</HTML>

Это HTML-код, создающий страницу, показанную на рис. 19.8.   HTML-теги просты, и даже при слабом знакомстве с HTML этот код понять просто.       Чтобы увидеть этот элемент управления в действии, выполните следующее.

1. Откройте Internet Explorer.

2. Выберите команду Open в меню File, и в диалоговом окне откройте файл Alarm.htm.

3. Подождите 60 секунд, и сценарий загрузит домашнюю страницу SYBEX.

Элемент управления Alarm хорошо работает в Internet Explorer, и нет необ­ходимости в его доработке. Он ведет себя точно так, как в среде Visual Basic. Он предоставляет свои свойства и методы, а его события можно программировать.

Страница UINPUT.HTM

Страница UINPUT.HTM (рис. 19.9) демонстрирует использование элемента управления ActiveX CTextBox на Web-странице. Воспользуйтесь схемой из предыду­щего параграфа для создания с помощью Frontpage определения тега <OBJECT>, a затем добавьте текст и HTML-теги Тег <OBJECT> для вставки элемента управления CTextBox показан ниже.

<OBJECT id="CTextBox"



NAME= "CTextBoxl"

classid="clsid 7282EB5A-B8A9-11CF B2FB-005348C101FC"

border="0"

WIDTH="150" HEIGHT="19">

</OBJECT>



Рис. 19.9. Страница UINPUT HTM использование элемента управления CTextBox для получения от пользователя обязательных и необязательных данных

Сценарий страницы прост. Он инициализирует элементы управления, задавая их свойства Mandatory и Text.

Sub window_onLoad()

CTextBox1.Mandatory=1

CTextBox2.Mandatory=1

CTextBox6.Mandatory=1

CTextBox1.Text=" "

CTextBox2.Text=" "

CTextBox3.Text=" "

CTextBox4.Text=" "

CTextBox5.Text=" "

CTextBox6.Text=" "

EndSub

Если эти элементы управления используются для сбора данных от пользователя, то на форме будет кнопка Submit. Чтобы до передачи данных на сервер удостове­риться, что требуемым полям присвоены значения, используйте событие onClick кнопки. На компакт-диске находится страница LABEL3D.HTM, которая использует пользовательский элемент управления FLXLabel (гл. 16) для отображения выпуклого и тисненого текста в окне броузера. Чтобы протестировать элемент управления FLXLabel на Web-странице, необходимо зарегистрировать элемент управления в системе, а затем разместить на странице атрибут CLASSID элемента управления со значением, заданным Visual Basic.


Содержание раздела