Создание Internet-приложений в среде Delphi. Создание Web-браузера

   
На этом шаге мы рассмотрим создание Web-браузера с помощью Delphi.

   
Поскольку WWW заняла в Интернет положение явного лидера, а инструменты для ее
просмотра, браузеры, стали, соответственно, чуть ли не самыми популярными программами, -
существует возможность изготовить такую программу самостоятельно с помощью Delphi.
Web-браузер в Delphi можно изготовить всего за несколько минут. Причем,
эта задача может иметь и практическое применение. Можно создать браузер, осуществляющий
доступ только на те серверы, которые требуются для служебных нужд. Во-вторых, многие
корпоративные задачи, также, можно решить, если в организации установить сервер Web.
В результате будет создано то, что называется интранет. В этом случае можно
использовать свой браузер и настроить его так, чтобы осуществлять доступ только к внутреннему Web-серверу компании.

   
Для создания браузера нужно выполнить следующие действия:

  • Создать новое приложение. Свойству Caption формы присвоить значение "Браузер".
  • Поместить на форму компонент Panel и изменить его размеры, задав свойству
    Align значение alTop и значение 60 для свойства Height. Свойство Caption очистите.
  • Добавить в панель компонент ComboBox и увеличить ширину этого компонента до
    размера панели. Далее можно присвоить в качестве значения свойству Text имя
    некоторого Web-сервера (например, http://www.rambler.ru).
  • Добавить компонент StatusBar. Он автоматически поместится в нижней части
    формы. Измените значение свойства SimplePanel наTrue.
  • Последним компонентом будет компонент TWebBrowser. Нужно поместить его в
    центре формы. После изменения свойства Align на alClient этот компонент заполнит
    все свободное пространство формы. Теперь форма выглядит, как показано на рисунке 1.


    Рис.1. Внешний вид формы

  • Выберите поле со списком ComboBox1 и создайте обработчик события OnClick.
    Для этого в Инспекторе Объектов на странице Events дважды щелкните на пустом поле
    напротив события OnClick. В обработчик данного события нужно вставить следующий код:

      if (ComboBox1.Text <> '') then WebBrowser1.Navigate(ComboBox1.Text);
    
  • Далее создайте обработчик события OnKeyDown, в него добавьте следующие строки:
      if (Key = VK_RETURN) then
      begin
        Key: = 0;
        if (ComboBox1.Text = '') then exit;
        ComboBox1.Items.Insert(0,ComboBox1.Text);
        ComboBox1Click (Sender);
      end;
    
  • Откомпилируйте и запустите программу. Нажимите на клавишу Enter, когда на экране
    появится форма. Если в поле со списком указан правильный адрес, то в браузер должна загрузиться
    страница с указанного ресурса. Если в адресе ошибка - нужно отредактировать строку и
    опять нажать Enter. Результат работы приложения изображен на рисунке 2:


    Рис.2. Результат работы приложения

  •    
    Добавим еще несколько деталей.

       
    Во всех популярных программах просмотра Web в строке состояния отображается процесс
    загрузки документов. В данном приложении можно тоже реализовать эту возможность. На этом
    примере можно рассмотреть еще несколько свойств компонента TWebBrowser. Для этого
    вставим в процедуру обработки события OnProgressChange этого компонента следующий текст:

    procedure TForm1.WebBrowser1ProgressChange(Sender: TObject;
           Progress, ProgressMax: Integer);
    var
      Percent: Integer;
    begin
      if Progress<=0 then
          StatusBar1.SimpleText:='Выполнено'
      else
        begin
          if ProgressMax=0 then Percent:=0
          else  Percent:=(Progress*100) div ProgressMax;
          StatusBar1.SimpleText:=Format('Получение 
               документа:%d%% из %dK',[Percent,ProgressMax div 1024]);
        end;
    end;
    

       
    Параметры Progress и ProgressMax обработчика события OnProgressChange содержат значения в байтах полученной части документа и его размера. В результате формула:

        Percent: = (Progress *100) div ProgressMax;
    

    будет давать процент загрузки документа. Когда документ получен полностью, параметр Progress принимает значение -1.
    В этом случае в строке состояния будет пропечатываться слово "Выполнено".

       
    В данной программе пока нет ни меню, ни кнопок. Далее можно добавить на панель пять командных
    кнопок, на которых делаются надписи "Обновить", "Стоп", "Домой", "Вперед" и "Назад", а
    в обработчики события OnClick этих кнопок добавить вызовы методов Refresh, Stop, GoHome, GoForward и
    GoBack соответственно. Добавляемый текст можно увидеть в листинге.

       
    Метод Home загружает домашнюю страницу. URL этой страницы выбирается из раздела
    реестра Windows:

      HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main,
    

    где он помещtн под именем Startpage. Это значение можно изменить в Delphi с
    помощью объектов TRegistry или TRegistryIniFile или непосредственно в Windows через настройки Internet Explorer'a.

       
    Внешний вид окна браузера приведен на рисунке 3.


    Рис.3. Окончательный вид браузера

       
    Текст приложения:

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, OleCtrls, SHDocVw, ComCtrls, StdCtrls, ExtCtrls;
    
    type
      TForm1 = class(TForm)
        Panel1: TPanel;
        ComboBox1: TComboBox;
        StatusBar1: TStatusBar;
        WebBrowser1: TWebBrowser;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Button5: TButton;
        procedure ComboBox1Click(Sender: TObject);
        procedure ComboBox1KeyDown(Sender: TObject; var Key: Word;
          Shift: TShiftState);
        procedure WebBrowser1ProgressChange(Sender: TObject; Progress,
          ProgressMax: Integer);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure Button5Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.ComboBox1Click(Sender: TObject);
    begin
      if (ComboBox1.Text <> '') then
            WebBrowser1.Navigate(ComboBox1.Text);
    end;
    
    procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Key = VK_RETURN) then
      begin
        Key:= 0;
        if (ComboBox1.Text = '') then exit;
        ComboBox1.Items.Insert(0,ComboBox1.Text);
        ComboBox1Click (Sender);
      end;
    end;
    
    procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress,
      ProgressMax: Integer);
    var
      Percent: Integer;
    begin
      if Progress<=0 then
          StatusBar1.SimpleText:='Выполнено'
      else
        begin
          if ProgressMax=0 then Percent:=0
          else  Percent:=(Progress*100) div ProgressMax;
          StatusBar1.SimpleText:=Format
                    ('Получение документа:%d%% из %dK',[Percent,ProgressMax div 1024]);
        end;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    //Кнопка "Обновить".
    begin
       WebBrowser1.Refresh();
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    //Кнопка "Стоп".
    begin
      WebBrowser1.Stop();
      StatusBar1.SimpleText:='Выполнено';
    end;
    
    procedure TForm1.Button3Click(Sender: TObject);
    //Кнопка "Домой".
    begin
      WebBrowser1.GoHome();
    end;
    
    procedure TForm1.Button4Click(Sender: TObject);
    //Кнопка "Вперед".
    begin
      WebBrowser1.GoForward();
    end;
    
    procedure TForm1.Button5Click(Sender: TObject);
    //Кнопка "Назад".
    begin
      WebBrowser1.GoBack();
    end;
    
    end.
    
    

    Текст приложения можно взять здесь.

       
    На следующем шаге мы приведем некоторый дополнительный теоретический материал.



    Вы можете оставить комментарий, или Трекбэк с вашего сайта.

    Оставить комментарий