Урок 59 Простой браузер
January 26, 2007
в колонках играет Настя Каменских – Какая разница
Сейчас попробуем смастерить некоторое подобие браузера, интересно, что же у нас получится…?
Кидаем на форму компонент CppWebBrowser с вкладки Internet, а также Edit, OpenDialog, ProgressBar с вкладки Win32, и семь Button'ов. Компонент CppWebBrowser, построенный на движке Internet Explorer позволяет полноценно просматривать HTML страницы и имеет большое количество возможностей.
Делаем кнопку OK – переход по URL:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
CppWebBrowser1->Navigate(Variant(Edit1->Text), NULL, NULL, NULL, NULL);
}
Кнопка Back – пердыдущая страница:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
CppWebBrowser1->GoBack();
}
Кнопка Next – следующая страница:
void __fastcall TForm1::Button3Click(TObject *Sender)
{
CppWebBrowser1->GoForward();
}
Кнопка Refresh - обновить:
void __fastcall TForm1::Button4Click(TObject *Sender)
{
CppWebBrowser1->Refresh();
}
Stop - остановить переход:
void __fastcall TForm1::Button5Click(TObject *Sender)
{
CppWebBrowser1->Stop();
}
Для открытия браузером локальных файлов пишем:
void __fastcall TForm1::Button6Click(TObject *Sender)
{
if(OpenDialog1->Execute())
{
CppWebBrowser1->Navigate(Variant(OpenDialog1->FileName), NULL, NULL, NULL, NULL);
}
}
Чтобы научить наш браузер сохранять страницы воспользуемся следующим кодом:
void __fastcall TForm1::Button7Click(TObject *Sender)
{
TVariant *in;
TVariant *out;
CppWebBrowser1->QueryStatusWB(Shdocvw_tlb::OLECMDID_SAVEAS);
CppWebBrowser1->ExecWB(Shdocvw_tlb::OLECMDID_SAVEAS, Shdocvw_tlb::OLECMDEXECOPT_DODEFAULT, in, out);
}
Делаем обработчик события KeyPress для Edit1, чтобы переход на страницы осуществлять нажатием Enter в Edit'e:
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if(Key == VK_RETURN)
{
CppWebBrowser1->Navigate(Variant(Edit1->Text), NULL, NULL, NULL, NULL);
}
}
Для того чтобы наглядно видеть прогресс при загрузке страниц в обработчике события OnProgressChange для CppWebBrowser'a пишем:
void __fastcall TForm1::CppWebBrowser1ProgressChange(TObject *Sender,
long Progress, long ProgressMax)
{
ProgressBar1->Max = ProgressMax;
ProgressBar1->Position = Progress;
}
Чтобы в заголовке формы и в Edit'e, отображалось место, куда мы перешли, в событии NavigateComplete2 (CppWebBrowser’a) пишем:
void __fastcall TForm1::CppWebBrowser1NavigateComplete2(TObject *Sender,
LPDISPATCH pDisp, Variant *URL)
{
Edit1->Text = CppWebBrowser1->LocationURL;
Form1->Caption = CppWebBrowser1->LocationName;
}
Вот и всё: браузер под названием «просто и сердито» готов, конечно, если фантазия хоть немного работает, можно неплохо усовершенствовать этот «зародыш», ведь у компонента CppWebBrowser много полезных свойств и функций, я уж молчу об интерфейсе...