Форма входа

Категории раздела

Мои статьи [15]

Поиск

Наш опрос

Оцените мой сайт
Всего ответов: 62

Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0




Пятница, 03.05.2024, 04:32
Приветствую Вас Гость | RSS

Delphiport.ucoz.com

Главная | Регистрация | Вход
Каталог статей


Главная » Статьи » Мои статьи

Компонент WebBrowser - пишем свой браузер в Delphi

    Сегодня будем писать на Delphi, простенький, за то свой собственный браузер. Создавать мы его будем на базе компонента WebBrowser со вкладки палитры компонентов - Internet. Для этого первым делом разместим на форме все самое необходимое...

1) Один компонент WebBrowser со вкладки Internet , 13-шт компонентов SpeedButton, 1- компонент ComboBox, 1 - компонент Panel, 1 - компонент ProgressBar, 1 - компонент StatusBar, 1 - компонент OpenDialog и 1 - компонент SaveDialog. Разместим их на форме примерно следующим образом:

   В uses подключаем  MSHTML и ActiveX

Иконки для кнопок SpeedButton мной были подготовлены заранее, поэтому заготовка в принципе имеет вполне презентабельный вид.

    Итак начнем. 

2) Создадим событие OnCreate на форме и запишем в нем следующий код:

begin

WebBrowser1.Navigate('http://www.google.com');

end;

Вместо google.com можно ввести адрес любой странички, которую бы вы хотели лицезреть при запуске браузера.

Далее пропишем клавишу "вперед", то есть ту самую кнопку при помощи которой, мы будем бороздить просторы интернета. Kнопку, которую будем нажимать после ввода адреса в ComboBox. Для этого:

3) Создадим событие OnClick на SpeedButton6  например, и в коде напишем:

var

a:string; 

begin

WebBrowser1.Navigate(ComboBox1.Text);  // Передаем в поиск, введенный адрес из ComboBox1;

a:=ComboBox1.text;  // Записываем параллельно этот адрес в переменную;

ComboBox1.Items.Add(a);  // Загружаем введенное в список  ComboBox1;

end;

    Заморочка с помещением введенного адреса в выпадающий список, будет позволять нам при нажатии на СomboBox, просматривать историю вводимых вручную адресов, в строку браузера.

   

    Далее для удобства сделаем так, чтобы данный механизм работал не только от SpeedButton6, но и от нажатия нами на клавишу Enter, для этого:

3) Создадим событие OnKeyPress y компонента ComboBox1 запишем следующее:

var

a:string;

begin

if Key=#13 then

begin

WebBrowser1.Navigate(ComboBox1.Text);

a:=ComboBox1.text;

ComboBox1.Items.Add(a);

end;

end;

теперь серфить можно и по нажатии клавиши Enter.


    Теперь заставим работать клавиши - шаг назад и шаг вперед.

4) Для клавиши - Шаг назад, пишем в событии OnClick у кнопки SpeedButton1:

var

Doc, Histor: Variant;

begin

Doc:= WebBrowser1.OleObject.document;  //Ссылаемся на интерфейс документа;

if TVarData(Doc).VDispatch = nil then Exit;  //Если документ отсутствует, тогда выходим;

Histor:=Doc.parentWindow.history;  {Объект документа - объект родительского окна - объект содержащий

историю переходов Шаг назад к предыдущему URL.};

Histor.go(-1);

end;


5) Для клавиши - Шаг вперед пишем в событии OnClick у кнопки SpeedButton2:

var

Doc, Histor: Variant;

begin

Doc:= WebBrowser1.OleObject.document;  //Ссылаемся на интерфейс документа;

if TVarData(Doc).VDispatch = nil then Exit;  //Если документ отсутствует, тогда выходим; 

Histor:=Doc.parentWindow.history;  {Объект документа - объект родительского окна - объект содержащий

историю переходов Шаг вперед к предыдущему URL.};

Histor.go(1);

end;


6) Для перехода на домашнюю страничку в OnClick на SpeedButton5 пишем;

begin

WebBrowser1.GoHome;

end;


7) Для остановки загрузки в OnClick на SpeedButton4 пишем;

begin

WebBrowser1.Stop;

end;


8) Для обновления странички в OnClick на SpeedButton3 пишем; 

begin

WebBrowser1.Refresh;

end;


Итак, мы успешно прописали основные клавиши для работы нашего браузера. Теперь пропишем еше ряд батонов, придав нашему приложению дополнительную функциональность. Например, обеспечим открытие файлов в нашем браузере расположенных на локальных дисках.


9) Для этого в OnClick на SpeedButton7 пишем:

begin

if OpenDialog1.Execute then

begin

WebBrowser1.Navigate(OpenDialog1.FileName);

