Gaukite „Hiberlink“ URL „TWebBrowser“ dokumente

Daugeliu atvejų naudodamiesi „TWebBrowser“ galite HTML dokumentus rodyti vartotojui - taip sukuriate savo („Internet Explorer“) žiniatinklio naršyklės versiją. Atminkite, kad „TWebBrowser“ taip pat gali rodyti, pavyzdžiui, „Word“ dokumentus.

Labai maloni naršyklės savybė yra rodyti nuorodų informaciją, pavyzdžiui, būsenos juostoje, kai pelė užveda ant nuorodos dokumente.

„TWebBrowser“ neatskleidžia tokio įvykio kaip „OnMouseMove“. Net jei toks įvykis egzistuotų, jis būtų suaktyvinamas „TWebBrowser“ komponentui - NE, jei dokumentas būtų rodomas „TWebBrowser“ viduje.

Norėdami pateikti tokią informaciją (ir daug daugiau, kaip pamatysite akimirksniu) savo „Delphi“ programoje, naudodami „TWebBrowser“ komponentą, metodą, vadinamą „įvykiai grimzta"turi būti įgyvendintas.

Norėdami pereiti į tinklalapį naudodami „TWebBrowser“ komponentą, kuriam skambinate Rodyti kelią metodas. Dokumentas „TWebBrowser“ nuosavybė grąžina IHTMLDocument2 vertė (internetiniams dokumentams). Ši sąsaja naudojama informacijai apie dokumentą nuskaityti, dokumento HTML elementams ir tekstui ištirti ir modifikuoti bei susijusiems įvykiams apdoroti.

instagram viewer

Norėdami gauti „href“ atributo (nuorodos) „a“ žymą dokumento viduje, kol pelė užveskite pelės žymeklį virš dokumento, turite reaguoti į IHTMLDocument2 „onmousemove“ įvykį.

Kadangi mus domina A elemento atributas HREF - norėdami parodyti pelės paspaudimo URL adresą, paskelbsime įvykį „onmousemove“.

Kaip paaiškinta aukščiau, prie „onebemove“ įvykio pridedame „TWebBrowser“ „OnDocumentComplete“ įvykį:

