В этой статье мы рассмотрим основные возможности
Visual FoxPro WEB Browser.
Своего движка программа не имеет, поэтому
для ее работы нужен IE 3.0 и выше.
Основные функции программы только перечислю без комментариев:
"Вперед", "Назад", "Обновить", "Остановить".
Помимо этих функций броузер имеет такие функции, как:
1) Web Finder
2) Открыть в IE
Относительно второй функции могу сказать только то, что
она запускает основное окно IE с той же страницей, которую вы в
данный момент просматриваете в VFWB.
"WEB FINDER" - функция, предназначенная для поиска в сети
документов с заданными фразами, используя самые известные поисковики
и каталоги. Есть возможность обработки исключаемых слов и фраз. По
сути, Web Finder является той самой приятной мелочью для пользователя,
облегчающей такую трудную задачу, как поиск в Инете.
Но перейдем к техническим подробностям:
Уже по названию программы (см. заголовок статьи :-) ) можно
угадать, что разработана программа в среде MS Visual FoxPro 6.0.
ОСНОВНЫЕ МОДУЛИ ПРОГРАММЫ:
1) WEBBR_APP.PRG - ядро программы,
содержащее основные и доп. функции
2) WEBVWR.SCX - собственно,
само окно броузера.
3) WEBFIND.SCX - экран
Web Finder
4) WPLHELP.SCX & WPLHLP2.SCX -
- экраны Хелпа.
Библиотеки классов:
5) SOLUTION.SCX
6) _WEBVIEW.VCX
7) _INTERNET.VCX
8) _FRAMEWK.VCX
9) _APP.VCX
10) _BASE.VCX
11) _TABLE.VCX
12) WEBBR_APP.VCX
13) _HYPERLINK.VCX
14) _ENVIRON.VCX
15) _DIALOGS.VCX
16) REGISTRY.VCX
17) _CONTROLS.VCX
18) _UI.VCX
19) _MOVERS.VCX
Необходимо заметить, что модули (5)-(19), кроме (12) входят в состав
MS Visual FoxPro 6.0 и MSDN'98.
Начнем со структуры модуля WEBBR_APP.PRG
|
* Project Visual FoxPro Web Browser (VFWB)
* Compiled with: MS VFP 6.00
* AUTHOR: _STONE
* BASED ON MICROSOFT FOUNDATION CLASSES (MFC)
* Kernel WPL5 3.10.06
* 21.12.2001
#include "_framewk.h"
*#include "ddefunc.prg"
* Если программа уже выполняется, то...
#ifdef _kernel_
messagebox "программа уже выполняется"
APP_GLOBAL.RELEASE()
#endif
* Объявим константы
public GoApp
#define _kernel_ && Спец. для WEBBR
#DEFINE APP_SUPERCLASS "_application"
#DEFINE APP_CLASSNAME "app_application"
#DEFINE APP_SPLASHCLASS "app_splash"
#DEFINE APP_EVDOCLASS "APP_EVDO"
#DEFINE APP_SPLASHCLASSLIB "..\WEBBR_APP.VCX"
#DEFINE APP_SPLASHDELAY 10
#define CANNOT_WORK "Не могу работать дальше!"
#define classlib "..\WEBBR_APP.VCX"
#define APP_GLOBAL goApp
#define KERNEL_VERSION 30
#DEFINE APP_ALREADY_RUNNING_LOC "Эта программа уже выполняется."
#DEFINE APP_FEATURE_NOT_AVAILABLE_LOC "Невозможно."
#DEFINE _WinPlus sys(3050)
#DEFINE ONCE_NUM1 BITXOR(100682, 1365190)
#DEFINE ONCE_NUM2 BITXOR(100684, 11365340)
#DEFINE ONCE_NUM3 BITXOR(100686, 113650790)
******
public sp, freemem&&
*****
do form panel2.scx
FM=SYS(1001)
DSP=DISKSPACE()
#IFDEF _WinPlus
? sys(2020)
CAPTION="Visual FoxPro WEB Browser" && Название программы
DO FORM Webvwr.scx && Выводим на экран основной
&& диалог броузера
public APP_GLOBAL && Если что-то
#ifndef APP_GLOBAL && не так,
quit && то сматываем удочки
#endif
on key label "ALT+F10" APP_GLOBAL.RELEASE() && Выход из программы
* по нажатию ALT_F10
on key label "F5" do runcode.prg
* Отключаем ESC поскольку вып. команды CANCEL, вызываемой нажатием
* этой клавиши, чревато неприятными последствиями
on key label "ESC" do none.prg
?? CHR(7)
* Объявляем APP_GLOBAL
APP_GLOBAL = NEWOBJECT(APP_CLASSNAME, CLASSLIB)
IF VARTYPE(APP_GLOBAL) = "O" ;
AND ACLASS(WLACHECK,APP_GLOBAL) > 0 AND ;
ASCAN(WLACHECK,UPPER(APP_SUPERCLASS)) > 0
ENDIF
APP_GLOBAL.cReference =[APP_GLOBAL]
APP_GLOBAL.cFormMediatorName = [APP_MEDIATOR_NAME]
#IFDEF APP_CD
APP_CD
#ENDIF
* Программа создает TEMP-файлы,
* поэтому ей нужно соответствующее пространство на
* HD
* |||
* |||
* \|/
* *
IF (DISKSPACE()<60) && "Отказываюсь работать, если на текущем диске меньше...
&& ...60 кило свободного места"
MESSAGEBOX("СЛИШКОМ МАЛО СВОБОДНОГО МЕСТА НА ЖЕСТКОМ ДИСКЕ! ", CANNOT_WORK)
APP_GLOBAL.RELEASE()
ENDIF
&& Показываем Splash Screen
LOCAL llAppRan, lnSeconds, loSplash
losplash=.NULL.
lnSeconds=seconds()
LoSplash=newobject("APP_SPLASH", ClassLib)
LoSplash.show()
APP_GLOBAL.cReference =[APP_GLOBAL]
APP_GLOBAL.cFormMediatorName = [APP_MEDIATOR_NAME]
IF VARTYPE(loSplash) = "O"
LNSECONDS=10
IF SECONDS() < lnSeconds + APP_SPLASHDELAY
=INKEY(APP_SPLASHDELAY-(SECONDS()-lnSeconds),"MH")
ENDIF
loSplash.Release()
loSplash = .NULL.
ENDIF
&& Закрываем Splash Screen
RELEASE wLACHECK,llAppRan, lnSeconds, loSplash
IF NOT APP_GLOBAL.Show()
IF TYPE([APP_GLOBAL.Name]) = "C"
MESSAGEBOX(CANNOT_WORK,16,Caption )
APP_GLOBAL.Release()
ELSE
MESSAGEBOX(CANNOT_WORK,16)
ENDIF
ELSE
llAppRan = .T.
ENDIF
IF TYPE (APP_GLOBAL.LrEADEvents="L")
IF APP_GLOBAL.lReadEvents
APP_GLOBAL.Release()
ENDIF
ELSE
MESSAGEBOX('Есть проблемы. Прерываю загрузку.',16)
APP_GLOBAL.RELEASE()
ENDIF
IF TYPE([APP_GLOBAL]) = "O"
* non-read events app
ENDIF
IF VARTYPE(APP_GLOBAL) = "O" ;
AND ACLASS(WLACHECK,APP_GLOBAL) > 0 AND ;
ASCAN(WLACHECK,UPPER(APP_SUPERCLASS)) > 0
RETURN APP_GLOBAL
endif
* конец
LLaPPrAN=.T.
#endif
*ДАЛЕЕ ИДУТ ДОПОЛНИТЕЛЬНЫЕ ФУНКЦИИ, КОД КОТОРЫХ ВЫ МОЖЕТЕ НАЙТИ
СКАЧАВ ИСХОДНИКИ VFWB (см. раздел "Исходники")
Далее, следуя простой логике, перейдем к структуре модуля WEBVWR.SCX.
имеется 4 основных функции (метода):
1) INIT - инициализация модуля
2) LOAD
3) NAVIGATE - грубо говоря, "заставляет" показывать нужный документ (HTML)
4) RELEASE - закрытие экрана броузера.
Основные объекты:
1) _WEB - OLE-контейнер, обеспечивающий непосрдственно простор документа
2) cboURL - строка ввода пути к документу.
Основные переменные:
1) tcurl - содержит в себе путь к документу, определенному пользователем.
2) tc2 - спец. копия TCURL
Примеры применения:
1) Задача: перейти на страницу HTTP://WWW.MICROSOFT.COM
tcurl="HTTP://WWW.MICROSOFT.COM"
THIS.PARENT._Web.Navigate(tcURL)
2) А теперь пусть пользователь выберет сам документ,
который хочет просмотреть
public tcURL
tcURL=LOWER(GETFILE("htm|html|htx|asp","имя файла:")) && Вызываем "Open File"
if file (tcURL) && если файл действительно существует, то...
IF EMPTY(tcURL) && проверяем правильность заданного имени файла
RETURN .F.
ENDIF
THIS.PARENT._Web.Navigate(tcURL) && ... Показываем документ с помощью
ENDIF && _Web OLE CONTROL
Итак, мы рассмотрели основные функции VFWB. Но поскольку на сайте есть
полный исходный исходный текст программы (скоро, вероятно, появится и полная
откомпилированая версия.), то Вы можете сами до конца
разобраться в ее структуре.
Желаю удачи! _Stone
Примечание:
В конце января-начале февраля выйдет версия 1.10,
в которой будет реализована возможность оставлять закладки (Bookmarks).
Предполагается также немного усовершенствовать Web Finder.
AUTHOR: _STONE igevdo@mail.ru