ComboBox1.Text:=OpenDialog1.FileName;

end;

end; 


10) Для возможности нашего браузера также сохранять странички на компьютер, в  OnClick на SpeedButton9 пишем:

begin

WebBrowser1.ExecWB(OLECMDID_SAVEAS, OLECMDEXECOPT_DODEFAULT);  //Сохраняем содержимое WebBrowser1;

end;

 

11) Для получения возможности печати по нажатию на SpeedButton8 в OnClick последнего пропишем:

var

PostData, Headers: OLEvariant;

begin

WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT, PostData, Headers);  //Печатаем содержимое TWebBrowser; 

end;


12) Для предварительного просмотра странички перед печатью, в  OnClick на SpeedButton10 пишем:

begin

WebBrowser1.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT);  //Предварительный просмотр;

end;


13) А для предварительной настройки ее параметров, в OnClick на SpeedButton11 пишем: 

begin

WebBrowser1.ExecWB(OLECMDID_PAGESETUP, OLECMDEXECOPT_DODEFAULT);  //Параметры страницы;

end;


14) Теперь организуем поиск слов на страничке, и в OnClick на SpeedButton12 пишем: 

begin

WebBrowser1.ExecWB(OLECMDID_FIND, OLECMDEXECOPT_DODEFAULT);  //Поиск слов на сайте;

end;


15) Чтобы сохранить исходный код в текстовый файл нужно:


а) В разделе Public записываем следующую процедуру

procedure SaveHTMLSourceToFile(const FileName: string; WB: TWebBrowser);  //процедура сохранения Url;


б) Жмем Ctrl+Shift+C;


в) В сгенерированном автоматически шаблоне TForm1.SaveHTMLSourceToFile(const FileName: string; WB: TWebBrowser);

прописываем:

var

PersistStream: IPersistStreamInit;

FileStream: TFileStream;

Stream: IStream;

SaveResult: HRESULT;

begin

PersistStream := WB.Document as IPersistStreamInit;

FileStream := TFileStream.Create(FileName, fmCreate);

try

Stream := TStreamAdapter.Create(FileStream, soReference) as IStream;

SaveResult := PersistStream.Save(Stream, True);

if FAILED(SaveResult) then

MessageBox(Handle, 'Fail to save HTML source', 'Error', 0);

finally

FileStream.Free;

end;

end;

г) Пишем в OnClick на SpeedButton13:

begin

if SaveDialog1.Execute then

SaveHTMLSourceToFile(SaveDialog1.FileName, WebBrowser1);

end;


16) Можно даже настроить режим уведомления об успешных загрузках документов, для этого в свойстве OnDocumentComplete компонента WebBrowser1, нужно прописать следующее:

begin

if URL=WebBrowser1.LocationURL Then

begin

ShowMessage('Документ успешно загружен');

end;

end;


17) Чтобы ProgressBar1 отображал ход загрузки страниц, в свойстве OnProgressChange компонента WebBrowser1, нужно прописать: 

begin

ProgressBar1.Max:=ProgressMax;

ProgressBar1.Position:=Progress;

end;


18) Если в событии OnStatusTextChange компонента WebBrowser1, прописать: 

begin

StatusBar1.Panels[0].text:=text;

end;

то URL хода загрузки, будет корректно отображаться в StatusBar;

  Ну вот в принципе и все, на сегодня. Если вы внимательно все повторяли, браузер должен работать как часики. В любом случае выкладываю исходник - /Ishodniki/Statji/WebBrowser/brauzer_v_delphi.rar, скачивайте, юзайте, сверяйтесь. Можете его доработать по своему, что то убрав, либо что то добавив. 

  Так что, удачных экспериментов друзья!!! Пишите комменты, если че...


Категория: Мои статьи | Добавил: Sashok (09.08.2012)
Просмотров: 27942 | Комментарии: 40 | Рейтинг: 4.3/10
Всего комментариев: 7
7 SergCes  
0
<a href=http://zmkshop.ru/stati/stroitelstvo-bystrovozvodimykh-zdaniy-iz-metallokonstruktsiy/>правила при возведении здания из мет конструкций</a>

6 avenue18  
0
Я считаю, что тема весьма интересна. Предлагаю Вам это обсудить здесь или в PM.

5 avenue17  
0
Прошу прощения, это мне не подходит. Кто еще, что может подсказать?

4 DavidDed  
0
Между нами говоря, рекомендую поискать ответ на Ваш вопрос в google.com

3 DavidDed  
0
Жалею, но ничего нельзя сделать.

2 BrentCum  
0
https://pq.hosting/ro/vps-vds-russia-moscow

1 Александр  
0
Очень подробно расписанная и полезная статья, спасибо!

Имя *:
Email *:
Код *:

Copyright MyCorp © 2024