Web-браузери: поняття, особливості

Web-браузери як програмне забезпечення для комп'ютера або іншого електронного пристрою. Загальна характеристика мови програмування Delphi, розгляд функцій. Аналіз етапів розробки браузера на основі Internet Explorer, знайомство з основаними особливостями.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык украинский
Дата добавления 06.12.2013

Вступ

браузер комп'ютер програмний explorer

Наш час увійде в історію людства як період становлення інформаційного суспільства, в якому інформація відіграє роль одного з основних ресурсів. Інформація сьогодні розглядається фахівцями як фактор, під впливом якого змінюються форми економічної діяльності, види й типи підприємств та установ, і навіть - соціальні стосунки у суспільстві. Організація управління в наші дні неможлива без застосування комп`ютерних технологій. Практично всі працівники в установах, організаціях, на підприємствах і фірмах використовують в своїй діяльності комп`ютерну техніку. Спрощення і прискорення підготовки документів, можливості зберігання і обробки великих об`ємів інформації, доступу до них з будь-якої точки земної кулі зробили наш час часом інформаційної революції. Актуальним на даний час є також використовувати у своїй роботі можливості всесвітньої мережі Інтернет. Але доступ до нього неможливий без багатьох факторів, одним з яких є Web-браузери. Web-браузери --програмне забезпечення для комп'ютера або іншого електронного пристрою, як правило, під'єднаного до Інтернету, що дає можливість користувачеві взаємодіяти з текстом, малюнками або іншою інформацією на гіпертекстовій веб-сторінці. Тексти та малюнки можуть містити посилання на інші веб-сторінки, розташовані на тому ж веб-сайті або на інших веб-сайтах. Веб-переглядач з допомогою посилань дозволяє користувачеві швидко та просто отримувати інформацію, розміщену на багатьох веб-сторінках.

1.Теоретичні відомості

1.1 Аналіз предметної області та аналогів

Проводячи аналіз моєї програми, візьмемо за приклад стандартну програму від компанії Microsoft «Internet explorer».

Рисунок 1.1.1 вікно браузера «Internet explorer»

Це серія браузерів, що розробляється корпорацією Microsoft з 1995 року. Входить в комплект операційних систем сімейства Windows.

Internet Explorer є найбільш широко використовуваним веб -браузером починаючи з 1999 року, в 2002-2003 роках досягнувши за цим показником своєї максимальної позначки в 95 %. У Південній Кореї через Vendor lock - in в 2007-2008 роках частка IE складала 99 %. Однак, останнім часом його частка стрімко знижується, поступаючись місцем таким браузерам, як Mozilla Firefox, Google Chrome, Safari, Opera та ін Останньою стабільною версією браузера є Internet Explorer 10. Також були випущені додаткові модифікації браузера для інших операційних систем, такі як Internet Explorer Mobile ( для Windows CE, Windows Mobile і Windows Phone 7 ), Internet Explorer для Mac і Internet Explorer для UNIX ( розроблявся компанією Microsoft для використання в ОС Solaris і HP- UX. Розробка припинена з версією IE 5 в 2001 році, а підтримка припинена в 2002 ).

Останніми версіями Internet Explorer для Mac OS і Unix- подібних систем були Internet Explorer 5.2.3 і Internet Explorer 5.0 SP1 Beta відповідно. На даний момент розробка Internet Explorer для цих систем припинена. Проте є можливість запуску Internet Explorer на операційних системах, відмінних від Microsoft Windows, використовуючи емуляціонную середу WinAPI Wine, але без підтримки технології ActiveX.

Internet Explorer має вкладки, блокувальник спливаючих вікон, фішинг- фільтр, вбудований RSS -агрегатор, підтримку інтернаціональних доменних імен, засобів групової політики і можливість автооновлення через Windows Update.

Windows - версія браузера заснована на движку Trident, який підтримує стандарти HTML 4.01, HTML 5, CSS Level 1, CSS Level 2, CSS Level 3, XML 1.0 і DOM Level 1 і частково DOM Level 2, також має можливість підключення розширень, що реалізується через об'єктну модель компонентів (COM).

Другий аналог

Mozilla firefox - це вільний браузер, що входить в набір програм Mozilla Application Suite, розробкою та розповсюдженням якого займається Mozilla Corporation.

Рисунок 1.1.2 Вікно браузера «Mozilla firefox»

Майже з початку свого існування до теперішнього часу Firefox є одним з найбільш гнучких браузерів з широкими можливостями налаштування. Користувач може встановлювати додаткові теми, які змінюють зовнішній вигляд програми, і розширення, що додають нову функціональність.

Ця розширюваність досягається, в основному, за рахунок використання в інтерфейсі розробленого виключно для Gecko мови розмітки XUL, і використовуються в Web JavaScript і CSS, що іноді призводить до більш повільної роботи інтерфейсу, і підвищеним вимогам до оперативної пам'яти, ніж у браузерів, більше покладаються на функції віконної середовища. Для тих , кому потрібні функції двигуна Gecko, а не розширюваний інтерфейс, існують сторонні браузери, в яких інтерфейс реалізований по-іншому наприклад: Camino, Epiphany, і Kazehakase.

Третій аналог

Google chrome браузер, що розробляється компаній Google на основі вільного браузера Chromium і двигуна Blink.

Рисунок 1.1.3 вікно браузера «Google chrome»

Цей браузер істотно відрізняється від інших браузерів тим що він спрямований на підвищення безпеки, швидкості стабільності, і використовує високопродуктивний движок обробки JavaScript V8. Також для прискорення завантаження сторінок Google Chrome може використовувати попередній виклик DNS.

Четвертий аналог

Safari - браузер, розроблений корпорацією Apple і входить до складу OS X і iOS.

Основні можливості:

* Вбудовані засоби пошуку: Google , Yahoo! , Bing (починаючи з версії 5.0) і Яндекс (тільки в Росії , Україні й Туреччині , починаючи з версії 6.0)

* Блокування спливаючих вікон

* Пошук тексту на сторінці

* Автозаповнення форм (синхронізація з адресними книгами OS X і Windows )

* Вбудований RSS -агрегатор ( виключений з версії 6.0)

* Масштабування області введення тексту

* Приватний перегляд - режим, при якому не ведеться історія відвідувань, cookie не приймаються, паролі і дані, що вводяться не запам'ятовуються

* Підтримка різних протоколів шифрування

* Snapback - дозволяє миттєво повернутися до вихідних результатами пошуку або до верхнього рівня будь-якого веб -сайту , навіть якщо ви пішли на кілька рівнів вниз. Значок Snapback з'являється в поле пошуку при натисканні на посилання на сторінці результатів пошуку (до версії 5.x включно). Починаючи з версії 6.0 працює тільки комбінація клавіш Command + Option + S.

* Розпізнавання на веб- сторінці нестандартних шрифтів і їх завантаження по мірі необхідності

* Інтеграція мультимедійних технологій QuickTime

* Web Inspector - дозволяє користувачам і розробникам переглядати DOM

* Підтримка протоколів SSL версій 2 і 3 , а також TLS

* Перевірка орфографії в текстових полях

* Cover Flow (з версії 4.0)

* Top Sites - дозволяє переглядати список найбільш відвідуваних веб -сайтів у вигляді мініатюрних сторінок ( з версії 4.0)

* Режим читання (з версії 5.0)

* Повноекранний режим (з версії 5.1)

* Список для читання (з версії 5.1)

* Універсальне вікно пошуку (з версії 6.0)

1.2 Аналіз технологій та засобів розробки

Delphi -- мова програмування, що ґрунтується на діалекті мови Pascal від компанії Borland. До версії 7.0 мала назву Object Pascal. Окрім того Delphi - середовище розробки (IDE) для однойменної мови. Ця плутанина часто викликає непорозуміння. По суті, Delphi є об'єктно-орієнтованим розширенням мови Pascal.

Delphi - це нащадок Турбо Паскаля, який був випущений для операційної системи Cp/m в 1983 році. У лютому 1994 року Турбо Паскаль був перенесений на операційну систему MS-DOS. На ранньому етапі розвитку комп'ютерів IBM РС, Турбо Паскаль був однією з найбільш популярних мов розробки програмного забезпечення - головним чином тому, що це був цілком серйозний компілятор, який, включаючи компілятор, редактор і відгадчик. Середовище мало змогу працювати на машині з 64 Kb оперативної пам'яті.

Під Windows - Турбо Паскаль був перенесений фірмою Borland в 1990 році. А найостанніша версія Borland Pascal 7.0 (що має тепер таку назву), не рахуючи Delphi, вийшла в світ в 1992 році. Розробка Delphi почалася в 1993 році. Після проведення beta-тестування Delphi показали на "Software Development 95.

Спочатку на Delphi можна було програмувати під MS Windows 3.1. Починаючи з версії 2.0 на Delphi можна створювати програми під будь-яку з 32-бітних версій MS Windows.

В 2000 році була спроба створити варіант Delphi під операційну систему на базі ядра Linux, така модифікація Delphi мала назву Kylix. Було випущено 3 версії Kylix, проте експеримент виявився невдалим і 2003 року проект був заморожений.

2003 року була створена модифікація мови під платформу Microsoft.NET, що отримала назву Delphi.NET. Цей варіант мови послідовно розвивається в версіях Delphi 8, 2005, 2006, 2007.

Частково Delphi підтримується також у відкритому проекті FreePascal, що потенційно дозволяє створювати програми під велику кількість платформ.

Моя програма базується на компоненті "WebBrowser", який залежить від стандартного браузера Windows «Internet Explorer». Якщо версія Delphi менше, ніж п'ята, то цього компонента може і не бути. Він може бути відсутнім, і якщо при установці не були встановлені інтернет-компоненти (за умовчанням вони ставляться). Саме завдяки компоненту "WebBrowser", стає можливим розробка програмного забезпечення для перегляду веб-сайтів на основі Internet Explorer. Також в программі часто використовуються стандартні команди які на пряму змушую мою програму дублювати функції з браузера «Internet Explorer» наприклад:

\\ команда відновлення сторінки:

WB_Refresh(GetCurrentWB);

\\ Чи функція пошуку на сторінці

WB_SearchAndHighlightText(GetCurrentWB, edSearchAndHighlight.Text);

Помимо спеціалізованих компонентів та функцій, в технологія створення веб-браузера не дуже далеко відходить від стандартних дій для реалізації данної задачі.

У своїй програмі я хочу реалізувати потрібні функції, для найбільш реалістичної емуляції роботи повсякденного веб-браузера і надати можливість користувачам протестувати модель операційної системи в дослідницьких цілях. Зрозуміло, що браузер повинен мати зрозумілий інтерфейс для зручного використання звичайним користувачем. Також програма має містити додаткові функції, щоб стати в пригоді програмістам які займаються розробкою веб-сайтів.

В цілому на мою думку мій проект має «погану» та «гарну» сторону, «гарна» сторона має на увазі те що можна створити свій браузер за своїми власними вимогами та додати щось своє. «Погана» сторона заключається в тому, що цей браузер присвоює всі недуги від Internet explorer, включаючи швидкість завантаження веб-сторінок.

2.Технічне завдання

Призначення і область застосування

Призначене для перегляду веб-сайтів, тобто для запиту веб-сторінок (переважно з Мережі або локального простору), їх обробки, виведення і переходу від однієї сторінки до іншої.

Вимоги до програмного продукту

Вимоги до функціональних характеристик

Програма повинна забезпечувати можливість виконання перерахованих нижче функцій:

Програма повинна забезпечувати можливість виконання перерахованих нижче функцій:

Відображати завантажені веб-сторінки.

Пошук в мережі інтернет.

Виконувати стандартні функції браузера «Internet explorer» за допомогою посилань на нього.

Власний редактор - HTML.

Режим дизайну сторінки.

Програма також присутній «журнал подій».

Вимоги до надійності

Вимоги до забезпечення надійного функціонування програми

Надійне (стійке) функціонування програмного продукту має бути забезпечене виконанням наступних організаційно-технічних вимог:

організація безперебійного живлення технічних засобів;

ПЗ, що поставляється виробником пристрою.

Час відновлення після відмови

Час відновлення після відмови, викликаного збоєм електроживлення технічних засобів (іншими зовнішніми чинниками), не фатальним збоєм (не крахом) операційної системи, не повинно перевищувати 10-ти хвилин за умови дотримання умов експлуатації технічних і програмних засобів.

Відмови через некоректні дії користувачів системи

Відмови програми внаслідок некоректних дій користувача при взаємодії з програмою неприпустимі.

Умови експлуатації

Кліматичні умови експлуатації

Кліматичні умови експлуатації, при яких повинні забезпечуватися задані характеристики, повинні задовольняти вимогам, що пред'являються до технічних засобів в частині умов їх експлуатації.

Вимоги до кваліфікації і чисельності персоналу

Мінімальна кількість персоналу, необхідного для роботи з програмою, має становити 1 штатну одиницю - кінцевого користувача програми.

Вимоги до складу і параметрів технічних засобів

До складу технічних засобів повинен входити IBM-сумісний персональний комп'ютер (ПЕОМ), що має:

x86-сумісний процесор 1ГГц, не менше;

оперативну пам'ять об'ємом, 512 Мб;

HDD, 512 Мб;

операційна система сімейства Windows;

Вимоги до інформаційної та програмної сумісності

Вимоги до інформаційних структур і методів розв'язання

Особливих вимог до інформаційних структур програма не пред'являє.

Вимоги до вихідних кодів і мов програмування

Для розробки вихідних кодів буде використовуватися мова об'єктно-орієнтованого програмування Borland Delphi 7.

Вимоги до програмних засобів, які використовуються програмою

Необхідні програмні засоби:

1. ліцензійна локалізована версія операційної системи сімейства Windows, версії ХР, не менше;

2. Borland Delphi 7

Вимоги до захисту інформації та програм

Вимоги до захисту інформації до програми не пред'являються.

Спеціальні вимоги

Програма повинна забезпечувати комфортний перегляд веб-сторінок.

Вимоги до програмної документації

Попередній склад програмної документації

Склад програмної документації повинен включати в себе:

1. технічне завдання;

2. програма і методика випробувань;

3. керівництво користувача;

Техніко-економічні показники

Економічні переваги розробки

Орієнтовна економічна ефективність не розраховується.

Стадії та етапи розробки

Стадії розробки

Розробка повинна бути проведена за стадіями:

1. Розробка технічного завдання;

2. Робоче проектування;

3. Експлуатація.

Етапи розробки

На стадії розробки технічного завдання повинен бути виконаний етап розробки, погодження та затвердження справжнього технічного завдання. На стадії робочого проектування повинні бути виконані перераховані нижче етапи робіт:

1. Попередній етап;

2. Розробка архітектури проекту;

3. Створення технологічної основи;

4. Наповнення контентом;

5. Тестування готового рішення;

6. Налаштування обладнання;

7. Запуск проекту.

На стадії експлуатації повинна проводитися експлуатація програми кінцевим користувачем.

Зміст робіт по етапах

На етапі розробки технічного завдання повинні бути виконані перераховані нижче роботи:

1. Постановка завдання;

2. Визначення та уточнення вимог до технічних засобів;

3. Визначення вимог до програми;

4. Визначення стадій, етапів і термінів розробки програми і документації на неї;

Узгодження і затвердження технічного завдання.

На етапі розробки програми повинна бути виконана робота по створенню та налагодженню програмного продукту.

На етапі розробки програмної документації повинна бути виконана розробка програмних документів відповідно до вимог до складу документації.

На етапі випробувань програми повинні бути виконані перераховані нижче види робіт:

1. Розробка, узгодження, затвердження методики випробувань;

2. Проведення приймально-здавальних випробувань;

3. Коригування програми та програмної документації за результатами випробувань.

На етапі експлуатації програма повинна бути передана Замовнику.

Порядок контролю і приймання

Види випробувань

Приймально-здавальні випробування повинні проводитися на об'єкті Замовника в обумовлені терміни.

Приймально-здавальні випробування програми повинні проводитися згідно розробленої Виконавцем та узгодженої Замовником Програми та методик випробувань.

Загальні вимоги до приймання роботи

На підставі Протоколу проведення випробувань Виконавець разом із Замовником підписує Акт приймання - здачі програми в експлуатацію.

3.Розробка програмного продукту

3.1 Проектування

Для відображення проектування програмного продукту використовувалися такі UML-діаграми:

1) UML-діаграма варіантів використання програмного продукту (Додаток Б)

2) Діаграма стану (Додаток В)

Діаграма прецедентів -- в UML, діаграма, на якій зображено відношення між акторами та прецедентами в системі. Суть даної діаграми полягає в наступному: проектована система представляється у вигляді безлічі сутностей чи акторів, взаємодіючих із системою за допомогою так званих варіантів використання. Варіант використання (use case) служить для опису сервісів, що система надає актору. Іншими словами, кожен варіант використання визначає деякий набір дій, чинений системою при діалозі з актором. При цьому нічого не говориться про те, яким чином буде реалізована взаємодія акторів із системою.

Діаграма класів -- статичне представлення структури моделі. Відображає статичні (декларативні) елементи, такі як: класи, типи даних, їх зміст та відношення. Діаграма класів, також, може містити позначення для пакетів та може містити позначення для вкладених пакетів.

3.2 Реалізація

Підбір засобів програмування.

Для створення програмного продукту використовується об'єктно-орієнтований язик програмування Borland Delphi.

Необхідні бібліотеки для роботи програми:

// Windows, Messages, SysUtils, {$IFDEF DELPHI6UP}Variants, {$ENDIF}AppEvnts, Dialogs, ExtDlgs, Graphics, Menus, ExtCtrls, ImgList, Controls, StdCtrls, ComCtrls, OleCtrls, SHDocVw, ToolWin, Buttons, WBFuncs, Classes, Forms, HistoryMenu, FavMenu, ActiveX, XPMan;

Створення графічного інтерфейсу користувача

Для створення інтерфейсу використовувалися стандартні об'єкти та компонент Delphi:

1) Було реалізовано горизонтальне меню з використанням компонента «MainMenu»;

2) Створено за допомогою компонента «ToolBar» панель керування програмою;

3) Для відображення веб-сторінок використовується компонент «Webbrowser»;

4) Було використані компоненти Tedit та Tlable;

5) Для підтримки діалогу з файлами комп'ютера було використано компонент «TOpenDialog».

Розробка стандартних функцій

На даному етапі було розроблено стандартні функції які зв'язані з браузером «internet explorer», а саме: елементи управління сайтами та елементи меню.

До складу елементів управління входять:

1) Вперед

\\ WB_GoForward(GetCurrentWB);

2) Назад

\\ WB_GoBack(GetCurrentWB);

3) Стоп

\\ WB_Stop(GetCurrentWB);

4) Оновити

\\ WB_Refresh(GetCurrentWB);

5) Домашня сторінка

\\ GetCurrentWB.GoHome;

6) Пошук

\\ WB_ShowFindDialog(GetCurrentWB);

Елементи управління меню:

1) Печать

\\ WB_ShowPrintDialog(GetCurrentWB);

2) Налаштування сторінки

\\ WB_ShowPageSetup(GetCurrentWB);

3) Режим перегляду коду

\\ WB_ShowSourceCode(GetCurrentWB);

4) Режим переглядача

\\ InvokeCMD(GetCurrentWB, HTMLID_OPTIONS)

5) Режим дизайну

\\ procedure TfrmMyBrowser.DesignMode1Click(Sender: TObject);

6) Режим редактора HTML-кода

\\ procedure TfrmMyBrowser.AddHTML1Click(Sender: TObject);

7) Открыть

\\ OpenDialog1.Execute thenCreateTabBrowser(OpenDialog1.FileName, ExtractFileName(OpenDialog1.FileName));

Розробка правої панелі

На даному етапі реалізовувалась додаткова панель за допомогою якої веб-програмісту допомагає визначіти наступні данні об'єкти на сторінці: «tegName», id, innerHTML, className, innertext, href. Крім цього в цій панелі реалізовано функцію пошуку на сторінці, та меню «опція» де можна задати наступні положення сторінки: без границь, без полоси прокрутки, та без випливающого меню.

Розробка класів

Для виконання поставленої задачі було реалізовані слідуючі класи:

1) TWebbrowser = class(TMyBrowser) - відповідає за роботу навігатора браузера в інтернеті;

2) TStatusBar = class(ComCtrls.TStatusBar) - відповідає за компонент статус бара.

Рисунок 3.2.1 Скріншот готової ігри

3.3 Тестування

Кожен програмний продукт перед тим як вводити в експлуатацію проходить тестування, та мій програмний продукт не виключення. Для тестування мого браузера я розробив план:

1) Тестування сумісності;

2) Тестування на введення неправильних даних

3) Тестування з максимальним навантаженням роботи веб браузера;

4) Тестування під навантаженням процесора.

5) Тестування відповідно технічного завдання.

Таблица

Тест

Сценарій

Результат

Перевірка сумістності програми в ОС Windows 7, 32x та 64x

Запускаємо браузер в ОС Windows 7, 32x та 64x

Програма успішно функціонує в двух розрядних версіях ОС

Перевірка запуску програми на Ubuntu 12.04

Запускаємо браузер на ОС Ubuntu 12.04.

Програма не функціонує очевидно, що програма буде працювати тільки в ОС Windows тому що, являється коренним елементом стандартного браузера Windows «Internet explorer».

Тестування на введення неправильних даних

Введемо «хто знає що» в URL стороку браузера

Браузер розціняє це як некоректне або помилкова спроба ввести назву сайта та видає повідомлення про неіснуючий контент

Тестування з максимальним наван. роботи веб браузера

Запускаємо на браузері безліч вкладок з сайтами

Врезультаті помітне загальмованість браузера в період завантаження веб-сторінок.

Тестування під навантаженням процесора

Заг. Мак. ЦП та пробуемо користуватися браузером

Тестування під нагрузкою ЦП проходить без особливих зауваг, помічається.

Тестування відповідності технічного завдання

Відповідно очікуваним вимогам програма виконує: функції процесу завантаження веб-сторінок виконуе поушук в мережі інтернет

Рисунок 3.3.1 завантажена веб-сторінка, з параметром пошуку

Всі належні функції які дублюються від браузера «Internet explorer» прцюють успішно.

Що стосується власного редактора - HTML, то і у ній зауважень не виникнуло, результат роботи дивитись на рисунку 3.3.2 та 3.3.3.

Рисунок 3.3.2 редактор HTML

Рсунок 3.3.3 Результат

Під час тестування функції «режиму дизайну сторінки» то тут теж проблем не виникало, але спостерігається дуже не зручний конструктор, тобто дуже проблематично перетягнути той чи інший об'єкт в потрібне місце.

Рисунок 3.3.4 - результат роботи в режимі дизайнера

З тестуванням журналу подій особливих зауважень не було.

Рисунок 3.3.5 відображення результатів «Журналу подій»

3.4 Інструкція користувача

При запуску програми користувач бачить перед собою слідуюче вікно браузера який указаний на рисунку 3.4.1, за допмогою цієї программи кристувач може переглядати потрібні для себе сайти. Для того щоб почати роботу користувач повинен в строчку яка знаходиться під номером десть ввести потрібну назву сайта, після чого програма відобразить його.

Рисунок 3.4.1 головне меню браузера

1) Горизонтальне меню браузераж;

2) Назад по сторінкі;

3) Вперед по сторінкі;

4) Зупинити завантаження сторінки;

5) Оновити сторінку;

6) Перейти на домашню сторінку;

7) Пошук в пошуковій мережі

8) Відобразити праву панель елементів

9) Пошук слів на сторінці;

10) URL сточка для вводу сайтів;

11) Вікно браузера;

12) Відображення загруженості веб-сторіки;

13) Строчко стану.

Режим дизайну

Режим дизайну використовується проектувальниками для візуального моделювання поточних веб-сторінок, для того щоб перейти в режим дизайну треба відкрити в пункті горизонтального меню «Просмотр» «Режим дизайну»

Рисунок 3.4.2 відображення сторінки в режимі дизайнера

Для того щоб виконати ту чи іншу дію в режимі дизайнера, треба за допомогою миші, навести стрілку на потрібний об'єкт та виконати потрібну дію, наприклад збільшити чи перетягнути об'єкт, якщо це текст то його можна перейменувати або виконати попередні дії.

Редактор HTML

Для того щоб запустити редактор HTML треба обрати в горизонтальному меню «Дополнительно» «Редактор HTML»

Рисунок 3.4.3 вікно редактора HTML

Для того щоб запустити готовий проект треба натиснути кнопку «Запустить».

Журнал подій

Для того щоб запустити журнал подій треба, натиснути на кнопку «Правая панель» та активувати флажок «Журнал собітий». Після чого зявляються данні де буде відображатися інформація при наведенні миши на конкретний об'єкт, а саме:

1) tagName - виводить ім'я тегу;

2) id - відображає ідентифікатор;

3) innerHTML - всановлює або отримує всю розмітку і зміст у середині даного елемента

4) ClassName - показує ім'я атрибуту класу.

5) innerText - він є аналогом свойства innerHTML за винятком того, що вміст буде інтерпретуватися як звичайний текст.

6) Href - відображає посилання.

Рисунок 3.4.4 вікно журнала подій

Висновок

В результаті розробки, отриманий повноцінний браузер, за допомогою якого можна безперешкодно відвідувати різні Інтернет ресурси. Плюсом написання браузера на Delphi є те, що основний акцент робиться на максимальному використанні коду. Це дозволяє розробникам будувати програми досить швидко з заздалегідь підготовлених об'єктів, і так само дає їм можливість створювати свої власні об'єкти для середовища Delphi. Ніяких обмежень по типах об'єктів, які можуть створювати розробники, не існує. Я вважаю створення браузера дуже ефективним у освітньому плані, так як при його написанні виникав ряд труднощів, долаючи які розвиваються необхідні якості для програміста, такі як завзятість, логіка, вміння знаходити оптимальне рішення проблеми. Дизайн і зовнішній вигляд браузера і функціонал цілком і повністю залежить від розробника, тому реалізація даного проекту дозволяє розвивати творче мислення і підвищити мотивацію до навчання, опанувати методами наукового пізнання.

На жаль, розробка браузера на основі Internet Explorer не перспективні в даний час, так як сам по собі браузер Internet Explorer має досить велику кількість мінусів (зокрема серйозні проблеми в системі безпеки, швидкості роботи, продуктивності, функціональності, наявності вразливостей), і поступається за багатьма параметрами аналогам (таким як Opera , Mozilla FireFox, Safari, Google Chrome та іншим). Написання ж браузера на власному, унікальному ядрі завдання дуже не просте і вимагає величезних розумових, матеріальних і тимчасових витрат.

Література

1.Г.В.Галісеев, «Програмування в середовищі Delphi 7. Самовчитель «, М., 2004 рік.

2.В.В.Фаронов, «Delphi 7. навчальний курс «, видавець С.В.Малгачева, 2001 рік.

3.В. В. Шупрута "Delphi 2006. Вчимося програмувати"

4.Довідкова система Delphi.

5.Офіційний сайт вільної всесвітньої енциклопедії «Вікіпедія» [Електронний ресурс] Режим доступу:

http://ru.wikipedia.org/wiki/%D0%91%D1%80%D0%B0%D1%83%D0

6.Неофіційний сайт присвячений програмування «Делфі» [Електронний ресурс] Режим доступу:

Додаток

procedure TfrmMyBrowser.Print1Click(Sender: TObject);

begin

WB_ShowPrintDialog(GetCurrentWB);

end;

procedure TfrmMyBrowser.PrintPreview1Click(Sender: TObject);

begin

WB_ShowPrintPreview(GetCurrentWB);

end;

procedure TfrmMyBrowser.PageSetup1Click(Sender: TObject);

begin

WB_ShowPageSetup(GetCurrentWB);

end;

procedure TfrmMyBrowser.Properties1Click(Sender: TObject);

begin

WB_ShowPropertiesDialog(GetCurrentWB);

end;

procedure TfrmMyBrowser.Copy1Click(Sender: TObject);

begin

WB_Copy(GetCurrentWB);

end;

procedure TfrmMyBrowser.Paste1Click(Sender: TObject);

begin

WB_Paste(GetCurrentWB);

end;

procedure TfrmMyBrowser.Cut1Click(Sender: TObject);

begin

WB_Cut(GetCurrentWB);

end;

procedure TfrmMyBrowser.SelectAll1Click(Sender: TObject);

begin

WB_SelectAll(GetCurrentWB);

end;

procedure TfrmMyBrowser.ToolBtnRefreshClick(Sender: TObject);

begin

WB_Refresh(GetCurrentWB);

ToolBtnStop.Enabled := True;

end;

procedure TfrmMyBrowser.ToolBtnSearchClick(Sender: TObject);

begin

WB_ShowFindDialog(GetCurrentWB);

end;

procedure TfrmMyBrowser.Search1Click(Sender: TObject);

begin

WB_ShowFindDialog(GetCurrentWB);

end;

procedure TfrmMyBrowser.ViewSource1Click(Sender: TObject);

begin

WB_ShowSourceCode(GetCurrentWB);

end;

procedure TfrmMyBrowser.InternetOptions1Click(Sender: TObject);

begin

InvokeCMD(GetCurrentWB, HTMLID_OPTIONS);

end;

procedure TfrmMyBrowser.ToolbtnBackClick(Sender: TObject);

begin

WB_GoBack(GetCurrentWB);

end;

procedure TfrmMyBrowser.ToolBtnForwardClick(Sender: TObject);

begin

WB_GoForward(GetCurrentWB);

end;

procedure TfrmMyBrowser.SpeedButtonScrollBottomClick(Sender: TObject);

begin

WB_ScrollToBottom(GetCurrentWB);

end;

procedure TfrmMyBrowser.SpeedButtonScrollTopClick(Sender: TObject);

begin

WB_ScrollToTop(GetCurrentWB);

end;

procedure TWebbrowser.WMClose(var Msg: TWMClose);

begin

Msg.Result := 0;

Navigate('about:blank');

end;

constructor TStatusBar.Create(AOwner: TComponent);

begin

inherited Create(AOwner);

ControlStyle := ControlStyle + [csAcceptsControls];

end;

procedure TfrmMyBrowser.btnGoClick(Sender: TObject);

begin

if edURL.Text <> '' then

begin

lvEventLog.Clear;

WB_Navigate(GetCurrentWB, edURL.Text);

WB_SetFocus(GetCurrentWB);

end;

end;

procedure TfrmMyBrowser.edURLDblClick(Sender: TObject);

begin

edURl.SelectAll;

end;

procedure TfrmMyBrowser.edURLKeyPress(Sender: TObject; var Key: Char);

begin

if Key = #13 then

begin

Key := #0;

btnGoClick(self);

end;

end;

procedure TfrmMyBrowser.edSearchKeyPress(Sender: TObject; var Key: Char);

begin

if Key = #13 then

begin

Key := #0;

btnSearchClick(self);

end;

end;

procedure TfrmMyBrowser.edSearchAndHighlightKeyPress(Sender: TObject;

var Key: Char);

begin

if Key = #13 then

begin

Key := #0;

btnSearchAndHighlightClick(self);

end;

end;

procedure TfrmMyBrowser.chk3DBorderStyleClick(Sender: TObject);

begin

WB_Set3DBorderStyle(GetCurrentWB, not chk3DBorderStyle.Checked);

end;

procedure TfrmMyBrowser.chkNoScrollBarsClick(Sender: TObject);

begin

WB_ShowScrollBar(GetCurrentWB, chkNoScrollBars.Checked);

end;

procedure TfrmMyBrowser.urkishWindows1Click(Sender: TObject);

begin

if WB_SetCharSet(GetCurrentWB, TMenuItem(Sender).Hint) then

TMenuItem(Sender).Checked := True;

end;

procedure TfrmMyBrowser.btnSearchAndHighlightClick(Sender: TObject);

begin

WB_SearchAndHighlightText(GetCurrentWB, edSearchAndHighlight.Text);

end;

function TfrmMyBrowser.GetCurrentWB: TWebbrowser;

begin

Result := nil;

with PageControl do

if ActivePage.ControlCount > 0 then

begin

if ActivePage.Controls[0] is TWebbrowser then

begin

Result := (TWebbrowser(ActivePage.Controls[0]));

end else

Result := FPrevBrowser;

end;

end;

procedure TfrmMyBrowser.NewTabBlankClick(Sender: TObject);

begin

CreateTabBrowser('about:blank', 'Новая страница');

end;

procedure TfrmMyBrowser.Open1Click(Sender: TObject);

begin

if OpenDialog1.Execute then

CreateTabBrowser(OpenDialog1.FileName, ExtractFileName(OpenDialog1.FileName));

end;

procedure TfrmMyBrowser.SaveAs1Click(Sender: TObject);

begin

WB_Save(GetCurrentWB);

end;

procedure TfrmMyBrowser.Cookie1Click(Sender: TObject);

var

sCookie: string;

begin

sCookie := WB_GetCookie(GetCurrentWB);

if Length(sCookie) = 0 then

ShowMessage('There are no cookies in this webpage.')

else

ShowMessage(sCookie);

end;

function GetElementAtPos(Doc: IHTMLDocument2; x, y: integer): IHTMLElement;

begin

Result := nil;

Result := Doc.elementFromPoint(x, y);

end;

procedure TfrmMyBrowser.HistoryMenuURLSelected(Sender: TObject; Url: string);

var

WB: TWebbrowser;

begin

WB := GetCurrentWB;

if Assigned(WB) then

WB.Navigate(URL);

end;

procedure TfrmMyBrowser.FavoritesMenuURLSelected(Sender: TObject; Url: string);

var

WB: TWebbrowser;

begin

WB := GetCurrentWB;

if Assigned(WB) then

WB.Navigate(URL);

end;

procedure TfrmMyBrowser.FormCreate(Sender: TObject);

begin

HistoryMenu := THistoryMenu.Create(self);

HistoryMenu.MainMenu := MainMenu1;

HistoryMenu.Menupos := 4;

HistoryMenu.CreateMenu;

HistoryMenu.OnURLSelected := HistoryMenuURLSelected;

MainMenu1.Items[3].Caption := 'История';

Webbrowser1.FNavForward := False;

Webbrowser1.FNavBack := False;

Webbrowser1.FTitle := '';

end;

procedure TfrmMyBrowser.FormShow(Sender: TObject);

begin

Webbrowser1.GoHome;

FormResize(nil);

end;

procedure TfrmMyBrowser.FormDestroy(Sender: TObject);

begin

HistoryMenu.Free;

end;

procedure TfrmMyBrowser.AddEventLog(s: string);

begin

lvEventLog.ItemIndex := lvEventLog.Items.Add(s);

end;

procedure TfrmMyBrowser.WebBrowser1ProgressChange(Sender: TObject; Progress, ProgressMax: Integer);

var

Position: Integer;

begin

try

Position := (Progress * 100);

ProgressBar1.Position := Position;

StatusBar1.Panels[0].Text := Format('%d "loaded..."', [Position]);

except

end;

end;

procedure TfrmMyBrowser.WebBrowser1TitleChange(Sender: TObject;

const Text: WideString);

begin

Caption := APP_CAPTION + Text;

TWebbrowser(Sender).FTitle := Text;

end;

procedure TfrmMyBrowser.SetWBMenuEnabled(WB: TWebbrowser; Sender: TMenuItem);

begin

if Assigned(WB) then

Sender.Enabled := Assigned(WB.Document)

else

Sender.Enabled := False;

end;

procedure TfrmMyBrowser.File1Click(Sender: TObject);

var

CurrentWB: TWebbrowser;

begin

CurrentWB := GetCurrentWB;

SetWBMenuEnabled(CurrentWB, Print1);

SetWBMenuEnabled(CurrentWB, PrintPreview1);

SetWBMenuEnabled(CurrentWB, PageSetup1);

SetWBMenuEnabled(CurrentWB, Properties1);

SetWBMenuEnabled(CurrentWB, SaveAs1);

end;

procedure TfrmMyBrowser.Edit2Click(Sender: TObject);

var

CurrentWB: TWebbrowser;

begin

CurrentWB := GetCurrentWB;

Copy1.Enabled := WB_QueryCommandEnabled(CurrentWB, 'Copy');

Paste1.Enabled := WB_QueryCommandEnabled(CurrentWB, 'Paste');

Cut1.Enabled := WB_QueryCommandEnabled(CurrentWB, 'Cut');

SetWBMenuEnabled(CurrentWB, SelectAll1);

SetWBMenuEnabled(CurrentWB, Search1);

end;

procedure TfrmMyBrowser.Extras1Click(Sender: TObject);

var

CurrentWB: TWebbrowser;

begin

CurrentWB := GetCurrentWB;

SetWBMenuEnabled(CurrentWB, AddHTML1);

SetWBMenuEnabled(CurrentWB, InternetOptions1);

end;

procedure TfrmMyBrowser.ToolBtnStopClick(Sender: TObject);

begin

WB_Stop(GetCurrentWB);

end;

procedure TfrmMyBrowser.ToolBtnHomeClick(Sender: TObject);

begin

GetCurrentWB.GoHome;

end;

procedure TfrmMyBrowser.btnSearchClick(Sender: TObject);

const

GOOGLE_QUERY = 'http://www.google.com/search?ie=ISO-8859-1&hl=de&q=';

var

sQuery: string;

begin

sQuery := GOOGLE_QUERY + edSearch.Text;

WB_Navigate(GetCurrentWB, sQuery);

end;

procedure TfrmMyBrowser.Exit1Click(Sender: TObject);

begin

Close;

end;

procedure TfrmMyBrowser.WebBrowser1CommandStateChange(Sender: TObject;

Command: Integer; Enable: WordBool);

begin

case Command of

CSC_NAVIGATEBACK: begin

TWebbrowser(Sender).FNavBack := Enable;

ToolbtnBack.Enabled := Enable;

end;

CSC_NAVIGATEFORWARD: begin

TWebbrowser(Sender).FNavForward := Enable;

ToolBtnForward.Enabled := Enable;

end;

end;

end;

procedure TfrmMyBrowser.FormResize(Sender: TObject);

var

r: TRect;

const

SB_GETRECT = WM_USER + 10;

begin

Statusbar1.Perform(SB_GETRECT, 2, Integer(@R));

ProgressBar1.Parent := Statusbar1;

ProgressBar1.SetBounds(r.Left, r.Top, r.Right - r.Left - 5, r.Bottom - r.Top);

with Statusbar1 do

begin

Panels[1].Width := Width div 2 - 10;

Panels[0].Width := 80;

Panels[2].Width := 90;

Panels[3].Width := 25;

Panels[4].Width := 150;

Refresh;

end;

end;

function TfrmMyBrowser.DrawZoneIcon(WB: TWebbrowser): TIcon;

var

ZoneAttr: TZoneAttributes;

ZoneIcon: TIcon;

begin

ZoneAttr := GetZoneAttributes(WB.LocationURL);

ZoneIcon := TIcon.Create;

try

if GetZoneIcon(ZoneAttr.szIconPath, ZoneIcon) then

Statusbar1.Panels[4].Text := ZoneAttr.szDisplayName;

Result := ZoneIcon;

finally

//

end;

end;

procedure TfrmMyBrowser.StatusBar1DrawPanel(StatusBar: TStatusBar;

Panel: TStatusPanel; const Rect: TRect);

var

ZoneIcon: TIcon;

CurrentWB: TWebbrowser;

begin

if Panel = Statusbar1.Panels[3] then

begin

CurrentWB := GetCurrentWB;

if Assigned(CurrentWB) then

begin

ZoneIcon := DrawZoneIcon(CurrentWB);

if ZoneIcon.Handle <> 0 then

begin

Statusbar1.Canvas.Font.Color := clRed;

Statusbar1.Canvas.FillRect(Rect);

Statusbar1.Canvas.Draw(Rect.Left, Rect.Top, ZoneIcon);

end;

ZoneIcon.Free;

end else

Statusbar1.Panels[3].Text := '';

end;

end;

procedure TfrmMyBrowser.WebBrowser1StatusTextChange(Sender: TObject;

const Text: WideString);

var

CurrentWB: TWebbrowser;

begin

CurrentWB := GetCurrentWB;

if Assigned(CurrentWB) then

begin

if TControl(CurrentWB).Hint = TControl(Sender).Hint then

StatusBar1.Panels[1].Text := Text;

end;

end;

procedure TfrmMyBrowser.WebBrowser1DownloadComplete(Sender: TObject);

begin

WB_Set3DBorderStyle(GetCurrentWB, not chk3DBorderStyle.Checked);

WB_ShowScrollBar(GetCurrentWB, chkNoScrollBars.Checked);

StatusBar1.Repaint;

ToolBtnStop.Enabled := False;

end;

procedure TfrmMyBrowser.Zoom1Click(Sender: TObject);

var

CurrentWB: TWebbrowser;

ZoomIndex: TWBFontSize;

begin

CurrentWB := GetCurrentWB;

if WB_DocumentLoaded(CurrentWB) then

begin

ZoomIndex := WB_GetZoom(CurrentWB);

end;

end;

procedure TfrmMyBrowser.PageControlChanging(Sender: TObject;

var AllowChange: Boolean);

begin

with PageControl do

if ActivePage.ControlCount > 0 then

if ActivePage.Controls[0] is TWebbrowser then

FPrevBrowser := GetCurrentWB;

end;

procedure TfrmMyBrowser.PageControlChange(Sender: TObject);

var

CurrentWB: TWebbrowser;

begin

ToolbtnBack.Enabled := False;

ToolBtnForward.Enabled := False;

with PageControl do

if ActivePage.ControlCount > 0 then

if ActivePage.Controls[0] is TWebbrowser then

begin

CurrentWB := TWebbrowser(ActivePage.Controls[0]);

WB_SetFocus(CurrentWB);

ToolbtnBack.Enabled := CurrentWB.FNavBack;

ToolBtnForward.Enabled := CurrentWB.FNavForward;

edURL.Text := CurrentWB.LocationURL;

Self.Caption := TWebbrowser(CurrentWB).FTitle;

end;

end;

procedure TfrmMyBrowser.AddHTML1Click(Sender: TObject);

begin

frmAddHTML := TfrmAddHTML.Create(Self);

try

frmAddHTML.ShowModal;

finally

frmAddHTML.Free;

end;

end;

procedure TfrmMyBrowser.WebBrowser1NewWindow2(Sender: TObject;

var ppDisp: IDispatch; var Cancel: WordBool);

var

ts: TTabSheet;

begin

AddEventLog('OnNewWindow');

if TWebbrowser(Sender).ReadyState <> READYSTATE_COMPLETE then

begin

ppDisp := nil;

Cancel := True;

end else

begin

ts := CreateTabBrowser('', 'Новая страница');

WaitForBrowser(TWebbrowser(ts.Controls[0]));

ppdisp := (TWebbrowser(ts.Controls[0])).Application;

WaitForBrowser(TWebbrowser(ts.Controls[0]));

end;

end;

procedure TfrmMyBrowser.DesignMode1Click(Sender: TObject);

var

HTMLDocument2: IHTMLDocument2;

DesignMode: string;

CurrentWB: TWebbrowser;

begin

CurrentWB := GetCurrentWB;

if Assigned(CurrentWB) then

begin

DesignMode1.Checked := not DesignMode1.Checked;

HTMLDocument2 := (CurrentWB.Document as IHTMLDocument2);

if HTMLDocument2 <> nil then begin

DesignMode := HTMLDocument2.get_designMode;

if DesignMode = 'On' then

begin

HTMLDocument2.designMode := 'Off';

DesignMode1.Checked := False;

end

else

begin

HTMLDocument2.designMode := 'On';

DesignMode1.Checked := True;

end;

end;

end;

end;

procedure TfrmMyBrowser.Timer1Timer(Sender: TObject);

var

MausPos: TPoint;

Element: IHTMLElement;

imgElement: IHTMLIMGElement;

scrElement: IHTMLLinkElement;

x, y: Integer;

Doc: IHTMLDocument2;

CurrentWB: TWebbrowser;

begin

if chkShowElementInfo.Checked then

begin

begin

CurrentWB := GetCurrentWB;

if Assigned(CurrentWB) then

begin

Doc := CurrentWB.Document as IHTMLDocument2;

if Assigned(doc) then

begin

// Get Current Mouse Position

GetCursorPos(MausPos);

// Convert the screen coordinates to client coordinates

mauspos := CurrentWB.ScreenToClient(mauspos);

x := MausPos.x;

y := MausPos.y;

// Get the element under the mouse cursor

Element := GetElementAtPos(doc, x, y);

if Assigned(Element) then

begin

// element properties

edElementTag.Text := Element.tagName;

edElementId.Text := Element.id;

edElementinnerText.Text := Element.innerText;

edElementinnerHTML.Text := Element.innerHTML;

edElementclassName.Text := Element.className;

Element.QueryInterface(IHTMLIMGElement, imgElement);

if assigned(imgElement) then

edElementhref.Text := imgElement.href;

Element.QueryInterface(IHTMLLinkElement, scrElement);

if assigned(scrElement) then

edElementhref.Text := scrElement.href;

end;

end;

end;

end;

end;

end;

function TfrmMyBrowser.CreateTabBrowser(sURL, sCaption: string): TTabSheet;

var

ts: TTabSheet;

WB: TWebbrowser;

begin

ts := TTabSheet.Create(PageControl);

Result := ts;

try

ts.PageControl := PageControl;

ts.Parent := PageControl;

ts.Caption := sCaption;

ts.PageIndex := PageControl.ActivePageIndex + 1;

WB := TWebbrowser.Create(ts);

TControl(WB).Parent := ts;

WB.Align := alClient;

WB.Silent := True;

WB.Visible := True;

PageControl.ActivePage := ts;

WB.OnProgressChange := WebBrowser1ProgressChange;

WB.OnStatusTextChange := WebBrowser1StatusTextChange;

WB.OnTitleChange := WebBrowser1TitleChange;

WB.OnNewWindow2 := WebBrowser1NewWindow2;

WB.OnCommandStateChange := WebBrowser1CommandStateChange;

WB.OnDownloadComplete := WebBrowser1DownloadComplete;

WB.OnDocumentComplete := WebBrowser1DocumentComplete;

WB.OnDownloadBegin := WebBrowser1DownloadBegin;

WB.FNavForward := False;

WB.FNavBack := False;

if Trim(sURL) <> '' then

begin

WB.Navigate(sURL);

WaitForBrowser(WB);

end;

except

ts.Free;

end;

end;

procedure TfrmMyBrowser.PageControlMouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

var

XHitTestInfo: TTCHitTestInfo;

HitIndex: Integer;

begin

XHitTestInfo.pt := Classes.POINT(X, Y);

HitIndex := TabCtrl_HitTest(PageControl.Handle, @XHitTestInfo);

if HitIndex <> -1 then

with PageControl do

begin

if Button = mbRight then

begin

ActivePageIndex := HitIndex;

CloseTab1.Enabled := (ActivePage.Tag <> 2) and (ActivePageIndex <> 0);

DuplicateTab1.Enabled := ActivePage.Controls[0] is TWebbrowser;

if ActivePage.Tag <> 2 then

PCPopup.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);

end;

end;

end;

procedure TfrmMyBrowser.CloseTab1Click(Sender: TObject);

begin

if PageControl.ActivePageIndex > 0 then

begin

if PageControl.ActivePage.Controls[0] is TWebbrowser then

begin

(TWebbrowser(PageControl.ActivePage.Controls[0])).Free;

FPrevBrowser := nil;

PageControl.ActivePage.Free;

end;

end;

end;

procedure TfrmMyBrowser.DuplicateTab1Click(Sender: TObject);

var

iCurrTabIndex: Integer;

ts: TTabSheet;

CurrentWB, NewWB: TWebbrowser;

sCurrURL: string;

begin

CurrentWB := GetCurrentWB;

if CurrentWB <> nil then

begin

iCurrTabIndex := PageControl.ActivePage.TabIndex;

sCurrURL := TWebbrowser(CurrentWB).LocationURL;

ts := CreateTabBrowser(sCurrURL, 'Новая страница');

NewWB := TWebbrowser(ts.Controls[0]);

WaitForBrowser(NewWB);

if NewWB.Document <> nil then

(NewWB.Document as IHTMLDocument2).body.innerHTML := (CurrentWB.Document as IHTMLDocument2).body.innerHTML;

ts.PageIndex := iCurrTabIndex + 1;

PageControl.ActivePageIndex := ts.PageIndex;

end;

end;

procedure TfrmMyBrowser.WebBrowser1DocumentComplete(Sender: TObject;

const pDisp: IDispatch; var URL: OleVariant);

var

CurWebBrowser: IWebBrowser;

TopWebBrowser: IWebBrowser;

Document: OleVariant;

WindowName: string;

begin

CurWebBrowser := pDisp as IWebBrowser;

TopWebBrowser := TWebBrowser(Sender).DefaultInterface;

if CurWebBrowser = TopWebBrowser then

begin

AddEventLog('OnDocumentComplete ' + URL);

ProgressBar1.Position := 0;

StatusBar1.Panels[0].Text := '';

ToolBtnStop.Enabled := False;

end else

begin

Document := CurWebBrowser.Document;

WindowName := Document.ParentWindow.Name;

AddEventLog(Format('Frame "%s" loaded', [WindowName]));

end;

end;

procedure TfrmMyBrowser.chkShowElementInfoClick(Sender: TObject);

begin

PnlElementInfo1.Visible := chkShowElementInfo.Checked;

end;

procedure TfrmMyBrowser.WebBrowser1DownloadBegin(Sender: TObject);

begin

AddEventLog('OnDownloadBegin');

end;

procedure TfrmMyBrowser.WebBrowser1BeforeNavigate2(Sender: TObject;

const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,

Headers: OleVariant; var Cancel: WordBool);

begin

lvEventLog.Clear;

AddEventLog('OnBeforeNavigate2 ' + URL);

ToolBtnStop.Enabled := True;

end;

procedure TfrmMyBrowser.WebBrowser1NavigateComplete2(Sender: TObject;

const pDisp: IDispatch; var URL: OleVariant);

begin

AddEventLog('OnNavigateComplete2 ' + URL);

edURL.Text := TWebbrowser(Sender).LocationURL;

end;

procedure TfrmMyBrowser.ApplicationEvents1Message(var Msg: tagMSG;

var Handled: Boolean);

const

StdKeys = [VK_TAB, VK_RETURN];

ExtKeys = [VK_DELETE, VK_BACK, VK_LEFT, VK_RIGHT];

fExtended = $01000000;

var

CurrentWB: TWebbrowser;

begin

CurrentWB := GetCurrentWB;

try

if (CurrentWB = nil) or (CurrentWB.Document = nil) then

begin

Handled := False;

Exit;

end;

except

end;

if chkDisablePopupMenu.Checked then

if (Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_RBUTTONDBLCLK) then

begin

if IsChild(CurrentWB.Handle, Msg.hwnd) then

begin

Handled := True;

Exit;

end;

end;

if (GetKeyState(VK_CONTROL) < 0) and (Msg.Message = WM_KEYDOWN) and

(Msg.wParam = Ord('N')) then

begin

Handled := True;

DuplicateTab1Click(nil);

Exit;

end;

if IsChild(CurrentWB.Handle, Msg.Hwnd) then

begin

if (Msg.Message = WM_CLOSE) then

msg.message := 0

else

if ((Msg.Message >= WM_KEYFIRST) and (Msg.Message <= WM_KEYLAST)) and

((Msg.wParam in StdKeys) or (GetKeyState(VK_CONTROL) < 0) or

(Msg.wParam in ExtKeys) and ((Msg.lParam and fExtended) = fExtended)) then

begin

Handled := (CurrentWB.Application as IOleInPlaceActiveObject).TranslateAccelerator(Msg) = S_OK;

if not Handled then

begin

Handled := True;

TranslateMessage(Msg);

DispatchMessage(Msg);

end;

end;

end;

end;

procedure TfrmMyBrowser.ToolButton1Click(Sender: TObject);

begin

PageControl1.Visible:=True;

end;

procedure TfrmMyBrowser.btn1Click(Sender: TObject);

begin

PageControl1.Visible:=False;

end;

initialization

OleInitialize(nil);

Set8087CW($133F);

finalization

OleUninitialize

end.

Размещено на stud.wiki




Подобные документы

  • Web-браузери - програмне забезпечення для комп'ютера, під'єднаного до Інтернет. Історія створення браузерів, їх основні види та типи. Можливості, недоліки та переваги браузерів Internet Explorer, Opera, Mozilla Firefox, Netscape Navigator, Safari.

    курсовая работа [1,5 M], добавлен 20.04.2011

  • Настільні видавничі системи як програмне забезпечення для персональних комп'ютерів, аналіз основних функцій. Аналіз діяльності компанії Ventura. Особливості верстки Adobe Page Maker. Знайомство з тенденціями розвитку настільних видавничих систем.

    контрольная работа [26,8 K], добавлен 12.02.2014

  • Економічна інформація, її види та властивості. Апаратне і програмне забезпечення ПК. Програмне забезпечення стаціонарних комп’ютерів. Комп’ютерні мережі, загальна характеристика глобальної мережі Інтернет. Напрямки використання комп’ютерної техніки.

    контрольная работа [28,0 K], добавлен 06.10.2011

  • Огляд найбільш використовуваних Інтернет-браузерів: Google Chrome, Maxthon, Mozilla Firefox, Internet Explorer, Opera, SeaMonkey та інші. Порівняльна характеристика деяких з цих програм, основні можливості, висвітлення недоліків та переваг у роботі.

    презентация [3,8 M], добавлен 07.03.2013

  • Принципы формирования имен в сети Internet, элементы браузера Internet Explorer. Добавление Web-страницы в список избранных. Средства ускорения доступа к часто посещаемым страницам. Способы обеспечения доступа к ресурсам сети Internet в автономном режиме.

    лабораторная работа [3,4 M], добавлен 24.05.2015

  • Класифікація програмного забезпечення, системне та прикладне забезпечення, інструментальні системи. Програмна складова комп'ютерної системи, опис алгоритмів розв'язання певної задачі. Класифікація операційних систем, основні групи прикладних програм.

    презентация [945,0 K], добавлен 01.04.2013

  • Широкі можливості по використанню комп'ютерних навчальних систем. Розробка навчальної системи мультимедійного посібника з дисципліни "Інформатика і ОТ" на тему "Особливості мови програмування С++. Вказівники". Вимоги до розробки навчальної програми.

    курсовая работа [2,9 M], добавлен 23.11.2010

  • Аналіз етапів шифрування тексту. Програмно-апаратна характеристика комп’ютера. Створення кнопкової форми в Delphi. Розробка і опис алгоритму. Діаграма прецедентів проектованої системи. Інструкція роботи користувача з системою. Керівництво програміста.

    курсовая работа [999,1 K], добавлен 03.12.2014

  • Розгляд особливостей мови програмування С++: основні можливості, характеристика функцій. Аналіз файлів з вхідними даними. Використання похідних класів як ефективний засіб об’єктно-орієнтованого програмування. Способи роздруківки графічного вирішення.

    курсовая работа [510,9 K], добавлен 14.03.2013

  • Загальні відомості середовища програмування Delphi, умови та особливості ефективного застосування його можливостей. Методологія розробки прикладного програмного забезпечення, його характеристика та структура, елементи, головні вимоги до функціональності.

    курсовая работа [6,7 M], добавлен 11.09.2014