Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11639
Последний выпуск: 19.06.2015

WEB браузер собственными руками

Источник: http://vaktyjd.besthost.ru/vr-online/

Ты снова должен запустить Delphi. Именно он позволяет очень быстро и без особых проблем написать свой собственный браузер. Когда запустишь, то найди закладку "Internet". Здесь должен быть компонент "WebBrowser" (он должен быть последний). Если у тебя версия Delphi меньше, чем пятая, то этого компонента может и не быть. Он может отсутствовать и если ты отказался устанавливать инет-компоненты (по умолчанию они ставятся).

Выбери "Import ActiveX Control" из меню "Component". Перед тобой должно открыться окно, как на рисунке 1.


Рисунок 1

В списке выбора этого окна (сверху) найди строку "Microsoft Internet Controls (Version 1.1)". Версия может отличаться, но нам с тобой - акваланг. Теперь нажми кнопку "Install". Перед тобой откроется окно, как на рисунке 2. На запрос ты должен ответить "OK".


Рисунок 1

После этого появиться запрос на компиляцию пакета как на рисунке 3. Соглашайся. Delphi прекомпилирует необходимые файлы и установит компонент для работы с браузером.


Рисунок 1

После того, как Delphi прошуршит мозгами, появится окно, которое сообщит об успешной установке нового компонента. Нажми "OK" и закрой все, что открыл Delphi. Для этого выбери "Close All" из меню "File". Теперь и у тебя есть компонент "WebBrowser", только он расположен на странице "ActiveX" палитры компонентов.

Как ты мог заметить, мы будем использовать "Microsoft Internet Controls", т.е. движок установленного на твоем компе IE. А это значит, что твой браузер подхватит все болезни и глюки своего движка. Единственное, что может успокоить - так это то, что интерфейс не будет таким занудным. Он будет таким, как ты захочешь, потому что сделан твоими руками.

Сейчас ты уже готов приступить к программированию. Создай новый проект ("File" -> "New Application") и сразу измени заголовок и иконку.

Двигаемся дальше. Установи на форму наш компонент "WebBrowser" (он находится на закладке "Internet" или "ActiveX") - у тебя появится белый квадрат с именем WebBrowser1. После этого брось на форму "CoolBar", который находится на закладке "Win32" палитры компонентов. Это панелька, которая должна выровняться по верхнему краю на твоей форме. Теперь выдели WebBrowser1 и перейди в Object Inspector. Щелкни по свойству "Align" и в выпадающем списке выбери "alClient". "WebBrowser" должен растянуться на все свободное место формы. В результате ты увидишь нечто похожее на рисунок 4.


Рисунок 1

Теперь брось на 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 на "Открыть". Создай еще насколько кнопок с заголовками: Назад, Вперед, Стоять, Обновить и Печать. Результат должен быть похож на рисунок 6.


Рисунок 1

Установи еще на форму "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 и произведи по нему ДоублеКлик. Перед тобой откроется окно, как на рисунке 7. Сюда нужно добавить картинки размером 16х16. Для этого нажми кнопку "Add", и перед тобой откроется стандартное окно открытия файла. Найди картинку и нажми "Открыть". Повтори эту процедуру 6 раз (6 картинок для 6-и кнопок). После всего этого нажми "ОК".


Рисунок 1

Теперь выдели ToolBar1 и в ObjectInspector-е измени свойство Images на "ImageList1". На твоих кнопках должны появиться картинки. Если ты добавлял картинки не в том порядке, как они у тебя стоят на форме, то можешь пересортировать их с помощью свойства ImageIndex у кнопки. Например: щелкни по кнопке "Стоять" и измени ImageIndex на 0. На кнопке должна появиться картинка, указанная первой в ImageList1.

Можешь создать еще один ImageList, который подставляется в HotImages. В этом случае картинки из этого ИмаджеЛиста будут подставляться на кнопку, когда ты наводишь на нее маусом.

Все, косметический ремонт окончен. Дави на "F9", и Delphi в последний раз создаст тебе окончательную версию. На рисунке 8 ты можешь увидеть результат сегодняшней работы.


Рисунок 1

Можешь пользоваться полноценным браузером в свое удовольствие. Конечно же, это не все возможности, которые можно выцепить из WebBrowser1. Сюда еще очень многое можно добавить - главное, чтобы хватило воображения и умений. Но это уже специфические детали, и я их описывать не буду, потому что тебе понадобится объяснять все принципы программирования на Delphi. А это - целая история. Пиши, если что, и удачи!

Он будет таким, как ты захочешь, потому что сделан твоими руками.

