Çoğu durumda TWebBrowser'ı kullanarak HTML belgelerini kullanıcıya görüntülersiniz ve böylece (Internet Explorer) Web tarayıcısının kendi sürümünü yaratırsınız. TWebBrowser'ın Word belgelerini de görüntüleyebileceğini unutmayın.
Tarayıcının çok güzel bir özelliği, fare bir belgedeki bir bağlantının üzerine geldiğinde, durum çubuğunda bağlantı bilgilerini görüntülemektir.
TWebBrowser "OnMouseMove" gibi bir olay göstermez. Böyle bir olay olsa bile TWebBrowser bileşeni için tetiklenir - TWebBrowser içinde görüntülenen belge için DEĞİL.
TWebBrowser bileşenini kullanarak Delphi uygulamanızda bu bilgileri (ve bir anda göreceğiniz gibi çok daha fazlasını) sağlamak için "batan olaylar"uygulanmalıdır.
TWebBrowser bileşenini kullanarak bir web sayfasına gitmek için Gezin yöntem. belge özelliği TWebBrowser bir döndürür ıhtmldocument2 değeri (web dokümanları için). Bu arabirim, bir belge hakkında bilgi almak, belgedeki HTML öğelerini ve metni incelemek ve değiştirmek ve ilgili olayları işlemek için kullanılır.
Fare bir belgenin üzerine geldiğinde bir belgenin içindeki "a" etiketinin "href" özniteliğini (bağlantısını) almak için, IHTMLDocument2 öğesinin "onmousemove" olayına tepki vermeniz gerekir.
Bir A öğesinin HREF özniteliğiyle ilgilendiğimiz için - farenin bittiğinde bir bağlantının URL'sini göstermek için "onmousemove" etkinliğini batırırız.
Yukarıda açıklandığı gibi, bir TWebBrowser öğesinin OnDocumentComplete olayında bir belgenin onmousemove olayına ekliyoruz:
birim Ünite 1;
arayüz
kullanımları
Windows, Mesajlar, SysUtils, Varyantlar, Sınıflar, Grafikler, Kontroller, Formlar,
Diyaloglar, OleCtrls, SHDocVw, MSHTML, ActiveX, StdCtrls;
tip
TObjectProcedure = prosedürnın-ninnesne;
TEventObject = sınıf(TInterfacedObject, IDispatch)
özel
FOnEvent: TObjectProcedure;
korumalı
fonksiyon GetTypeInfoCount (çıkış Sayısı: Tamsayı): HResult; stdcall;
fonksiyon GetTypeInfo (Dizin, LocaleID: Tamsayı; out TypeInfo): HResult; stdcall;
fonksiyon GetIDsOfNames (const IID: TGUID; İsimler: İşaretçi; NameCount, LocaleID: Tamsayı; DispID'ler: Pointer): HResult; stdcall;
fonksiyon Invoke (DispID: Tamsayı; const IID: TGUID; LocaleID: Tamsayı; Bayraklar: Kelime; var parametreler; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
halka açık
inşaatçı Oluşturmak(const OnEvent: TObjectProcedure);
Emlak OnEvent: TObjectProcedure okuma FOnEvent yazma FOnEvent;
son;
TForm1 = sınıf(TForm)
WebBrowser1: TWebBrowser;
elementInfo: TMemo;
prosedür WebBrowser1BeforeNavigate2 (ASender: TObject; const pDisp: IDispatch; var URL, Bayraklar, TargetFrameName, PostData, Üstbilgiler: OleVariant; var İptal: WordBool);
prosedür WebBrowser1DocumentComplete (ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
prosedür FormCreate (Gönderen: TObject);
özel
prosedür Document_OnMouseOver;
halka açık
{ halka açık bildirimler}
son;
var
Form1: TForm1;
htmlDoc: IHTMLDocument2;
uygulama
{$ R * .dfm}
prosedür TForm1.Document_OnMouseOver;
var
eleman: IHTMLElement;
başla
Eğer htmlDoc = sıfırsonra Çıkış;
element: = htmlDoc.parentWindow.event.srcElement;
elementInfo. Açık;
Eğer LowerCase (element.tagName) = 'a' sonra
başla
elementInfo. Çizgiler. Ekle ('LINK bilgisi ...');
elementInfo. Çizgiler. Ekle (Biçim ('HREF:% s', [element.getAttribute ('href', 0)]));
son
BaşkaEğer LowerCase (element.tagName) = 'img' sonra
başla
elementInfo. Çizgiler. Ekle ('IMAGE info ...');
elementInfo. Çizgiler. Ekle (Biçim ('SRC:% s', [element.getAttribute ('src', 0)]));
son
Başka
başla
elementInfo. Çizgiler. Ekle (Biçim ('TAG:% s', [element.tagName]));
son;
son; (* Document_OnMouseOver *)
prosedür TForm1.FormCreate (Gönderen: TObject);
başla
WebBrowser1.Navigate (' http://delphi.about.com') ;
elementInfo. Açık;
elementInfo. Çizgiler. Ekle ('Farenizi belgenin üzerine getirin ...');
son; (* FormCreate *)
prosedür TForm1.WebBrowser1BeforeNavigate2 (ASender: TObject; const pDisp: IDispatch; var URL, Bayraklar, TargetFrameName, PostData, Üstbilgiler: OleVariant; var İptal: WordBool);
başla
htmlDoc: = sıfır;
son; (* WebBrowser1BeforeNavigate2 *)
prosedür TForm1.WebBrowser1DocumentComplete (ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
başla
Eğer Atandı (WebBrowser1.Document) sonra
başla
htmlDoc: = WebBrowser1.Document gibi IHTMLDocument2;
htmlDoc.onmouseover: = (TEventObject. Oluştur (Document_OnMouseOver) gibi IDispatch);
son;
son; (* WebBrowser1DocumentComplete *)
{TEventObject}
inşaatçı TEventObject. Oluşturmak(const OnEvent: TObjectProcedure);
başla
miras Oluşturmak;
FOnEvent: = OnEvent;
son;
fonksiyon TEventObject. GetIDsOfNames (const IID: TGUID; İsimler: İşaretçi; NameCount, LocaleID: Tamsayı; DispID'ler: Pointer): HResult;
başla
Sonuç: = E_NOTIMPL;
son;
fonksiyon TEventObject. GetTypeInfo (Dizin, LocaleID: Tamsayı; out TypeInfo): HResult;
başla
Sonuç: = E_NOTIMPL;
son;
fonksiyon TEventObject. GetTypeInfoCount (çıkış Sayısı: Tamsayı): HResult;
başla
Sonuç: = E_NOTIMPL;
son;
fonksiyon TEventObject. Invoke (DispID: Tamsayı; const IID: TGUID; LocaleID: Tamsayı; Bayraklar: Kelime; var parametreler; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
başla
Eğer (DispID = DISPID_VALUE) sonra
başla
Eğer Atandı (FOnEvent) sonra FOnEvent;
Sonuç: = S_OK;
son
Başka Sonuç: = E_NOTIMPL;
son;
son.