Сценарии для объектов
ActiveX
Наиболее мощное свойство элемента управления Script, позволяющее использовать его для написания сценариев приложения — это его способность манипулировать элементами управления ActiveX. Из примера, приведенного в предыдущем параграфе, видно, как создавать объектные переменные для доступа к OLE-серверу. Если приложение использует классы, то можно получить к ним доступ посредством элемента управления VBScript. Необходимо только создать экземпляр класса (или нескольких классов) и сохранить его в элементе управления Script. После этого свойства и методы будут доступны с помощью объектной переменной, как обычные команды VBScript.
С помощью метода AddObject
можно добавить объект к элементу управления Script.
ScriptControll.AddObject Name, Object, members
Первый аргумент — Name —
это имя для доступа к классу в сценарии. Это переменная типа String. Второй аргумент - Object - действительное имя класса. Допустим, приложение предоставляет класс DisplayClass. Для добавления этого класса к элементу управления Script надо создать объектную переменную
Private Display As New DisplayClass
и воспользоваться следующим оператором
ScriptControll.AddObject "Output", Display
После выполнения этого оператора (обычно он помещается в событие Load формы) сценарий получает доступ к членам класса DisplayClass через объектную переменную Output. Если DisplayClass имеет метод Show, то к этому методу может обращаться любой сценарий.
Output.Show "some message"
' (некоторое сообщение)
(Метод Show выводит сообщение в нижний элемент управления TextBox формы.) Последний (необязательный) аргумент - members — это логическое значение, определяющее, будут ли доступны члены класса через объектную переменную. Если установить значение этого аргумента в True, то члены класса будут доступны по имени, как функции VBScnpt. Если добавить класс DisplayClass в элемент управления Script оператором
ScriptControll.AddOb]ect "Output", Display, True
то к методу Show можно обратиться из сценария без указания переменной имени объекта
Show "some message"
(некоторое сообщение)
VB6 в действии: класс Display
Одно из ограничений VBScnpt — он не поддерживает функций ввода/вывода. Так как VBScnpt — язык написания сценариев, то он по определению не поддерживает пользовательский интерфейс. Если необходимо разработать приложение с визуальным интерфейсом, то используйте Visual Basic. Но во время проектирования, особенно на этапах отладки и тестирования, необходим способ отображения промежуточных результатов.
Форма проекта SEditor имеет окно, в котором сценарий помещает свой вывод (подобно временному окну). Эта особенность реализуется с помощью класса DisplayClass, имеющего два метода.
• Show - для печати строки в нижнем элементе управления TextBox;
• Clear — для удаления содержимого нижнего элемента управления TextBox.
Реализация модуля класса DisplayClass требует всего нескольких строк кода.
Программа 20.9. Класс Display
Public Sub Show(message)
ScriptForm.Text2.Text = ScriptForm.Text2.Text _
& vbCrLf & message
End Sub
Public Sub Clear()
ScriptForm.Text2.Text = ""
End Sub
Для использования членов класса DisplayClass внутри сценария без регистрации Display DLL и создания объектной переменной с помощью функции CreateObject(), объект Display добавляется в элемент управления Script. Для этого необходимо добавить следующий оператор в событие Load формы.
Private Sub Form Load()
ScriptControll.AddObject "Output", Display, True
End Sub
Заметьте последний аргумент установлен в True, то есть Show и Clear доступны по имени.
Проект SEditor — простое приложение, позволяющее экспериментировать с VBScript. При разработке действительно сложных приложений, не требующих интенсивного ввода/вывода (не считая функции MsgBox() и метода Show), можно использовать и простой редактор. Однако на него нельзя рассчитывать, когда понадобится отобразить члены объектной переменной или проверить синтаксис.