Открыть ссылку все в том же WebBrowser, а не в отдельном окне IE - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. {$apptype windows}
  2. {$reference 'System.Windows.Forms.dll'}
  3. uses
  4. System,
  5. System.Windows.Forms,
  6. System.Net;
  7. var w := new WebBrowser;
  8. var bbr := new Form;
  9. begin
  10. bbr.WindowState := FormWindowState.Maximized;
  11. w.Url := new System.Uri('http://www.google.ru/');
  12. w.Dock := Dockstyle.Fill;
  13. bbr.Controls.Add(w);
  14. Application.Run(bbr);
  15. end.
Вот его код. Проблемы: 1).Открываеться гугл(на досуге изменю на яндекс), но если ввести поиск и нажать на ссылку, открываеться Интернет Експлорер. Как исправить? 2).Как добавить кнопку "На предыдущую страницу"? 3).Как сделать простую адресную строку?
И еще заголовок не добавляеться

Решение задачи: «Открыть ссылку все в том же WebBrowser, а не в отдельном окне IE»

textual
Листинг программы
  1. {$apptype windows}
  2. {$reference 'System.Windows.Forms.dll'}
  3.  
  4. uses
  5.   System.Windows.Forms,
  6.   System.Net;
  7.  
  8. var
  9.   url: string := '';
  10.   w := new WebBrowser;
  11.  
  12. procedure LinkClicked(sender: Object; e: System.EventArgs);
  13. begin
  14.   var link: HtmlElement := w.Document.ActiveElement;
  15.   url := link.GetAttribute('href');
  16. end;
  17.  
  18. procedure MyDocumentCompleted(sender: object; e: WebBrowserDocumentCompletedEventArgs);
  19. begin
  20.   var links: HtmlElementCollection := w.Document.Links;
  21.  
  22.   foreach item: HtmlElement in links do
  23.     item.AttachEventHandler('onclick', LinkClicked);
  24. end;
  25.  
  26. procedure MyNewWindow(sender: Object; e: System.ComponentModel.CancelEventArgs );
  27. begin
  28.   var wb := sender as WebBrowser;
  29.   wb.Navigate(url);
  30.   e.Cancel := true;
  31. end;
  32.  
  33.  
  34. begin
  35.   var myForm := new Form;
  36.  
  37.   w.Url := new System.Uri('http://vk.com');
  38.   w.Dock := Dockstyle.Fill;
  39.  
  40.   w.NewWindow += MyNewWindow;
  41.   w.DocumentCompleted += MyDocumentCompleted;
  42.  
  43.   myForm.Controls.Add(w);
  44.   myForm.WindowState := FormWindowState.Maximized;
  45.   Application.Run(myForm);
  46. end.

Объяснение кода листинга программы

  1. Объявлены переменные:
    • url (строка) - для хранения URL-адреса, который будет получен при клике по ссылке;
    • w (объект WebBrowser) - для отображения веб-страниц.
  2. Определены процедуры:
    • LinkClicked (Object sender, System.EventArgs e) - обрабатывает клик по ссылке, сохраняя URL в переменную url;
    • MyDocumentCompleted (object sender, WebBrowserDocumentCompletedEventArgs e) - выполняется при завершении загрузки документа в WebBrowser, подключает обработчик событий к каждой ссылке;
    • MyNewWindow (Object sender, System.ComponentModel.CancelEventArgs e) - отменяет открытие нового окна браузера и вместо этого навигация осуществляется в том же окне.
  3. Создано окно приложения (Form) и добавлен в него объект WebBrowser (w).
  4. Установлены события:
    • w.DocumentCompleted - вызывается процедура MyDocumentCompleted;
    • w.NewWindow - вызывается процедура MyNewWindow.
  5. Задано начальное URL-адрес для объекта WebBrowser (w).
  6. Запущена основная программа, которая включает в себя создание и отображение окна приложения, а также обработку событий.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.636 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы