Вызов методов
Чтобы вызвать подпрограмму из вашего сценария, используйте следующий синтаксис:
call ProcedureName(arguments)
ProcedureName - это имя подпрограммы, которую вы вызываете; arguments - значения, передающиеся в процедуру. Как было сказано ранее, подпрограммы используются, когда требуется обработать какое-то событие, например:
<SCRIPT>
...
sub MyObject_Click()
alert "This is a subroutine which is called _
when the Click event happens for the MyObject object."
end sub
...
</SCRIPT>
В нашем случае это Click, т. е. пользователь должен щелкнуть мышкой на этом объекте. Это не будет работать для функции, потому что функция - это процедура, возвращающая значение. Что касается функций, то они сами могут быть возвращены как значение, например:
<SCRIPT>
...
y = 2
x = GiveValue(y)
alert x
...
function GiveValue(a)
GiveValue = a + 4
end function
...
</SCRIPT>
Следующий пример иллюстрирует вызовы подпрограммы и функции из сценария:
<HTML>
<HEAD>
<TITLE>Документ HTML, использующий элементы
управления ActiveX и процедуры </TITLE>
</HEAD>
<BODY BGCOLOR="mistyrose">
<OBJECT ID="IeLabel1" WIDTH=170 HEIGHT=93
CLASSID="CLSID:99B42120-6EC7-11CF-A6C7-00AA00A47DD2">
<PARAM NAME="_ExtentX" VALUE="3625">
<PARAM NAME="_ExtentY" VALUE="2461">
<PARAM NAME="Caption" VALUE="Click Me">
<PARAM NAME="Angle" VALUE="0">
<PARAM NAME="Alignment" VALUE="4">
<PARAM NAME="Mode" VALUE="1">
<PARAM NAME="FillStyle" VALUE="0">
<PARAM NAME="FillStyle" VALUE="1">
<PARAM NAME="ForeColor" VALUE="#FF0000">
<PARAM NAME="BackColor" VALUE="#373737">
<PARAM NAME="BackStyle" VALUE="1">
<PARAM NAME="FontName" VALUE="Courier">
<PARAM NAME="FontSize" VALUE="24">
<PARAM NAME="FontItalic" VALUE="0">
<PARAM NAME="FontBold" VALUE="0">
<PARAM NAME="FontUnderline" VALUE="0">
<PARAM NAME="FontStrikeout" VALUE="0">
<PARAM NAME="TopPoints" VALUE="0">
<PARAM NAME="BotPoints" VALUE="0">
</OBJECT><BR CLEAR="ALL">
<INPUT TYPE="button" NAME="button1" VALUE="Get Value">
Enter Angle:
<INPUT TYPE="text" NAME="AngleInpt" VALUE="0"
SIZE="10"
MAXLENGTH="10">
The Sine is:
<INPUT TYPE="text" NAME="SineInpt" VALUE="0"
SIZE="10" MAXLENGTH="10">
<SCRIPT LANGUAGE="VBScript">
dim pi
pi = 4 * atn(1.0)
sub button1_OnClick
dim angle, sinangle
angle = AngleInpt.value
sinangle = getsin(angle)
SineInpt.value = sinangle
end sub
function getsin(angle)
getsin = sin((pi * angle)/180)
end function
sub ieLabel1_Click
call ieLabel1.AboutBox
end sub
</SCRIPT>
</BODY>
</HTML>
Когда пользователь щелкает мышью по метке Label, то вызывается метод About Box. Поля ввода используются для вычисления синуса заданного угла (в градусах). Если ввести некоторое значение в первое поле ввода, помеченное текстом "Enter Angle", и щелкнуть на кнопке мышью, то введенный аргумент будет переведен в радианы и затем вычислен синус, результат чего будет отображен. Первая процедура вызывается по нажатию мышью на единственный объект на странице - кнопку, называемую button1. Когда это событие обрабатывается, то вызывается сразу несколько методов. Сначала обновляются все переменные, которые вы собираетесь использовать для вашей программы. Затем отыскивается значение, называемое AngleInpt, которое пользователь набрал в поле ввода. Далее вызывается функция, в которую заносится введенный параметр из поля AngleInpt. Она преобразует угловые градусы в радианы, затем вычисляет его синус (радианы являются основной мерой измерения углов для тригонометрических функций в VBScript). Значение связывается с именем функции (getsin), которая возвращает его для определенной нами ранее переменной. В итоге это значение отображается в текстовом поле, называемом SineInpt.
В данном примере задействовано два метода: подпрограмма button1_OnClick, которая, если вы помните, вызывается, когда пользователь щелкает мышью по кнопке, и функция getsin(angle), где angle - параметр, используемый для преобразования градусов в радианы. У элемента ActiveX Label используются два включаемых метода (методами называются собственные подпрограммы и функции объекта): тот, который вызывается, когда по метке щелкнули мышкой (ieLabel1_Click), и метод отображения диалоговой панели ieLabel.AboutBox(). Когда обращаются к методам объектов, обычно используют следующий синтаксис:
call ObjectName.MethodName()
Ключевое слово call применяется для вызова определенного метода. ObjectName - это имя объекта, для которого вы хотели бы вызвать метод, а MethodName() - это имя метода, который будет использовать сам объект. Имя объекта и вызываемый метод отделяются точкой. Также для вызова метода не требуется никаких скобок, потому что у него нет никаких параметров.
[ ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ ]
|