Открыть ссылку все в том же WebBrowser, а не в отдельном окне IE - PascalABC.NET
Формулировка задачи:
Вот его код.
Проблемы:
1).Открываеться гугл(на досуге изменю на яндекс), но если ввести поиск и нажать на ссылку, открываеться Интернет Експлорер. Как исправить?
2).Как добавить кнопку "На предыдущую страницу"?
3).Как сделать простую адресную строку?
И еще заголовок не добавляеться
Решение задачи: «Открыть ссылку все в том же WebBrowser, а не в отдельном окне IE»
textual
Листинг программы
{$apptype windows}
{$reference 'System.Windows.Forms.dll'}
uses
System.Windows.Forms,
System.Net;
var
url: string := '';
w := new WebBrowser;
procedure LinkClicked(sender: Object; e: System.EventArgs);
begin
var link: HtmlElement := w.Document.ActiveElement;
url := link.GetAttribute('href');
end;
procedure MyDocumentCompleted(sender: object; e: WebBrowserDocumentCompletedEventArgs);
begin
var links: HtmlElementCollection := w.Document.Links;
foreach item: HtmlElement in links do
item.AttachEventHandler('onclick', LinkClicked);
end;
procedure MyNewWindow(sender: Object; e: System.ComponentModel.CancelEventArgs );
begin
var wb := sender as WebBrowser;
wb.Navigate(url);
e.Cancel := true;
end;
begin
var myForm := new Form;
w.Url := new System.Uri('http://vk.com');
w.Dock := Dockstyle.Fill;
w.NewWindow += MyNewWindow;
w.DocumentCompleted += MyDocumentCompleted;
myForm.Controls.Add(w);
myForm.WindowState := FormWindowState.Maximized;
Application.Run(myForm);
end.
Объяснение кода листинга программы
- Объявлены переменные:
- url (строка) - для хранения URL-адреса, который будет получен при клике по ссылке;
- w (объект WebBrowser) - для отображения веб-страниц.
- Определены процедуры:
- LinkClicked (Object sender, System.EventArgs e) - обрабатывает клик по ссылке, сохраняя URL в переменную url;
- MyDocumentCompleted (object sender, WebBrowserDocumentCompletedEventArgs e) - выполняется при завершении загрузки документа в WebBrowser, подключает обработчик событий к каждой ссылке;
- MyNewWindow (Object sender, System.ComponentModel.CancelEventArgs e) - отменяет открытие нового окна браузера и вместо этого навигация осуществляется в том же окне.
- Создано окно приложения (Form) и добавлен в него объект WebBrowser (w).
- Установлены события:
- w.DocumentCompleted - вызывается процедура MyDocumentCompleted;
- w.NewWindow - вызывается процедура MyNewWindow.
- Задано начальное URL-адрес для объекта WebBrowser (w).
- Запущена основная программа, которая включает в себя создание и отображение окна приложения, а также обработку событий.