Hankige hüperlingi URL TWebBrowser-dokumendis

Enamikul juhtudel kasutate TWebBrowserit HTML-dokumentide kuvamiseks kasutajale - luues sellega oma (Internet Exploreri) veebibrauseri versiooni. Pange tähele, et TWebBrowser suudab kuvada ka näiteks Wordi dokumente.

Brauseri väga kena funktsioon on lingiteabe kuvamine näiteks olekuribal, kui hiir hõljub dokumendi lingil.

TWebBrowser ei paljasta sellist sündmust nagu "OnMouseMove". Isegi kui selline sündmus oleks olemas, vallandataks see komponendi TWebBrowser jaoks - MITTE juhul, kui dokumenti kuvatakse TWebBrowseris.

Sellise teabe (ja palju muud, nagu näete hetkega) edastamiseks oma Delphi rakenduses, kasutades komponenti TWebBrowser, tehnikat nimega "sündmused vajuvad"tuleb rakendada.

Veebilehele navigeerimiseks TWebBrowser-komponendi abil, millele helistate Navigeeri meetod. Dokument TWebBrowser'i vara tagastab väärtuse IHTMLDocument2 väärtus (veebidokumentide jaoks). Seda liidest kasutatakse dokumendi kohta teabe hankimiseks, dokumendis sisalduvate HTML-i elementide ja teksti uurimiseks ja muutmiseks ning sellega seotud sündmuste töötlemiseks.

instagram viewer

Sildi "a" atribuudi (lingi) saamiseks dokumendi sees, kui hiir kursoriga dokumendi kohal asub, peate reageerima IHTMLDocument2 "onmousemove" sündmusele.

Kuna meid huvitab A-elemendi HREF-atribuut - hiirega lingi URL-i kuvamiseks uputame sündmuse "onmousemove".

Nagu eespool selgitatud, lisame dokumendi onmousemove sündmusele TWebBrowser OnDocumentComplete'i sündmusel:

ühik 1. üksus;
liides
kasutab
Windows, Sõnumid, SysUtils, Variandid, Klassid, Graafika, Juhtnupud, Vormid,
Dialoogid, OleCtrls, SHDocVw, MSHTML, ActiveX, StdCtrls;
tüüp
TObjectProcedure = protseduurofobjekt;
TEventObject = klass(TInterfacedObject, IDispatch)
privaatne
FOnEvent: TObjectPocedure;
kaitstud
funktsiooni GetTypeInfoCount (väljaarvatud arv: täisarv): HResult; stdcall;
funktsiooni GetTypeInfo (register, LocaleID: täisarv; välja TypeInfo): HResult; stdcall;
funktsiooni GetIDsOfNames (const IID: TGUID; Nimed: osuti; NameCount, LocaleID: täisarv; DispID: Pointer): HResult; stdcall;
funktsiooni Kutsu (DispID: täisarv; const IID: TGUID; LocaleID: täisarv; Lipud: Sõna; var Parameetrid; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
avalik
ehitaja Loo (const OnEvent: TObjectProcedure);
vara OnEvent: TObjectProcedure loe FOnEvent kirjutage FOnEvent;
lõpp;
TForm1 = klass(TForm)
WebBrowser1: TWebBrowser;
elementInfo: TMemo;
protseduur WebBrowser1BeforeNavigate2 (ASender: TObject; const pDisp: IDispatch; var URL, lipud, TargetFrameName, PostData, päised: OleVariant; var Tühista: WordBool);
protseduur WebBrowser1DocumentComplete (ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
protseduur FormCreate (saatja: TObject);
privaatne
protseduur Document_OnMouseOver;
avalik
{ Avalik deklaratsioonid}
lõpp;
var
Vorm 1: TForm1;
htmlDoc: IHTMLDocument2;
rakendamine
{$ R * .dfm}
protseduur TForm1.Document_OnMouseOver;
var
element: IHTMLElement;
alustada
kui htmlDoc = nullsiis Väljapääs;
element: = htmlDoc.parentWindow.event.srcElement;
elementInfo. Selge;
kui LowerCase (element.tagName) = 'a' siis
alustada
elementInfo. Liinid. Lisa ('LINK info ...');
elementInfo. Liinid. Lisa (vorminda ('HREF:% s', [element.getAttribute ('href', 0)])));
lõpp
muudkui LowerCase (element.tagName) = 'img' siis
alustada
elementInfo. Liinid. Lisa ('IMAGE info ...');
elementInfo. Liinid. Lisa (Vorming ('SRC:% s', [element.getAttribute ('src', 0)])));
lõpp
muud
alustada
elementInfo. Liinid. Lisa (vorming ('TAG:% s', [element.tagName]));
lõpp;
lõpp; (* Document_OnMouseOver *)
protseduur TForm1.FormCreate (saatja: TObject);
alustada
WebBrowser1.Navigate (' http://delphi.about.com') ;
elementInfo. Selge;
elementInfo. Liinid. Lisa ('Liiguta hiirt dokumendi kohal ...');
lõpp; (* FormCreate *)
protseduur TForm1.WebBrowser1BeforeNavigate2 (ASender: TObject; const pDisp: IDispatch; var URL, lipud, TargetFrameName, PostData, päised: OleVariant; var Tühista: WordBool);
alustada
htmlDoc: = null;
lõpp; (* WebBrowser1BeforeNavigate2 *)
protseduur TForm1.WebBrowser1DocumentComplete (ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
alustada
kui Määratud (WebBrowser1.Document) siis
alustada
htmlDoc: = WebBrowser1.Document kui IHTMLDocument2;
htmlDoc.onmouseover: = (TEventObject. Loo (Document_OnMouseOver) kui IDispatch);
lõpp;
lõpp; (* WebBrowser1DocumentComplete *)
{TEventObject}
ehitaja TEventObject. Loo (const OnEvent: TObjectProcedure);
alustada
päritud Loo;
FOnEvent: = OnEvent;
lõpp;
funktsiooni TEventObject. GetIDsOfNames (const IID: TGUID; Nimed: osuti; NameCount, LocaleID: täisarv; DispID: Pointer): HResult;
alustada
Tulemus: = E_NOTIMPL;
lõpp;
funktsiooni TEventObject. GetTypeInfo (register, LocaleID: täisarv; välja TypeInfo): HResult;
alustada
Tulemus: = E_NOTIMPL;
lõpp;
funktsiooni TEventObject. GetTypeInfoCount (väljaarvatud arv: täisarv): HResult;
alustada
Tulemus: = E_NOTIMPL;
lõpp;
funktsiooni TEventObject. Kutsu (DispID: täisarv; const IID: TGUID; LocaleID: täisarv; Lipud: Sõna; var Parameetrid; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
alustada
kui (DispID = DISPID_VALUE) siis
alustada
kui Määratud (FOnEvent) siis FOnEvent;
Tulemus: = S_OK;
lõpp
muud Tulemus: = E_NOTIMPL;
lõpp;
lõpp.

instagram story viewer