vienetas 1 blokas;
sąsaja
naudoja
„Windows“, „Žinutės“, „SysUtils“, variantai, klasės, grafika, valdikliai, formos,
Dialogai, OleCtrls, SHDocVw, MSHTML, ActiveX, StdCtrls;
tipo
TObjectProcedure = procedūraapieobjektas;
TEventObject = klasė(„InterfacedObject“, „IDispatch“)
privatus
„FOnEvent“: „TObjectProcedure“;
saugoma
funkcija „GetTypeInfoCount“ (išskaita: sveikasis skaičius): „HResult“; stdcall;
funkcija „GetTypeInfo“ (rodyklė, „LocaleID“: sveikasis skaičius; iš „TypeInfo“): HResult; stdcall;
funkcija „GetIDsOfNames“ (const IID: TGUID; Vardai: rodyklė; „NameCount“, „LocaleID“: sveikasis skaičius; DispID: rodyklė): HResult; stdcall;
funkcija Iškviesti („DispID“: sveikasis skaičius; const IID: TGUID; LocaleID: sveikasis skaičius; Vėliavos: žodis; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
viešai
konstruktorius Sukurti (const „OnEvent“: „TObjectProcedure“);
nuosavybė „OnEvent“: „TObjectProcedure“ skaitykite „FOnEvent“, rašykite „FOnEvent“;
galas;
TForm1 = klasė(TForm)
„WebBrowser1“: „TWebBrowser“;
elementas: „TMemo“;
procedūra „WebBrowser1BeforeNavigate2“ („ASender“: „TObject“; const pDisp: IDispatch; var URL, vėliavos, „TargetFrameName“, „PostData“, antraštės: OleVariant; var Atšaukti: „WordBool“);
procedūra „WebBrowser1DocumentComplete“ („ASender“: „TObject“; const pDisp: IDispatch; var URL: OleVariant);
procedūra „FormCreate“ (siuntėjas: „TObject“);
privatus
procedūra „Document_OnMouseOver“;
viešai
{ Vieša deklaracijos}
galas;
var
1 forma: TForm1;
htmlDoc: IHTMLDocument2;
įgyvendinimas
{$ R * .dfm}
procedūra TForm1.Document_OnMouseOver;
var
elementas: IHTMLElement;
prasideda
jei htmlDoc = nulistada Išeiti;
elementas: = htmlDoc.parentWindow.event.srcElement;
elementas. Skaidrus;
jei LowerCase (element.tagName) = 'a' tada
prasideda
elementas. Linijos. Pridėti ('LINK informacija ...');
elementas. Linijos. Pridėti (formatas ('HREF:% s', [element.getAttribute ('href', 0)])));
galas
Kitasjei LowerCase (element.tagName) = 'img' tada
prasideda
elementas. Linijos. Pridėti ('IMAGE info ...');
elementas. Linijos. Pridėti (Formatas ('SRC:% s', [element.getAttribute ('src', 0)]));
galas
Kitas
prasideda
elementas. Linijos. Pridėti (formatas ('TAG:% s', [element.tagName]));
galas;
galas; (* „Document_OnMouseOver“ *)
procedūra TForm1.FormCreate (Siuntėjas: TObject);
prasideda
„WebBrowser1.Navigate“ http://delphi.about.com') ;
elementas. Skaidrus;
elementas. Linijos. Pridėti ('Perkelkite pelę virš dokumento ...');
galas; (* „FormCreate“ *)
procedūra TForm1.WebBrowser1BeforeNavigate2 („ASender“: „TObject“; const pDisp: IDispatch; var URL, vėliavos, „TargetFrameName“, „PostData“, antraštės: OleVariant; var Atšaukti: „WordBool“);
prasideda
htmlDoc: = nulis;
galas; (* „WebBrowser1BeforeNavigate2“ *)
procedūra TForm1.WebBrowser1DocumentComplete (ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
prasideda
jei Paskirtas („WebBrowser1.Document“) tada
prasideda
htmlDoc: = „WebBrowser1.Document“ kaip IHTMLDocument2;
htmlDoc.onmouseover: = („TEventObject“. Kurti („Document_OnMouseOver“) kaip IDispatch);
galas;
galas; (* „WebBrowser1DocumentComplete“ *)
{TEventObject}
konstruktorius „TEventObject“. Sukurti (const „OnEvent“: „TObjectProcedure“);
prasideda
paveldėtas Kurti;
FOnEvent: = OnEvent;
galas;
funkcija „TEventObject“. „GetIDsOfNames“ (const IID: TGUID; Vardai: rodyklė; „NameCount“, „LocaleID“: sveikasis skaičius; DispID: rodyklė): HResult;
prasideda
Rezultatas: = E_NOTIMPL;
galas;
funkcija „TEventObject“. „GetTypeInfo“ (rodyklė, „LocaleID“: sveikasis skaičius; iš „TypeInfo“): HResult;
prasideda
Rezultatas: = E_NOTIMPL;
galas;
funkcija „TEventObject“. „GetTypeInfoCount“ (išskaita: sveikasis skaičius): „HResult“;
prasideda
Rezultatas: = E_NOTIMPL;
galas;
funkcija „TEventObject“. Iškviesti („DispID“: sveikasis skaičius; const IID: TGUID; LocaleID: sveikasis skaičius; Vėliavos: žodis; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
prasideda
jei (DispID = DISPID_VALUE) tada
prasideda
jei Paskirtas (FOnEvent) tada „FOnEvent“;
Rezultatas: = S_OK;
galas
Kitas Rezultatas: = E_NOTIMPL;
galas;
galas.