Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

WebBrowser

343
11 августа 2008 года
lena_ki
282 / / 14.04.2005
Есть код:
Код:
AnsiString Link;
void __fastcall TFormClient::[COLOR=#000000]WebBrowser1DocumentComplete[/COLOR][COLOR=#000000]([/COLOR]TObject *ASender,
     const IDispatch *pDisp, OleVariant &URL[COLOR=#000000])[/COLOR]
[COLOR=#000000]{[/COLOR]
 
 Panel2->Enabled = true;
[COLOR=#000000]}[/COLOR]
 
void __fastcall TFormClient::[COLOR=#000000]WebBrowser1BeforeNavigate2[/COLOR][COLOR=#000000]([/COLOR]TObject *ASender,
     const IDispatch *pDisp, OleVariant &URL, OleVariant &Flags,
     OleVariant &TargetFrameName, OleVariant &PostData, OleVariant &Headers,
     WordBool &Cancel[COLOR=#000000])[/COLOR]
[COLOR=#000000]{[/COLOR]
 Panel2->Enabled = false;
[COLOR=#000000]}[/COLOR]
 
 
 
 
[COLOR=#000099]//FormCreate[/COLOR]
              AnsiString Path = ExtractFilePath[COLOR=#000000]([/COLOR]Application->ExeName[COLOR=#000000])[/COLOR];
     Path = Path + [COLOR=#000066]"ADO.ini"[/COLOR];
        if[COLOR=#000000]([/COLOR]FileExists[COLOR=#000000]([/COLOR]Path[COLOR=#000000])[/COLOR][COLOR=#000000])[/COLOR]
        [COLOR=#000000]{[/COLOR]
        TIniFile *Ini;
        Ini = new TIniFile[COLOR=#000000]([/COLOR]Path[COLOR=#000000])[/COLOR];
        Link = Ini->ReadString[COLOR=#000000]([/COLOR][COLOR=#000066]"Nav"[/COLOR],[COLOR=#000066]"Link"[/COLOR],[COLOR=#000066]"http://Lenailicheva.narod.ru/js2.html"[/COLOR][COLOR=#000000])[/COLOR];
        WebBrowser1->Navigate[COLOR=#000000]([/COLOR]Link[COLOR=#000000])[/COLOR];
        [COLOR=#000099]//WebBrowser2->Navigate(Link);[/COLOR]
        delete Ini;
 
[COLOR=#000099]/*
В ini файле:
[Nav]
Link = http://Lenailicheva.narod.ru/js2.html
*/[/COLOR]


После загрузки [COLOR=#000099]js2.html [/COLOR][COLOR=black]в WebBrowser1 становяться доступны кнопки на Panel2. Эти кнопки вызывают функции javacsript.[/COLOR]

Пример:
Код:
void __fastcall TFormClient::SpeedButton1Click(TObject *Sender)
{
//
 try
 {
 StatusBar1->Panels->Items[0]->Text = "";
 CComPtr<IHTMLDocument2>spDoc2;
 CComPtr<IHTMLWindow2>spWnd;
 WebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*) &spDoc2);
 spDoc2->get_parentWindow(&spWnd);
 VARIANT Out;
 spWnd->execScript(WideString("addControl(2)"),WideString("javascript"), &Out);
 StatusBar1->Panels->Items[0]->Text = "Инстумент режимов просмотра добавлен в правый верхний угол карты";
 }
  catch(...)
   {
  ShowMessage("Не удалось загрузить инструмент режимов просмотра карты");
   }
}


А как быть в следущей ситуации:
Из компьютера, например, вынут сетевой шнур, следовательно Интернет не доступен. В этом случае в окно WebBrowser1 грузиться страница "Не возможно отобразить страницу" и панель снова становиться Enabled = true;
Соотвествнно становяться доступны кнопки, нажатие которых приводит к ошибкам javascript. Как правильно обработать эту ситуацию?
11
11 августа 2008 года
oxotnik333
2.9K / / 03.08.2007
OnNavigateError
343
11 августа 2008 года
lena_ki
282 / / 14.04.2005
 
Код:
void __fastcall TFormClient::WebBrowser1NavigateError(TObject *ASender,
   const IDispatch *pDisp, OleVariant &URL, OleVariant &Frame,
   OleVariant &StatusCode, WordBool &Cancel)
{
  ShowMessage("Не удалось связаться с сервером");
  Panel2->Enabled = false;
}


Затем сразу наступает событие:
 
Код:
void __fastcall TFormClient::WebBrowser1DocumentComplete(TObject *ASender,
   const IDispatch *pDisp, OleVariant &URL)
{
  Panel2->Enabled = true;
}


И снова кнопки доступны. Что надо заводить глобальную переменную типа bool и отслеживать ее как флаг? Или есть более правильный способ?
246
11 августа 2008 года
GIZMO
1.8K / / 30.07.2004
Цитата: lena_ki
Есть код:
...
А как быть в следущей ситуации:
Из компьютера, например, вынут сетевой шнур, следовательно Интернет не доступен. В этом случае в окно WebBrowser1 грузиться страница "Не возможно отобразить страницу" и панель снова становиться Enabled = true;
Соотвествнно становяться доступны кнопки, нажатие которых приводит к ошибкам javascript. Как правильно обработать эту ситуацию?


Можно посмотреть, что в BeforeNavigate2 приходит если, что-то типа - res://C:\WINDOWS\System32\shdoclc.dll/navcancl.htm
нет подключения.

ЗЫ: отлов полной загрузки документа организован неправильно, так будет вызваться для каждого фрейма.
Как надо - посмотри в справке или Здесь

343
11 августа 2008 года
lena_ki
282 / / 14.04.2005
> отлов полной загрузки документа организован неправильно, так будет вызваться для каждого фрейма

Фреймов не будет. Грузиться только карта google.

Cпасибо за ссылку. :)
11
11 августа 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: GIZMO

ЗЫ: отлов полной загрузки документа организован неправильно, так будет вызваться для каждого фрейма.


а так тоже по фреймам будет:

 
Код:
READYSTATE rs;
        do
        {
                spWB->get_ReadyState(&rs);
                this->Caption = "Loading...";
                Application->ProcessMessages();
                Sleep(50);
        }while (rs != READYSTATE_COMPLETE && !Stop);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог