На этом шаге мы рассмотрим создание Web-браузера с помощью Delphi.
Поскольку WWW заняла в Интернет положение явного лидера, а инструменты для ее просмотра, браузеры, стали, соответственно, чуть ли не самыми популярными программами, - существует возможность изготовить такую программу самостоятельно с помощью Delphi. Web-браузер в Delphi можно изготовить всего за несколько минут. Причем, эта задача может иметь и практическое применение. Можно создать браузер, осуществляющий доступ только на те серверы, которые требуются для служебных нужд. Во-вторых, многие корпоративные задачи, также, можно решить, если в организации установить сервер Web. В результате будет создано то, что называется интранет. В этом случае можно использовать свой браузер и настроить его так, чтобы осуществлять доступ только к внутреннему Web-серверу компании.
Для создания браузера нужно выполнить следующие действия:
Рис.1. Внешний вид формы
if (ComboBox1.Text <> '') then WebBrowser1.Navigate(ComboBox1.Text);
if (Key = VK_RETURN) then begin Key: = 0; if (ComboBox1.Text = '') then exit; ComboBox1.Items.Insert(0,ComboBox1.Text); ComboBox1Click (Sender); end;
Рис.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.
На следующем шаге мы приведем некоторый дополнительный теоретический материал.