Szerezze be a hiperhivatkozás URL-jét egy TWebBrowser dokumentumban

A legtöbb esetben a TWebBrowser programot használja a HTML-dokumentumok megjelenítéséhez a felhasználó számára - ezáltal elkészítheti az (Internet Explorer) webböngésző saját verzióját. Vegye figyelembe, hogy a TWebBrowser képes például a Word dokumentumokat is megjeleníteni.

A böngésző nagyon szép tulajdonsága, hogy hivatkozási információkat jelenít meg, például az állapotsorban, amikor az egér az egérmutatót egy hivatkozás fölé helyezi a dokumentumban.

A TWebBrowser nem teszi ki olyan eseményt, mint az "OnMouseMove". Még akkor is, ha létezik ilyen esemény, akkor a TWebBrowser összetevőre szabadul fel - NE, ha a dokumentum a TWebBrowser belsejében jelenik meg.

Annak érdekében, hogy ilyen információkat nyújtson (és még sok minden mást, amint egy pillanat alatt meglátja) a Delphi alkalmazásban, a TWebBrowser összetevő használatával, a "események elsüllyednek"végrehajtása szükséges.

Weblapra navigálás a felhívott TWebBrowser összetevő segítségével Hajózik eljárás. Az Dokumentum a TWebBrowser tulajdonsága an

instagram viewer
IHTMLDocument2 érték (webdokumentumok esetén). Ez az interfész arra szolgál, hogy információt szerezzen egy dokumentumról, megvizsgálja és módosítsa a dokumentumban található HTML elemeket és szöveget, valamint feldolgozza a kapcsolódó eseményeket.

Ahhoz, hogy egy "a" címke "href" attribútumát (hivatkozását) megkapja egy dokumentumban, miközben az egér a dokumentum fölé vigyáz, reagálnia kell az IHTMLDocument2 "onmousemove" eseményére.

Mivel érdekli egy A elem HREF attribútuma - annak érdekében, hogy megmutassuk egy egér hivatkozásának URL-jét, elsüllyedünk az "onmousemove" eseményt.

Mint fentebb kifejtettük, csatolunk egy dokumentum onmousemove eseményéhez egy TWebBrowser OnDocumentComplete eseményében:

Mértékegység egység1;
felület
felhasználások
Windows, Üzenetek, SysUtils, Változatok, Osztályok, Grafika, Vezérlők, Űrlapok,
Dialogok, OleCtrls, SHDocVw, MSHTML, ActiveX, StdCtrls;
típus
TObjectProcedure = eljárásnak,-nektárgy;
TEventObject = osztály(TInterfacedObject, IDispatch)
magán
FOnEvent: TObjectProcedure;
védett
funkció GetTypeInfoCount (számlálás: egész szám): HResult; stdcall;
funkció GetTypeInfo (Index, LocaleID: egész szám; out TypeInfo): HResult; stdcall;
funkció GetIDsOfNames (const IID: TGUID; Nevek: Mutató; NameCount, LocaleID: egész szám; DispID: Pointer): HResult; stdcall;
funkció Hívás (DispID: egész szám; const IID: TGUID; LocaleID: egész szám; Zászlók: Szó; var params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
nyilvános
konstruktőr létrehozása (const OnEvent: TObjectProcedure);
ingatlan OnEvent: TObjectProcedure Olvassa el a FOnEvent írást FOnEvent;
vég;
TForm1 = osztály(TForm)
WebBrowser1: TWebBrowser;
elementInfo: TMemo;
eljárás WebBrowser1BeforeNavigate2 (ASender: TObject; const pDisp: IDispatch; var URL, zászlók, TargetFrameName, PostData, fejlécek: OleVariant; var Mégse: WordBool);
eljárás WebBrowser1DocumentComplete (ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
eljárás FormCreate (Feladó: TObject);
magán
eljárás Document_OnMouseOver;
nyilvános
{ Nyilvános nyilatkozatok}
vég;
var
1. forma: TForm1;
htmlDoc: IHTMLDocument2;
végrehajtás
{$ R * .dfm}
eljárás TForm1.Document_OnMouseOver;
var
elem: IHTMLElement;
kezdődik
ha htmlDoc = nullaazután Kijárat;
elem: = htmlDoc.parentWindow.event.srcElement;
elementInfo. Egyértelmű;
ha LowerCase (element.tagName) = 'a' azután
kezdődik
elementInfo. Vonalak. Add ('LINK információ ...');
elementInfo. Vonalak. Add (formátum ('HREF:% s', [element.getAttribute ('href', 0)])));
vég
másha LowerCase (element.tagName) = 'img' azután
kezdődik
elementInfo. Vonalak. Add ('KÉP információ ...');
elementInfo. Vonalak. Add (formátum ('SRC:% s', [element.getAttribute ('src', 0)])));
vég
más
kezdődik
elementInfo. Vonalak. Add (formátum ('TAG:% s', [elem.tagName]));
vég;
vég; (* Document_OnMouseOver *)
eljárás TForm1.FormCreate (küldő: TObject);
kezdődik
WebBrowser1.Navigate ( http://delphi.about.com') ;
elementInfo. Egyértelmű;
elementInfo. Vonalak. Add ('Vigye az egeret a dokumentum fölé ...');
vég; (* FormCreate *)
eljárás TForm1.WebBrowser1BeforeNavigate2 (ASender: TObject; const pDisp: IDispatch; var URL, zászlók, TargetFrameName, PostData, fejlécek: OleVariant; var Mégse: WordBool);
kezdődik
htmlDoc: = nulla;
vég; (* WebBrowser1BeforeNavigate2 *)
eljárás TForm1.WebBrowser1DocumentComplete (ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
kezdődik
ha Hozzárendelt (WebBrowser1.Document) azután
kezdődik
htmlDoc: = WebBrowser1.Document mint IHTMLDocument2;
htmlDoc.onmouseover: = (TEventObject. Létrehozás (Document_OnMouseOver) mint IDispatch);
vég;
vég; (* WebBrowser1DocumentComplete *)
{TEventObject}
konstruktőr TEventObject. létrehozása (const OnEvent: TObjectProcedure);
kezdődik
örökölt létrehozása;
FOnEvent: = OnEvent;
vég;
funkció TEventObject. GetIDsOfNames (const IID: TGUID; Nevek: Mutató; NameCount, LocaleID: egész szám; DispID: Pointer): HResult;
kezdődik
Eredmény: = E_NOTIMPL;
vég;
funkció TEventObject. GetTypeInfo (Index, LocaleID: egész szám; out TypeInfo): HResult;
kezdődik
Eredmény: = E_NOTIMPL;
vég;
funkció TEventObject. GetTypeInfoCount (számlálás: egész szám): HResult;
kezdődik
Eredmény: = E_NOTIMPL;
vég;
funkció TEventObject. Hívás (DispID: egész szám; const IID: TGUID; LocaleID: egész szám; Zászlók: Szó; var params; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
kezdődik
ha (DispID = DISPID_VALUE) azután
kezdődik
ha Hozzárendelt (FOnEvent) azután FOnEvent;
Eredmény: = S_OK;
vég
más Eredmény: = E_NOTIMPL;
vég;
vég.

instagram story viewer