Web-браузери: поняття, особливості
Web-браузери як програмне забезпечення для комп'ютера або іншого електронного пристрою. Загальна характеристика мови програмування Delphi, розгляд функцій. Аналіз етапів розробки браузера на основі Internet Explorer, знайомство з основаними особливостями.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 06.12.2013 |
Размер файла | 2,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Вступ
браузер комп'ютер програмний 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.
Размещено на Allbest.ru
Подобные документы
Web-браузери - програмне забезпечення для комп'ютера, під'єднаного до Інтернет. Історія створення браузерів, їх основні види та типи. Можливості, недоліки та переваги браузерів Internet Explorer, Opera, Mozilla Firefox, Netscape Navigator, Safari.
курсовая работа [1,5 M], добавлен 20.04.2011Основні відомості про програми-браузери. Веб-браузери – програмне забезпечення для комп’ютера, під’єднаного до мережі інтернет, що дає можливість працювати з текстом, малюнками або іншою інформацією на веб-сторінці. Використання браузерів в офісі.
курсовая работа [3,2 M], добавлен 17.05.2019Економічна інформація, її види та властивості. Апаратне і програмне забезпечення ПК. Програмне забезпечення стаціонарних комп’ютерів. Комп’ютерні мережі, загальна характеристика глобальної мережі Інтернет. Напрямки використання комп’ютерної техніки.
контрольная работа [28,0 K], добавлен 06.10.2011Настільні видавничі системи як програмне забезпечення для персональних комп'ютерів, аналіз основних функцій. Аналіз діяльності компанії Ventura. Особливості верстки Adobe Page Maker. Знайомство з тенденціями розвитку настільних видавничих систем.
контрольная работа [26,8 K], добавлен 12.02.2014Принципы формирования имен в сети Internet, элементы браузера Internet Explorer. Добавление Web-страницы в список избранных. Средства ускорения доступа к часто посещаемым страницам. Способы обеспечения доступа к ресурсам сети Internet в автономном режиме.
лабораторная работа [3,4 M], добавлен 24.05.2015Огляд найбільш використовуваних Інтернет-браузерів: Google Chrome, Maxthon, Mozilla Firefox, Internet Explorer, Opera, SeaMonkey та інші. Порівняльна характеристика деяких з цих програм, основні можливості, висвітлення недоліків та переваг у роботі.
презентация [3,8 M], добавлен 07.03.2013Класифікація програмного забезпечення, системне та прикладне забезпечення, інструментальні системи. Програмна складова комп'ютерної системи, опис алгоритмів розв'язання певної задачі. Класифікація операційних систем, основні групи прикладних програм.
презентация [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