У већини ситуација користите ТВебБровсер за приказ ХТМЛ докумената кориснику - стварајући тако своју верзију (Интернет Екплорер) веб прегледача. Имајте на уму да ТВебБровсер може, на пример, приказати и Ворд документе.
Веома лепа карактеристика прегледача је приказивање информација о везама, на пример, у траци статуса, када миш пређе преко везе у документу.
ТВебБровсер не излаже догађај попут "ОнМоусеМове". Чак и ако такав догађај постоји, покренуо би се за компоненту ТВебБровсер - НЕ за документ који се приказује унутар ТВебБровсер.
Да бисте пружили такве информације (и још много тога, као што ћете видети за тренутак) у својој Делпхи апликацији користећи компоненту ТВебБровсер, технику названу "догађаји тоне"мора да се спроведе.
Да бисте се кретали до веб странице користећи ТВебБровсер компоненту коју зовете Навигација метод. Тхе Документ својство ТВебБровсер враћа ан ИХТМЛДоцумент2 вредност (за веб документе). Ово сучеље се користи за проналажење информација о документу, за испитивање и модификацију ХТМЛ елемената и текста у документу и за обраду повезаних догађаја.
Да бисте добили атрибут "хреф" ("линк") ознаке "а" унутар документа, док миш лебди изнад документа, морате да реагујете на догађај "онмоусемове" ИХТМЛДоцумент2.
Пошто нас занима атрибут ХРЕФ елемента А - да бисмо показали УРЛ везе са којом је миш завршен, потонућемо догађај "онмоусемове".
Као што је горе објашњено, придајемо догађају покрета покрета документа у догађају ТВебБровсер ОнДоцументЦомплете:
јединица Јединица 1;
интерфејс
користи
Виндовс, Поруке, СисУтилс, Варијанте, Класе, Графика, Контроле, Обрасци,
Дијалози, ОлеЦтрлс, СХДоцВв, МСХТМЛ, АцтивеКс, СтдЦтрлс;
тип
ТОбјецтПроцедуре = процедураодобјекта;
ТЕвентОбјецт = класа(ТИнтерфацедОбјецт, ИДиспатцх)
приватни
ФОнЕвент: ТОбјецтПроцедуре;
заштићено
функција ГетТипеИнфоЦоунт (одбројавање: Цели број): ХРесулт; стдцалл;
функција ГетТипеИнфо (Индек, ЛоцалеИД: Интегер; оут ТипеИнфо): ХРесулт; стдцалл;
функција ГетИДсОфНамес (цонст ИИД: ТГУИД; Имена: Поинтер; НамеЦоунт, ЛоцалеИД: Интегер; ДиспИДс: Поинтер): ХРесулт; стдцалл;
функција Инвоке (ДиспИД: Интегер; цонст ИИД: ТГУИД; ЛоцалеИД: Интегер; Заставе: Реч; вар Парамс; ВарРесулт, ЕкцепИнфо, АргЕрр: Поинтер): ХРесулт; стдцалл;
јавни
конструктор Креирај(цонст ОнЕвент: ТОбјецтПроцедуре);
својство ОнЕвент: ТОбјецтПроцедуре прочитај ФОнЕвент упиши ФОнЕвент;
крај;
ТФорм1 = класа(ТФорм)
ВебБровсер1: ТВебБровсер;
елементИнфо: ТМемо;
процедура ВебБровсер1БефореНавигате2 (АСендер: ТОбјецт; цонст пДисп: ИДиспатцх; вар УРЛ, заставе, ТаргетФрамеНаме, ПостДата, заглавља: ОлеВариант; вар Откажи: ВордБоол);
процедура ВебБровсер1ДоцументЦомплете (АСендер: ТОбјецт; цонст пДисп: ИДиспатцх; вар УРЛ: ОлеВариант);
процедура ФормЦреате (пошиљалац: ТОбјецт);
приватни
процедура Доцумент_ОнМоусеОвер;
јавни
{ Јавно декларације}
крај;
вар
Форм1: ТФорм1;
хтмлДоц: ИХТМЛДоцумент2;
имплементација
{$ Р * .дфм}
процедура ТФорм1.Доцумент_ОнМоусеОвер;
вар
елемент: ИХТМЛЕлемент;
започети
ако хтмлДоц = нулаонда Излаз;
елемент: = хтмлДоц.парентВиндов.евент.срцЕлемент;
елементИнфо. Јасно;
ако ЛоверЦасе (елемент.тагНаме) = 'а' онда
започети
елементИнфо. Линес Додај ('ЛИНК информације ...');
елементИнфо. Линес Додај (Формат ('ХРЕФ:% с', [елемент.гетАттрибуте ('хреф', 0)]));
крај
другоако ЛоверЦасе (елемент.тагНаме) = 'имг' онда
започети
елементИнфо. Линес Додај ('ИМАГЕ инфо ...');
елементИнфо. Линес Додај (Формат ('СРЦ:% с', [елемент.гетАттрибуте ('срц', 0)]));
крај
друго
започети
елементИнфо. Линес Додај (Формат ('ТАГ:% с', [елемент.тагНаме]));
крај;
крај; (* Доцумент_ОнМоусеОвер *)
процедура ТФорм1.ФормЦреате (пошиљалац: ТОбјецт);
започети
ВебБровсер1.Навигате (' http://delphi.about.com') ;
елементИнфо. Јасно;
елементИнфо. Линес Адд ('Помицање миша преко документа ...');
крај; (* ФормЦреате *)
процедура ТФорм1.ВебБровсер1БефореНавигате2 (АСендер: ТОбјецт; цонст пДисп: ИДиспатцх; вар УРЛ, заставе, ТаргетФрамеНаме, ПостДата, заглавља: ОлеВариант; вар Откажи: ВордБоол);
започети
хтмлДоц: = нула;
крај; (* ВебБровсер1БефореНавигате2 *)
процедура ТФорм1.ВебБровсер1ДоцументЦомплете (АСендер: ТОбјецт; цонст пДисп: ИДиспатцх; вар УРЛ: ОлеВариант);
започети
ако Додељено (ВебБровсер1.Доцумент) онда
започети
хтмлДоц: = ВебБровсер1.Доцумент као ИХТМЛДоцумент2;
хтмлДоц.онмоусеовер: = (ТЕвентОбјецт. Креирај (Доцумент_ОнМоусеОвер) као ИДисатцх);
крај;
крај; (* ВебБровсер1ДоцументЦомплете *)
{ТЕвентОбјецт}
конструктор ТЕвентОбјецт. Креирај(цонст ОнЕвент: ТОбјецтПроцедуре);
започети
наслеђено Креирај;
ФОнЕвент: = ОнЕвент;
крај;
функција ТЕвентОбјецт. ГетИДсОфНамес (цонст ИИД: ТГУИД; Имена: Поинтер; НамеЦоунт, ЛоцалеИД: Интегер; ДиспИДс: Поинтер): ХРесулт;
започети
Резултат: = Е_НОТИМПЛ;
крај;
функција ТЕвентОбјецт. ГетТипеИнфо (Индек, ЛоцалеИД: Интегер; оут ТипеИнфо): ХРесулт;
започети
Резултат: = Е_НОТИМПЛ;
крај;
функција ТЕвентОбјецт. ГетТипеИнфоЦоунт (одбројавање: Цели број): ХРесулт;
започети
Резултат: = Е_НОТИМПЛ;
крај;
функција ТЕвентОбјецт. Инвоке (ДиспИД: Интегер; цонст ИИД: ТГУИД; ЛоцалеИД: Интегер; Заставе: Реч; вар Парамс; ВарРесулт, ЕкцепИнфо, АргЕрр: Поинтер): ХРесулт;
започети
ако (ДиспИД = ДИСПИД_ВАЛУЕ) онда
започети
ако Додељено (ФОнЕвент) онда ФОнЕвент;
Резултат: = С_ОК;
крај
друго Резултат: = Е_НОТИМПЛ;
крај;
крај.