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

       

Написание сценария для приложения


Если приложение предоставляет классы, то можно добавить элемент управления Script на отдельную форму, например, на ScriptForm, и позволить пользователю приложения создать сценарий. Предположим, вы написали приложение, которое позволяет пользователю открывать файлы с изображениями и сохранять их в различных графических форматах (TIF, JPEG, NPG и т. д.). Пользователь, желающий преобразовать несколько файлов, не должен открывать и записывать каждый файл по отдельности. Ему проще написать сценарий, который в нужный момент открывает файл, преобразовывает его и записывает под другим именем на диск.

Следовательно, ваш класс должен предоставлять методы Open(fllename) для открытия графического файла, Convert(format1, format2)

— для преобразования из одного формата в другой, и SaveAs(filename) - для записи файла в новом формате. Процесс конвертирования формата графических изображений достаточно сложен (это описано в нескольких книгах), но если кратко, то необходимо иметь возмож­ность преобразовывать процедуры в методы и привязывать их к классу.

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

Для ознакомления с использованием сценариев в приложениях рассмотрим простой класс, содержащий несколько несложных методов, используемых для вычисления основных статистических характеристик массива данных (рис. 20.6). На самом деле, здесь мы расширяем класс AXStat (см. гл. 15) и с его помощью добавляем возможности сценариев в приложения. Описание класса, который пре­доставляет законченную объектную модель (например, Excel), выходит за рамки этой книги, но приведенный ниже простой класс - пример того, как возможности сценариев добавляются в приложения.

Чтобы использовать класс StatCIss в проекте SEditor, необходимо выполнить следующие действия.

1. Откройте проект SEditor и добавьте новый модуль класса.

2. Запустите новый экземпляр Visual Basic, откройте проект AXStats (папка гл. 15 на компакт-диске) и скопируйте код модуля AXStats.

3. Переключитесь в проект SEditor и откройте окно кода добавленного модуля класса.


4. Добавьте код, скопированный из модуля класса AXStats.



Рис. 20.6. Проект StatCIss: вычисление основных статистических характеристик массива данных



Теперь имеется проект, состоящий из формы ScriptForm, на которой пользователь может вводить и выполнять сценарии, объект DisplayClass и класс AXStats, содер­жащий свойства и методы для вычисления основных статистических характеристик массива данных. Имеет смысл записать компоненты нового проекта в новую папку.

Примечание

Методы класса AXStats возвращают значения типа Double, в то время как VBScnpt является бестиповым языком. Каким образом сценарий взаимодействует с классом AXStats и интерпретирует возвращаемые значения? Можно использовать функции приведения типов, но не ожидайте, что пользователь (который вводит текст сценария) в состоянии выполнить все необходимые преобразования. Проще исправить код класса, удалив все типы. Для этого необходимо открыть окно Code для класса AXStats и удалить все объявления типов (часть As объявления методов и их типов). Для просмотра кода класса AXStats после исправления необходимо открыть проект в среде разработки VB.

Чтобы предоставить пользователю доступ к членам класса

AXStats (и позволить ему разрабатывать сценарии для обработки массивов данных), надо добавить ссылку на класс. Для этого в начало кода ScriptForm добавьте следующее объявление

Private Statistics As New AXStats

Затем добавьте объект Stat в элемент управления Script события Load формы

ScriptControll.AddObject "Stat", Statistics, True

Пользователь приложения получает доступ к членам класса

AXStats с помощью компонентов объектной переменной Stat или их имен. Далее следует небольшой сценарий для вычисления среднего арифметического четырех чисел. Введите следующий код в редактор сценария и щелкните на кнопке Execute Script.

Программа 20.11. Сценарий приложения StatCIss

Add 301

Add 44.50

Add 529

Add 124.5

Show "Mm значение " & Mm

Show "Max значение " & Мах

Show "Среднее      " & Average



Если добавить несколько дополнительных методов для более сложных статис­тических характеристик (стандартное отклонение, корреляцию и т.п.), то пользователи захотят использовать ваше приложение для обработки данных в пакетном режиме. Если добавить ссылку на объект FileSystemObject, то можно будет использовать локальный диск для чтения данных и записи результатов.

В той же папке, что и StatCIss, находятся сценарии

MakeData и Process. Сценарий MakeData создает текстовый файл в корневом каталоге диска С: и записывает туда 100 случайных значений. Сценарий Process открывает указанный файл, добавляет данные к семейству данных класса StatCIss, вычисляет и отображает число элементов данных, их среднее, минимальное и максимальное значения. Чтобы открыть сценарий MakeData, необходимо выбрать в меню File команду Load и выполнить ее, щелкнув на кнопке Execute Script. Затем нужно открыть и запустить сценарий Process..

Совет

В этом проекте есть одна проблема. Оба класса используют метод Clear (один — для очистки набора данных класса AXStat, другой — для очистки нижнего элемента управления TextBox формы). Оператор Clear на самом деле очищает элемент управления TextBox. Дело в том, что в случае конфликта имен, приоритет имеют компоненты класса, добавленного первым. Можно указать конкретный метод с помощью имени класса, задаваемого в префиксе. Для очистки элемента управления TextBox используется оператор Output. Clear, а для очистки массивов данных — оператор Stat. Clear.

Для тестирования проекта StatCIss необходимо изменить установки обработчика ошибок в классе AXStat. Для этого выполните следующие действия.

1. Выберите команду Options меню Tools, чтобы открыть окно Options.

2. Выберите вкладку General.

3. В секции Error Trapping отметьте флажок Break on Unhandled Errors Only (Останов только для необработанных ошибок).

Если эту опцию не установить, то приложение будет прерываться при каждой ошибке (например, при вызове метода Item класса AXStat с ошибочным значением индекса). Включение флажка Break on Unhandled Errors Only позволяет классу ге­нерировать ошибки, которые обрабатываются в коде приложения.

Элемент управления Script - удобное средство для добавления возможностей сценария в приложения, но его обработчики ошибок оставляют желать лучшего. Это его первая версия, возможно, в следующих версиях он будет более гибким. Информацию об этом можно найти на http: //www.microsoft. com/scripting.

Последняя часть главы посвящена написанию сценариев для операционной системы. Windows Scripting Host - еще одна область применения знаний VB, если вы освоились с использованием предоставляемых объектов.


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