|
Главная / Программа
Пользовательский интерфейс |
|
Создание диалогов в скриптах RastrWin при помощи IE.
Появившаяся возможность подключения к обработке событий IE обеспечивает "продвинутых"
пользователей RastrWin новыми возможностями в разработке пользовательских
интерфейсов скриптов. Диалоговые формы могут
создаваться в виде HTML страниц и при помощи
набора предоставляемых IE СОМ-интерфейсов использоваться для взаимодействия с
VbScript в RastrWin. Первым
опытам использования данных возможностей и посвящена эта статья. В
ней на нескольких примерах разбирается процесс взаимодействия формы ввода данных
пользователем на основе IE и VbScript RastrWin.
Основным новшеством,
к моменту написания статьи, явилась возможность подключения к событиям
COM-объекта, что позволяет сделать работу интерактивной,
когда не только скрипт RastrWin может управлять работой СОМ-объекта, но и сам
объект может через функции обратного вызова управлять работой вызывающего его скрипта.
Для корректной работы скриптов необходимо перед их использованием исправить
пути к файлам HTML с формой. Если будут раздражать
постоянные вопросы IE по поводу запуска активного содержимого
HTML страницы, то
это можно отключить следующим
образом (хотя это и повышает риск при заражении
компьютерными вирусами использующими скрипты).
В IE->Сервис->Свойства
обозревателя->Дополнительно->Разрешить запуск активного содержимого файлов на
моем компьютере
для англоязычной версии(Allow active content to run in files on My Computer)
Загрузить примеры (22.71 Кб)
Некоторые пояснения к ключевым моментам примеров скриптов.
Пример 1. иллюстрирует использование "простой" формы ввода данных.
В нем представлен процесс создания COM объекта предоставляющего интерфейсы IE,
и подключающего обработчики событий IE к функциям обратного вызова скрипта.
SET g_oIE = CreateObjectEx("InternetExplorer.Application","g_IE_")
В результате объявляется переменная "g_oIE" ссылка на COM-объект
IE , а так же подключаются функции обратного вызова. Второй параметр функции
CreateObjectEx - "g_IE_" содержит текстовый префикс названия функции
обратного вызова. Требуется обрабатывать событие закрытие окна IE "Quit(a)",
функция обработки данного события должна иметь следующее название "Префикс
функций обратного вызова"+"Название обрабатываемого события".
Для рассматриваемого события название функции обратного вызова будет следующим
"g_oIE_" +"Quit(a)"= "g_IE_Quit(a)".
В скрипте она имеет
следующий вид:
SUB g_IE_Quit(a)
END SUB
Затем ждем пока окно с созданным диалогом не закроют, либо не нажмут на управляющую
кнопку, что проверяется в следующем бесконечном цикле:
FOR i = 1 TO 2 STEP 0
NEXT
Как только получена информация о выходе из диалога (закрытии
диалога, либо нажатии на управляющую кнопку), то
происходит извлечение
данных из элементов управления на форме. Это производится привычными
операциями доступа к полям COM-объектов. Для этого требуется знать имена (Name)
расположенных на форме элементов.
В примере 1 получение введенного текста в элемент управления с именем "InputCntrl"
расположенным на форме "MyForm" происходит следующим образом:
Введенный текст=g_oIE.Document.MyForm.InputCntrl.Value
Так же на примере получения кода нажатой клавиши показано получение доступа
к переменным скрипта загруженной HTML странички: g_oIE.Document.Script.g_ConstBtnYes
(происходит обращение к константе объявленной в скрипте страницы HTML ),
и вызова функций реализованных внутри HTML
страницы: g_oIE.Document.Script.WhichBtnIsPressed().
Пример 2. Посвящен помощи в работе с различными элементами управления, делается
попытка представить некоторый уже готовый и работающий набор элементов управления,
если нет особых запросов к красоте и сложности диалога, можно создать
собственную форму
диалога простым копированием нужных частей данного скрипта и формы.
Пример 3. Иллюстрирует динамическое формирование диалога из примера 1. Данная
возможность может быть интересна по двум причинам:
а.) Отказ от использования отдельного HTML файла содержащего диалог.
б.) Возможность создания динамического диалога.
В качестве заключения хотелось бы подвести некоторые итоги:
1. Появление возможности обработки событий существенно расширяет возможности пользовательского
интерфейса скриптов RastrWin.
2. IE в качестве формы для элементов управления обеспечивает массу возможностей
для создания привычного пользовательского интерфейса программы Windows при работе
со скриптом RastrWin. Разработав диалог с помощью любого привычного средства
создания HTML страниц, можно использовать его в работе с RastrWin.
3. Некоторые методы IE требуют, чтобы работал цикл сообщений в вызывающей программе. Посольку скрипт не содержит собственного цикла
сообщений, необходим вызов функции Sleep, которая обеспечивает "прокачку" сообщений основного окна программы. Типичным примером
функции, требующей применения этой техники является Quit. В случае, если эту команду выполнить без последующего использования
Sleep, окно IE исчезнет только после завершения работы скрипта. Если после Quit выполнить, например, Sleep(100), окно IE будет закрыто сразу .
* Примеры разрабатывались с использованием IE 7.0 и Windows
XP SP2.
|