I de fleste situasjoner bruker du TWebBrowser for å vise HTML-dokumenter for brukeren - og oppretter dermed din egen versjon av (Internet Explorer) nettleser. Legg merke til at TWebBrowser også kan vise Word-dokumenter, for eksempel.
En veldig fin funksjon i en nettleser er å vise lenkeinformasjon, for eksempel i statuslinjen, når musen svever over en kobling i et dokument.
TWebBrowser utsetter ikke for en hendelse som "OnMouseMove". Selv om en slik hendelse skulle eksistere, vil den bli avfyrt for TWebBrowser-komponenten - IKKE for dokumentet som vises inne i TWebBrowser.
For å gi slik informasjon (og mye mer, som du vil se om et øyeblikk) i Delphi-applikasjonen din ved å bruke TWebBrowser-komponenten, en teknikk kalt "hendelser synker"må implementeres.
For å navigere til en webside ved å bruke TWebBrowser-komponenten du kaller Navigere metode. De Dokument egenskapen til TWebBrowser returnerer en IHTMLDocument2 verdi (for webdokumenter). Dette grensesnittet brukes til å hente informasjon om et dokument, for å undersøke og endre HTML-elementene og teksten i dokumentet og til å behandle relaterte hendelser.
For å få "href" -attributtet (lenken) til en "a" -kode i et dokument, mens musen svever over et dokument, må du reagere på "onmousemove" -hendelsen til IHTMLDocument2.
Siden vi er interessert i HREF-attributtet til et A-element - for å vise URL-en til en lenke musen er over, vil vi synke hendelsen "onmousemove".
Som forklart ovenfor, knytter vi oss til den onmousemove hendelsen til et dokument i OnDocumentComplete-hendelsen til en TWebBrowser:
enhet Enhet 1;
grensesnitt
bruker
Windows, meldinger, SysUtils, varianter, klasser, grafikk, kontroller, skjemaer,
Dialoger, OleCtrls, SHDocVw, MSHTML, ActiveX, StdCtrls;
type
TObjectProcedure = fremgangsmåteavgjenstand;
TEventObject = klasse(TInterfacedObject, IDispatch)
privat
FOnEvent: TObjectProcedure;
beskyttet
funksjon GetTypeInfoCount (uttelling: heltall): HResult; STDCALL;
funksjon GetTypeInfo (indeks, sted-ID: heltall; ut TypeInfo): HResult; STDCALL;
funksjon GetIDsOfNames (konst IID: TGUID; Navn: peker; NameCount, LocaleID: Heltall; DispIDs: Pointer): HResult; STDCALL;
funksjon Påkalle (DispID: Heltall; konst IID: TGUID; Sted ID: Heltall; Flagg: Word; Var parametere; VarResult, ExcepInfo, ArgErr: Pointer): HResult; STDCALL;
offentlig
konstruktør Skape(konst OnEvent: TObjectProcedure);
eiendom OnEvent: TObjectProcedure les FOnEvent skriv FOnEvent;
slutt;
TForm1 = klasse(TForm)
WebBrowser1: TWebBrowser;
elementInfo: TMemo;
fremgangsmåte WebBrowser1BeforeNavigate2 (ASender: TObject; konst pDisp: IDispatch; Var URL, flagg, TargetFrameName, PostData, overskrifter: OleVariant; Var Avbryt: WordBool);
fremgangsmåte WebBrowser1DocumentComplete (ASender: TObject; konst pDisp: IDispatch; Var URL: OleVariant);
fremgangsmåte FormCreate (avsender: TObject);
privat
fremgangsmåte Document_OnMouseOver;
offentlig
{ Offentlig erklæringer}
slutt;
Var
Form1: TForm1;
htmlDoc: IHTMLDocument2;
gjennomføring
{$ R * .dfm}
fremgangsmåte TForm1.Document_OnMouseOver;
Var
element: IHTMLElement;
begynne
hvis htmlDoc = nilderetter Exit;
element: = htmlDoc.parentWindow.event.srcElement;
elementInfo. Klar;
hvis LowerCase (element.tagName) = 'a' deretter
begynne
elementInfo. Lines. Legg til ('LINK info ...');
elementInfo. Lines. Legg til (Format ('HREF:% s', [element.getAttribute ('href', 0)]));
slutt
ellershvis LowerCase (element.tagName) = 'img' deretter
begynne
elementInfo. Lines. Legg til ('BILDINFORMASJON ...');
elementInfo. Lines. Legg til (Format ('SRC:% s', [element.getAttribute ('src', 0)]));
slutt
ellers
begynne
elementInfo. Lines. Legg til (Format ('TAG:% s', [element.tagName]));
slutt;
slutt; (* Document_OnMouseOver *)
fremgangsmåte TForm1.FormCreate (avsender: TObject);
begynne
WebBrowser1.Navigate (' http://delphi.about.com') ;
elementInfo. Klar;
elementInfo. Lines. Legg til ('Flytt musen over dokumentet ...');
slutt; (* FormCreate *)
fremgangsmåte TForm1.WebBrowser1BeforeNavigate2 (ASender: TObject; konst pDisp: IDispatch; Var URL, flagg, TargetFrameName, PostData, overskrifter: OleVariant; Var Avbryt: WordBool);
begynne
htmlDoc: = nil;
slutt; (* WebBrowser1BeforeNavigate2 *)
fremgangsmåte TForm1.WebBrowser1DocumentComplete (ASender: TObject; konst pDisp: IDispatch; Var URL: OleVariant);
begynne
hvis Tildelt (WebBrowser1.Document) deretter
begynne
htmlDoc: = WebBrowser1.Document som IHTMLDocument2;
htmlDoc.onmouseover: = (TEventObject. Opprett (Document_OnMouseOver) som IDispatch);
slutt;
slutt; (* WebBrowser1DocumentComplete *)
{TEventObject}
konstruktør TEventObject. Skape(konst OnEvent: TObjectProcedure);
begynne
arvet Skape;
FOnEvent: = OnEvent;
slutt;
funksjon TEventObject. GetIDsOfNames (konst IID: TGUID; Navn: peker; NameCount, LocaleID: Heltall; DispIDs: Pointer): HResult;
begynne
Resultat: = E_NOTIMPL;
slutt;
funksjon TEventObject. GetTypeInfo (indeks, sted-ID: heltall; ut TypeInfo): HResult;
begynne
Resultat: = E_NOTIMPL;
slutt;
funksjon TEventObject. GetTypeInfoCount (uttelling: heltall): HResult;
begynne
Resultat: = E_NOTIMPL;
slutt;
funksjon TEventObject. Påkalle (DispID: Heltall; konst IID: TGUID; Sted ID: Heltall; Flagg: Word; Var parametere; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
begynne
hvis (DispID = DISPID_VALUE) deretter
begynne
hvis Tildelt (FOnEvent) deretter FOnEvent;
Resultat: = S_OK;
slutt
ellers Resultat: = E_NOTIMPL;
slutt;
slutt.