Visual FoxPro Web BROWSER (VFWB)





В этой статье мы рассмотрим основные возможности 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

Хостинг от uCoz