Браузер своими рукамиЯ не могу понять - все развели какой-то базар вокруг войны Интернет браузеров.
Ie, Ns, Opera... Все чего-то там себе выбирают... Меня эта проблема не волнует,
я могу сам написать себе браузер - такой, как мне захочется. А тебе слабо? Я
думаю, что нет. Через десять минут у тебя тоже будет свой навигатор.
Предварительные установки
Ты снова должен запустить Delphi. Именно он позволяет очень быстро и без
особых проблем написать свой собственный браузер. Когда запустишь, то найди
закладку "Internet". Здесь должен быть компонент "WebBrowser" (он должен быть
последний). Если у тебя версия Delphi меньше, чем пятая, то этого компонента
может и не быть. Он может отсутствовать и если ты отказался устанавливать
инет-компоненты (по умолчанию они ставятся).
Выбери "Import ActiveX Control" из меню "Component".
В списке выбора этого окна (сверху) найди строку "Microsoft Internet Controls
(Version 1.1)". Версия может отличаться, но нам с тобой - акваланг. Теперь нажми
кнопку "Install". Перед тобой откроется окно и запрос. На запрос ты должен
ответить "Yes".
После того, как Delphi прошуршит мозгами, появится окно, которое сообщит об
успешной установке нового компонента. Нажми "OK" и закрой все, что открыл Delphi.
Для этого выбери "Close All" из меню "File". Теперь и у тебя есть компонент "WebBrowser",
только он расположен на странице "ActiveX" палитры компонентов.
Как ты мог заметить, мы будем использовать "Microsoft Internet Controls", т.е.
движок установленного на твоем компе IE. А это значит, что твой браузер
подхватит все болезни и глюки своего движка. Единственное, что может успокоить -
так это то, что интерфейс не будет таким занудным. Он будет таким, как ты
захочешь, потому что сделан твоими руками.
Первые шаги
Сейчас ты уже готов приступить к программированию. Создай новый проект ("File"
-> "New Application") и сразу измени заголовок и иконку. Как это делается, я
рассказал в статье про мега-медиа-плеер в этом же номере.
Двигаемся дальше. Установи на форму наш компонент "WebBrowser" (он находится
на закладке "Internet" или "ActiveX") - у тебя появится белый квадрат с именем
WebBrowser1. После этого брось на форму "CoolBar", который находится на закладке
"Win32" палитры компонентов. Это панелька, которая должна выровняться по
верхнему краю на твоей форме. Теперь выдели WebBrowser1 и перейди в
ObjectInspector. Щелкни по свойству "Align" и в выпадающем списке выбери "alClient".
"WebBrowser" должен растянуться на все свободное место формы.
Теперь брось на CoolBar1 (мы его недавно установили на форму) панель "ToolBar"
из закладки "Win32" и "ComboBox" из закладки "Standart" палитры компонентов. Все
это ты должен бросить именно внутрь CoolBar1, иначе ты получишь полный отстой.
После этого нужно выделить CoolBar1 и перейти в ObjectInspector. Здесь ты должен
изменить строку "AutoSize" на "true" (по умолчанию она "false").
Если что-то не получилось, то читай статью заново. Если и это не поможет, то
попробуй накатить пивка, это помогает думать :). Если все в порядке, то выделяй
ComboBox1 (выпадающий список) и переходи в ObjectInspector. Здесь ты должен
выделить закладку "Events" и произвести сложнейшее действие ДоублеКлике по
строке "OnKeyDown". ДоублеКлике нужно производить в правой половине строки. Если
ты не помнишь, где находиться "право" :), то щелкай по выпадающему списку (это и
есть "право"). Как и раньше, Delphi создаст процедуру. Она будет вызываться
каждый раз, когда ты будешь вводить какую-нибудь букву в "ComboBox". Здесь ты
должен написать следующее:
procedure TForm1.ComboBox1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = VK_RETURN then
WebBrowser1.Navigate(ComboBox1.Text);
end;
Примечание! Набирать на клаве нужно только то, что написано между Begin и End,
все остальное уже должно быть создано Delphi. В данном случае ты должен набрать
только "if Key= VK_RETURN then WebBrowser1.Navigate(ComboBox1.Text)", причем без
кавычек. Я остальные строчки привожу только чтобы тебе было удобно глазеть и
сравнивать с тем, что за тебя делает Delphi.
Теперь то же самое, но по понятиям:
Процедура ComboBox1.КлавишаНажата (Sender - Адрес ComboBox1;
Key - КодНажатойКлавиши; Shift - состояние клавиш Shift, Ctrl,Alt)
Начало
Если КодНажатойКлавиши равен Enter, то
WebBrowser1.Перейти на адрес, указанный в ComboBox1
Конец
Нажми "F9", и твоя прога должна засвистеть. Введи какой-нибудь адрес в строку
ComboBox и нажми Enter (это клавиша на кейборде :)). Если ты правильно ввел
адрес, то в WebBrowser1 через несколько минут должен появиться указанный Home
Page. Когда наиграешься со своим произведением, то возвращайся в Delphi. Мы еще
многое должны сегодня успеть сделать.
Улучшаем свой браузер
Кликни по ToolBar1 и снова переходи в ObjectInspector. Здесь нужно изменить
свойства "AutoSize", "ShowCaption" и "Flat" на "true" (все они по умолчанию
равны false). Теперь щелкай правой кнопкой по ToolBar1 и из появившейся менюшки
выбирай пункт "New Button". На ToolBar1 должна появиться новая пимпа с именем
"ToolButton1". Выдели ее и в ObjectInspector-е поменяй свойство Caption на "Открыть".
Создай еще насколько кнопок с заголовками: Назад, Вперед, Стоять, Обновить и
Печать.
Установи еще на форму "OpenDialog" из закладки "Dialogs" палитры компонентов.
Он нам скоро понадобится.
Теперь дважды кликни по кнопке "Открыть", и Delphi автоматически создаст
процедуру, которая будет вызываться при нажатии этой кнопки. В этой процедуре
нужно написать следующее:
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
WebBrowser1.Navigate(OpenDialog1.FileName);
ComboBox1.Text := OpenDialog1.FileName;
end;
end;
Как всегда, объясняю по понятиям:
Начать
Если OpenDialog1 удачно запущен, то
Начать
WebBrowser1.Перейти на указанное имя файла в OpenDialog1;
ComboBox1.Текст присвоить значение OpenDialog1.ИмяФайла
Закончить
Закончить
Теперь ты можешь запустить прогу и открыть с помощью этой пимпы любой файл на
диске. Но, я думаю, что торопиться не надо. Заставим работать остальные кнопки!
Дважды кликни по кнопке "Назад". Какой будет результат, ты уже догадался. Напиши
тут следующее:
procedure TForm1.ToolButton2Click(Sender: TObject);
begin
WebBrowser1.GoBack;
end;
Я думаю, что здесь ничего объяснять не надо. Мы просто заставляем WebBrowser1
идти на предыдущую страницу.
Повтори те же операции для кнопки "Вперед", чтобы создать процедуру. Напиши
для нее следующий код:
procedure TForm1.ToolButton3Click(Sender: TObject);
begin
WebBrowser1.GoForward;
end;
Для кнопки "Стоять" напиши: "Стоять на месте свистком в небо, руки по швам".
Шучу :). Напиши лучше это:
procedure TForm1.ToolButton4Click(Sender: TObject);
begin
WebBrowser1.Stop;
end;
// Для пимпы "Обновить":
procedure TForm1.ToolButton5Click(Sender: TObject);
begin
WebBrowser1.Refresh;
end;
// И, наконец, для пимпы "Печать":
procedure TForm1.ToolButton6Click(Sender: TObject);
var
PostData, Headers: OLEvariant;
begin
WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT, PostData,
Headers);
end;
Здесь только одна строка, но очень сложная, поэтому я не стану ее объяснять.
Скажу только, что в этой строке я посылаю команду через OLE ядру IE. Просто
скопируй ее один к одному в свой исходник и поверь мне на слово.
Теперь можешь нажать "F9", и твоя прога должна запуститься. Попробуй поиграть
с ней. Неплохие ощущения? Закрывай свой браузер, остались последние штрихи!
Последние штрихи
Твой браузер почти готов. Я только наведу небольшой марафет.
Для начала брось на форму StatusBar из закладки "Win32" и измени у него
свойство "SimplePanel" в true (по умолчанию false). Теперь выдели WebBrowser1 и
щелкни по закладке "Events" в ОbjecInspector-е. Дважды кликни по строке "OnStatusTextChange"
и напиши в созданной процедуре следующее:
procedure TForm1.WebBrowser1StatusTextChange(Sender: TObject;
const Text: WideString);
begin
StatusBar1.SimpleText := Text;
end;
Здесь мы присваиваем переменную "Text" (в ней хранится текст подсказки) в
StatusBar1. Теперь ты сможешь видеть подсказки в строке состояния.
Давай добавим ещё индикатор загрузки. Для этого брось на форму ProgressBar из
закладки "Win32". Измени у него свойство "Align" на "alBottom", чтобы он
находился вдоль нижней границы формы. Снова выдели WebBrowser1 и щелкни по
закладке "Events" в ОbjecInspector-е. Дважды щелкни по строке "OnProgressChange"
и напиши в созданной процедуре:
procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress,
ProgressMax: Integer);
begin
ProgressBar1.Max := ProgressMax;
ProgressBar1.Position := Progress;
end;
Здесь мы созданному ProgressBar1 (индикатор загрузки) присваиваем
максимальное значение (ProgressMax) и текущее значение (Progress).
Теперь надо украсить наши кнопки, а то они смотрятся как сам IE. Для этого
брось на форму ImageList и произведи по нему ДоублеКлик. Перед тобой откроется
окно. Сюда нужно добавить картинки размером 16х16. Для этого нажми кнопку "Add",
и перед тобой откроется стандартное окно открытия файла. Найди картинку и нажми
"Открыть". Повтори эту процедуру 6 раз (6 картинок для 6-и кнопок). После всего
этого нажми "ОК".
Теперь выдели ToolBar1 и в ObjectInspector-е измени свойство Images на
"ImageList1". На твоих кнопках должны появиться картинки. Если ты добавлял
картинки не в том порядке, как они у тебя стоят на форме, то можешь
пересортировать их с помощью свойства ImageIndex у кнопки. Например: щелкни по
кнопке "Стоять" и измени ImageIndex на 0. На кнопке должна появиться картинка,
указанная первой в ImageList1.
Можешь создать еще один ImageList, который подставляется в HotImages. В этом
случае картинки из этого ИмаджеЛиста будут подставляться на кнопку, когда ты
наводишь на нее маусом.
Конец
Все, косметический ремонт окончен. Дави на "F9", и Delphi в последний раз
создаст тебе окончательную версию.
Можешь пользоваться полноценным браузером в свое удовольствие. Конечно же,
это не все возможности, которые можно выцепить из WebBrowser1. Сюда еще очень
многое можно добавить - главное, чтобы хватило воображения и умений. Но это уже
специфические детали, и я их описывать не буду, потому что тебе понадобится
объяснять все принципы программирования на Delphi. А это - целая история. Пиши,
если что, и удачи!
Он будет таким, как ты захочешь, потому что сделан твоими руками.
Название: Браузер своими руками Дата публикации: 2004-09-02 (3679 Прочтено) |