Навигация
  Главня
Статьи
-Сеть
--Безопасность
-Графика
--Photoshop
--Corel Draw
--Illustrator
-ОС
--Windows
--Linux
--Unix
-SEO
-Дизайн
--Web-Design
-Разное
-Программирование
--Delphy
--C/C++
--.NET
--PHP
--Pascal
--Perl
--Visual Basic
--Ассемблер
--Java
--Java Script
--ASP
Книги

Карта Сайта
Наши Сайты
Обратная связь
Новое на сайте
Статьи про любовь

 
Вход
 
Логин
Пароль
 

 
Найти
 

 
Партнёры
 

 
Статистика
 

 
Популярное
 

 
Календарь
 
«    Февраль 2008    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 

 
Архив
  Сентябрь 2008 (4)
Июнь 2008 (4)
Май 2008 (12)
Апрель 2008 (49)
Март 2008 (51)
Февраль 2008 (73)
Январь 2008 (40)
Декабрь 2007 (58)
Ноябрь 2007 (61)
Октябрь 2007 (51)
Сентябрь 2007 (82)

 
Реклама
  Кулинарные рецепты на Cook-room.com - с пошаговыми фото

 
Казино
 

Интернет-казино Grand Casino произвело фурор в игорном мире. Одно из самых важных нововведений - наличие системы контроля честности всех азартных игр казино. Наличие контроля честности дает возможность полностью уйти в игру, не задумываясь о подтасовке или обмане. В Grand Casino можно пополнить счет и вывести выигрыш большим количеством способов:(SMS, E-gold, Rupay, Яндекс.Деньги, Webmoney,Кредитные карты,...). Теперь азартные игры на деньги стали доступнее. Предоставлены игры: Рулетка, Покер, Блэкджек, Видео Покер, Игровые автоматы, Кено.

   

Статьи » Программирование » Delphi » Создание Web-броузера на Delphi

Читая и перечитывая вопросы и ответы я все время натыкался на вопросы о компоненте T WebBrowser . Сначала я думал, что все просто, но когда самому понадобилось написать приложение с использованием TwebBrowser … оказалось, что не все так просто!

Эта статья не претендует на исчерпывающие руководство по написанию браузера в Delphi 5 - скорее всего она будет со временем дополняться и исправляться. Я постарался обобщить в одном работающем примере решения большинства вопросов, заданных на этом сайте (признаюсь, там были и мои). Также выражаю большую признательность Елене Филлиповой за исчерпывающие ответы на некоторые из них, и всему Королевству за столь хороший и полезный сайт.

Компонент TWebBrowser в Delphi 4 нужно было специально инсталлировать как Active X компонент. В 5-й версии нам пошли навстречу, и он сразу есть на вкладке Internet . Не буду останавливаться на особенностях интерфейса программы - он очень прост (надеюсь, не очень) и не вызовет трудностей. Пример здесь.

Рассмотрим некоторые свойства и функции TwebBrowser .

procedure GoBack;
procedure GoForward;
procedure GoHome;
procedure GoSearch;
procedure Refresh;
procedure Stop;
procedure Quit;

Названия этих процедур говорят сами за себя, а позволяют они осуществить управление просмотром - перейти по истории просмотра вперед, назад, перейти на страницу, установленную как домашняя, открыть страницу поиска, обновить текущую страницу, остановить загрузку страницы, выйти.

Последняя команда самая интересная - в Help написано, что использовать ее не надо. Она завершает работу IE и очищает окно. Но я проверял - вроде вреда от ее использования не наблюдалось.

Далее идет целая группа процедур:

procedure Navigate(const URL: WideString); overload;
procedure Navigate(const URL: WideString; var Flags: OleVariant); overload;
procedure Navigate(const URL: WideString; var Flags: OleVariant; var
TargetFrameName: OleVariant); overload;
procedure Navigate(const URL: WideString; var Flags: OleVariant;
var TargetFrameName: OleVariant; var PostData: OleVariant); overload;
procedure Navigate(const URL: WideString; var Flags: OleVariant;
var TargetFrameName: OleVariant; var PostData: OleVariant;
var Headers: OleVariant); overload;

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

procedure Navigate(const URL: WideString);
Например так:
WebBrowser1.Navigate(' http://delphi.vitpc.com/');

Или

WebBrowser1.Navigate(' http://delphi.vitpc.com/',empty,empty,empty,empty)

Для значения Flag определены такие константы:

navOpenInNewWindow 1 Открывает URL в новом окне браузера

navNoHistory 2 Не заносит адрес в список History .

navNoReadFromCache 4 Не использует сохраненную в кеше страницу, а загружает с сервера.