Я не могу понять - все развели какой-то базар вокруг войны Интернет браузеров. Ie, Ns, Opera... Все чего-то там себе выбирают... Меня эта проблема не волнует, я могу сам написать себе браузер - такой, как мне захочется. А тебе слабо? Я думаю, что нет. Через десять минут у тебя тоже будет свой навигатор.

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

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
97K
14 мая 2016 года
Игорь Ямаков
0 / / 14.05.2016
Мне нравитсяМне не нравится
14 мая 2016, 09:39:38
Супер статья!
А как сделать, чтоб меню и кнопки располагались слева сбоку, а не сверху? Чтоб наверху оставалась только строка с адресом.
2.
97K
01 марта 2016 года
Владислав Новиков
0 / / 01.03.2016
+1 / -0
Мне нравитсяМне не нравится
1 марта 2016, 14:55:29
у меня программа работает с компонент chromium эта программа типа браузера мне нужно что бы эта программа открывала флеш элементы когда я воспроивожу музыку у меня требует флеш плеер как в программу вставить флеш плеер?я долго ищу в инете но так и не нашел может вы знаете?
3.
96K
10 января 2016 года
Edouard Pasenidis
0 / / 10.01.2016
+0 / -1
Мне нравитсяМне не нравится
10 января 2016, 16:47:08
Современный браузер,ни-что без блокировщика рекламы и вообще дополнений
4.
892
27 апреля 2007 года
Sash1k
115 / / 27.04.2007
Мне нравитсяМне не нравится
18 августа 2015, 09:27:29
Можно добавить автозаполнение форм.
5.
71K
08 апреля 2011 года
Vlad911
0 / / 08.04.2011
+2 / -1
Мне нравитсяМне не нравится
8 апреля 2011, 22:34:46
извините,а не подскажете как сделать избраное в собственам браузере созданым в делфи.штобы использывать компонент ЖFavoritesMenu!!!!!подскажите как установить !!!!!!!!!!плиз!!!!!!!!!!!!!!!!!!!
6.
Аноним
+4 / -3
Мне нравитсяМне не нравится
13 мая 2006, 20:18:45
"Я не могу понять - все развели какой-то базар вокруг войны Интернет браузеров. Ie, Ns, Opera... Все чего-то там себе выбирают... Меня эта проблема не волнует, я могу сам написать себе браузер - такой, как мне захочется. А тебе слабо? Я думаю, что нет. Через десять минут у тебя тоже будет свой навигатор." - автор улыбнул =) это не собственный навигатор а надстройка для IE, ведь это ActiveX IE =) Веселые вы люди...


PS Opera forever!!!
7.
Аноним
+0 / -1
Мне нравитсяМне не нравится
23 ноября 2005, 12:49:02
Хто ответит на вопрос "Кик сохранять web страницы?"
8.
Аноним
+1 / -1
Мне нравитсяМне не нравится
9 октября 2005, 01:20:24
Да. Кто же так статьи составляет. Где кроссплатформенность, чёрт побери?!!! Где?!! Нету. Это как с Visual Basic'ом. Майкрософт приложила махнатую лапу к рантайм либам, вот они и весят меньше всех. То, что активы можно юзать, это всем понятно. Тут надо было описать ещё много чего. Во первых реализация своего собственного web-server'а. Так написать к нему клиента. Да тут работы непочатый край!!! А они тут с активами всё никак не разбируться!!!
9.
Аноним
Мне нравитсяМне не нравится
31 августа 2005, 23:16:10
А есть ли возможность самому давать браузеру HTML'ку, минуя HTTP протокол. А потом контролировать нажатие кнопок и изменение форм в документе?
10.
Аноним
+1 / -0
Мне нравитсяМне не нравится
23 августа 2005, 12:36:51
Такой вопрос:
можно ли отключить выдачу сообщения в TWebBrowser, когда на открываемой странице ошибка выполнения скрипта, чтобы пользователь не видел этого сообщени?
11.
Аноним
+1 / -1
Мне нравитсяМне не нравится
16 мая 2005, 23:52:11
Всё нормально работает, незнаю что Вы вскипишились, а вот насчёт буфера реально облом, досихпор немогу никак добится сохранения страниц, уто знает как это делать?
12.
Аноним
Мне нравитсяМне не нравится
15 августа 2004, 15:54:42
Опять же вопрос к автору...
Как заставить этот компонент отправлять данные из форм при нажатии Enter?
В самом IE c этим проблем нет, а тут приходицца на сайтах давить кнопку("Отправить" например).
13.
Аноним
+1 / -1
Мне нравитсяМне не нравится
6 июня 2004, 21:40:21
Моя аська если надумаешь ответить 255381251
14.
Аноним
+1 / -0
Мне нравитсяМне не нравится
6 июня 2004, 21:25:26
Такой вопрос к автору!!!

А проблем с буфером обмена нету??? Я в проге использовал как то ВебБровсер, но я так и не смог заставить его копировать в буфер при нажатии ctrl+c и из стандарной менюшки копировать!!!!!!
Это у меня так и не заработало!!!
И ещё вопрос, До текста ХТМЛ добратьса как нить можна?
15.
Аноним
Мне нравитсяМне не нравится
20 мая 2004, 20:47:34
nu ja sdelal vse , toljko 2 knopka ne pragramiruetsja , owibku vidaet i ostaljnie a pervaja po4emuto piwetsja :\
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог