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

       

Использование гиперссылок в приложениях


Visual Basic

Одна из наиболее привлекательных возможностей Web-страниц — гиперссылки, позволяющие соединять страницы, находящиеся в World Wide Web. Ниже приведен пример использования гиперссылок, как части интерфейса пользователя приложения Visual Basic.

VB6 в действии: проект DemoPage

Приложение DemoPage показано на рис. 21.5 и находится на прилагаемом компакт-диске. Оно состоит из двух форм:

• VBForm;

• WebForm.

Основная форма - VBForm - используется для построения простых фигур методами Visual Basic WebForm воспроизводит HTML-документ, который содержит команды Visual Basic (методы для рисования). HTML-документ содержит команды и несколько гиперссылок. При активизации гиперссылки новый документ не воспроизводится. Вместо этого рисуется фигура на первой форме.

Разработаем две формы (см. рис. 21.5). Основная форма содержит вверху элемент управления Label, на котором отображается команда. Вторая форма (WebForm) -элемент управления WebBrowser, на котором воспроизводится страница Demo.htm.

После загрузки первая форма загружает вторую и воспроизводит HTML-документ на элементе управления WebBrowser. Весь код формы VBForm размещен в событии Load.

Программа 21.5. Событие Load

Private Sub Form_Load()

Dim target

target = App.Path & "\Demo.htm"



WEBForm.WebBrowser1.Navigate.target

WEBForm.Show

End Sub

Рис. 21.5. Две формы приложения DemoPage

Чтобы избежать абсолютных ссылок, предполагается, что HTML-документ (файл Demo.htm) сохранен в папке проекта. Полная страница Demo htm показана на рис. 21.6.

Рис. 21.6. Страница Demo htm в Internet Explorer

Программа 21.6. Приложение Demo Page

<HTML>

<TITLE>Demo Page</TITLE>

<BODY>

<CENTER>

<Hl>Graphics Demo Page</Hl>

</CENTER>

The hyperlinks on this page contact the VBForm  and draw various shapes on it.

<P>

<H3>Circles</H3>

The Visual Basic method for drawing circles on a     Form or

PictureBox control is called Circle and its syntax is:


<BR>

<CODE>Circle(X, Y), R</CODE>

<BR>

X and Y are the center's coordinates and R is the circle's

radius.

<BR>

<A HREF="http://127.0.0.1./demo.htm#circle">Draw A Circle</A>

<BR>

<BR>

<H3>Squares</H3>

To draw squares use the Line method, whose syntax is:

<BR>

<CODE>Line(X1, Yl) - Step(X, Y)</CODE>

<BR>

X1 and Y1 are the coordinates of the upper left corner of the

square and X and Y are the square's dimension.

<BR>

<A HREF="http://127.0.0.1./demo.htm#box">Draw A Square</A>

</BODY>

</HTML>

Приложение использует событие BeforeNavigate2 для определения активизиро­ванной гиперссылки, затем отменяет переход к этой ссылке и выполняет некоторое действие на первой форме (отображает команду на элементе управления Label и рисует фигуру). Гиперссылки могут быть неверными. Однако событие BeforeNavigate2 не наступает до тех пор, пока гиперссылка не укажет на допустимый URL.

Далее показано определение двух гиперсвязей. Адреса гиперссылок содержат информацию о виде отображаемой формы.

<A HREF="http: //127.0.0.1/demo.htm#circle">Draw A Circle</A>

<А HREF="http: //127.0.0.1/demo.htm#box">Draw A Square</A>

HTML-документ не содержит никаких указаний на имена "circle" и "box", но они и не нужны. Элемент управления WebBrowser генерирует сообщение об ошибке, но все, что действительно нужно получить - это имя точки привязки. Адрес сервера – это IP-адрес локальной машины (127.0.0.1), который является допустимым именем сервера. Посмотрим, как код события BeforeNavigate2 вызывает действия, происхо­дящие на другой форме.

Программа 21.7. Событие BeforeNavigate2

Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object,_

 URL As Variant, Flags As Variant, _

TargetFrameName As Variant, PostData As Variant, _

Headers As Variant, Cancel As Boolean)

Dim Position As Integer, Shape As String



On Error Resume Next

If UCase(Right$(URL,8)) <> "DEMO.HTM" Then Cancel = True

Position = InStr(URL, "#")

Shape = Mid$(URL, Position + 1)

If Shape = "circle" Then

VBForm.CIs

VBForm.Circle(VBForm.Width / 2, VBForm.Height / 2), _

VBForm.Height / 3

VBForm.Label1.Caption = "Circle(Width / 2, Height / 2), 

  _

   Height / 3"

End If

If Shape = "box" Then

VBForm.Cls

VBForm.Line(VBForm.Width / 4, VBForm.Height / 4) _

 -Step(VBForm.Width / 2, VBForm.Height / 2), , В VBForm.Label1.Caption = "Line(Width / 4, Height / 4) _

 -Step(Width / 4, Height / 4), , В"

End If

End Sub

Первый оператор отслеживает ошибку и указывает Visual Basic проигнорировать ошибки и продолжать выполнение со следующего оператора. Понятно, что ошибка непременно произойдет, так как обе привязки гиперссылок неправильные. Поэтому установка значения параметра Cancel в True отменяет передвижение. Условный оператор If проверяет, что другие (возможно допустимые) гиперссылки не отменены. Затем программа исследует последнюю часть адреса URL (правее символа #). Если это строка - "circle", то программа рисует окружность на форме VBForm и воспроизводит команду для рисования окружности на элементе управ­ления Label. Если строка - "box", то рисует квадрат на форме и воспроизводит соответствующую команду на Labell.

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


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