navNoWriteToCache 8 Не записывает страницу в дисковый кеш.
navAllowAutosearch 16 Если броузер не может найти указанный домен, он передает его в поисковый механизм.
Все, это можно также вручную установить в настройках браузера.
TargetFrameName указывает имя фрейма, куда надо загрузить страницу. Если присвоить NULL страница просто загрузиться в текущее окно.
PostData - указывает на данные, которые нужно отослать, используя метод HTTP POST . Если установить в NULL , процедура Navigate будет использовать метод HTTP GET.
Следующая довольно интересная и полезная процедура
procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT); overload;
Позволяет осуществить управление браузером и вызывать различные дополнительные функции - печать, сохранение и др. Использует IoleCommandTarget интерфейс для управления браузером.
CmdID - задает команду, которую нужно выполнить. Может принимать следующие значения:
OLECMDID_OPEN, OLECMDID_NEW, OLECMDID_SAVE, OLECMDID_SAVEAS, OLECMDID_SAVECOPYAS, OLECMDID_PRINT, OLECMDID_PRINTPREVIEW, OLECMDID_PAGESETUP, OLECMDID_SPELL, OLECMDID_PROPERTIES, OLECMDID_CUT, OLECMDID_COPY, OLECMDID_PASTE, OLECMDID_PASTESPECIAL, OLECMDID_UNDO, OLECMDID_REDO, OLECMDID_SELECTALL, OLECMDID_CLEARSELECTION, OLECMDID_ZOOM, OLECMDID_GETZOOMRANGE, OLECMDID_UPDATECOMMANDS, OLECMDID_REFRESH, OLECMDID_STOP, OLECMDID_HIDETOOLBARS, OLECMDID_SETPROGRESSMAX , OLECMDID_SETPROGRESSPOS, OLECMDID_SETPROGRESSTEXT, OLECMDID_SETTITLE, OLECMDID_SETDOWNLOADSTATE, OLECMDID_STOPDOWNLOAD, OLECMDID_FIND, OLECMDID_ONTOOLBARACTIVATED, OLECMDID_DELETE, OLECMDID_HTTPEQUIV, OLECMDID_ENABLE_INTERACTION, OLECMDID_HTTPEQUIV_DONE, OLECMDID_ONUNLOAD, OLECMDID_PROPERTYBAG2, OLECMDID_PREREFRESH
Если присмотреться, то можно увидеть, что некоторые из них дублируються процедурами Stop, Refresh и др. Но большенство очень даже нужные.
Cmdexecopt - указывает дополнительно, как команда должна исполняться. Может принимать значения:
OLECMDEXECOPT_DODEFAULT 0 Команда исполняеться так, как принято по умолчанию.
OLECMDEXECOPT_PROMPTUSER 1 Перед выполнением выводиться окно диалога или дополнительных настроек.
OLECMDEXECOPT_DONTPROMPTUSER 2 Не задаеться никаких вопросов .
OLECMDEXECOPT_SHOWHELP 3 Выводиться справка по запрошеному действии, но сама команда не выполняеться. Удобно для вызова из вашего приложения справки по IE .
Вызивать эту комманду желательно и даже нужно в блоке
try
WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER);
except
end;
Эта команда вызивает диалоговое окно печати документа. Если же опустить try…except , то при нажатии "Отмена" в этом окне будет сгенерировано уведомление об ошибке типа:
raised exception class EOleException with message "Невозможно установить свойство coISpan. Недопустимое значения свойства. Требуется ввести значение от 1 до 1000".
Теперь поговорим о свойствах.
PopupMenu; Как оконный элемент управления, TwebBrowser поддерживает всплывающие меню. НО! Ваше меню будет появляться только пока в браузер не загружена страница. Дальше - только меню IE .
В Конференции предложили такой вариант для запрета появления стандартного меню:
… private { Private declarations } procedure WMMouseActivate(var Msg: TMessage); message WM_MOUSEACTIVATE; public { Public declarations } end; … … procedure TForm1.WMMouseActivate(var Msg: TMessage); begin try inherited; //правая кнопка мышки ? if Msg.LParamHi = 516 then Msg.Result:= MA_NOACTIVATEANDEAT; // Тут можно вставить код для показания своего меню except end; end;
property OffLine : WordBool; Позволяет загружать документы из локального кеша - если присвоить True .
property LocationURL: WideString; Позначено как "только для чтения" и содержит URL ресурса, загруженого в браузер.
Теперь события .
Среди самых важных/нужных есть:
OnDownloadBegin
OnDownloadComplete
OnBeforeNavigate2
OnNewWindow2
OnNavigateComplete2
OnDocumentComplete
OnDownloadBegin - происходит, когда вы, наберя URL, хотите перейти по нему. Тут можно задать например анимацию или ProgressBar для индикации процесса загрузки страницы ( совмесно с OnProgressChange ) .
OnDownloadComplete, OnDownloadComplete, OnNavigateComplete2 - происходит, когда страница закончила грузиться.
Правда, здесь есть много нюансов при загрузке страниц с графикой и фреймами - для каждого загружаемого элемента будут генерироваться новые события начала/окончания загрузки, а кроме того, если отключить загрузку рисунков/анимации/видео, так вообще некоторые из них не будут происходить! Так что пользоваться ими нужно осторожно.
OnBeforeNavigate2 - происходит когда вы переходите по щелчку на гиперссылке из основной страницы, загруженной в браузер. Сюда можно писать код, который например, анализирует - куда пользователь переходит, и соответственно, что-то делать. Или запретить открывание новых окно, или открывать свои окна (типа сделать TtabbedNotebook c IE на каждой странице)
OnNewWindow2 - происходит, когда открывается новое окно браузера .
Я, конечно, много чего упустил - например, работу с интерфейсами, доступ к тегам страницы - но надеюсь, эта статья и пример помогут вам сделать работоспособный браузер для дальнейших эксперементов. Успехов
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Вы читаете: Статьи » Программирование » Delphi » Создание Web-броузера на Delphi
Статьи по теме:
  • Отправка SMS при помощи Delphi
  • Создание потомка от класса в Delphi
  • Delphi и Flash. Совмещение несовместимого!
  • Delphi и Flash. Совмещение несовместимого!
  • Перехват нажатия клавиши в Windows
  •  (голосов: 0)
    Просмотров: 2980 :: Комментарии: (0) :: :: Напечатать

    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
     
    Design by PODPOLE