日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

delphi TWebBrowser组件使用详解

發(fā)布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 delphi TWebBrowser组件使用详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

delphi TWebBrowser組件使用詳解

????? 該組件是一個瀏覽器組件,可以顯示一個指定地址的網(wǎng)頁、設(shè)置網(wǎng)頁打開時的主頁以及對網(wǎng)頁進(jìn)行相關(guān)的操作,同時也可以對HTML文件進(jìn)行剪切、復(fù)制、粘貼、刪除等操作。該
????? 組件在Internet組件頁中。
????? 1.屬性
????? (1)AddressBar屬性
????? 設(shè)置是否顯示地址欄,在TWebBrowser中沒有用。
????? 語法:
????? property AddressBar: WordBool;
????? (2)Busy屬性
????? 確定Web瀏覽器組件是否正在導(dǎo)航到一個新的URL地址或正在下載文檔。
????? 語法:
????? property Busy: WordBool;
????? 示例:
????? 如果該屬性值為True,則在開始一個新的操作前,可用Stop方法中止當(dāng)前操作,然后再導(dǎo)航到其他的頁面,代碼如下:
????? procedure TForm1.BitBtn1Click(Sender: TObject);
????? begin
???????? if WebBrowser1.Busy then
?????????? WebBrowser1.Stop;
???????? WebBrowser1.Navigate('www.mingrisoft.com');
????? end;
????? (3)Container屬性
????? 訪問Web瀏覽器父類或容器的接口。
????? 語法:
????? property Container: IDispatch;
????? 示例:
????? 如果Web瀏覽器沒有一個具有Automation接口的容器,則該屬性的值為空。否則可以通過返回的接口,訪問Web瀏覽器父類或容器,代碼如下:
????? if WebBrowser1.Container <> nil then
????? begin
???????? WebBrowser1.Stop;
????? end
????? else
???????? ShowMessage('Web瀏覽器沒有一個具有Automation接口的容器');
????? (4)ControlInterface屬性
????? 訪問WebBrowser組件接口,這個接口允許一個Automation控制器訪問Web瀏覽器的屬性、方法和事件。
????? 語法:
????? property?? ControlInterface: IWebBrowser2;
????? 示例:
????? 顯示W(wǎng)ebBrowser1組件的名稱,代碼如下:
????? Showmessage(WebBrowser1.ControlInterface.Name);
????? (5)FullName屬性
????? 指定主機(jī)上Web瀏覽器組件的可執(zhí)行文件的完整的合法路徑名。
????? 語法:
????? property FullName: WideString;
????? 示例:
????? 顯示W(wǎng)eb瀏覽器組件所在的可執(zhí)行文件的名稱,并且包含路徑,代碼如下:
????? ShowMessage('Web組件所在的可執(zhí)行文件為:'+WebBrowser1.FullName);
????? (6)LocationName屬性
????? 獲得當(dāng)前在Web瀏覽器組件中顯示的資源名。
????? 語法:
????? property LocationName: WideString;
????? 示例:
????? 顯示網(wǎng)頁標(biāo)題的名稱,代碼如下:
????? ShowMessage('網(wǎng)頁標(biāo)題名:'+WebBrowser1.LocationName);
????? (7)LocationURL屬性
????? 確定當(dāng)前顯示文檔、文件夾的URL或路徑。
????? 語法:
????? property LocationURL: WideString;
????? 示例:
????? 顯示地址的完整路徑,代碼如下:
????? ShowMessage('Web瀏覽器組件連接的URL為:'+WebBrowser1.LocationURL);
????? (8)Name屬性
????? 指定計(jì)算機(jī)上的TWebBrowser的名稱。
????? 語法:
????? property Name: WideString;
????? (9)Offline屬性
????? 指定Web瀏覽器是否從本地緩存中獲取文檔。該屬性為True時,表示W(wǎng)eb瀏覽器以脫機(jī)方式工作,否則為在線方式。
????? 語法:
????? property Offline: WordBool;
????? 注意:可以使用IE瀏覽器保存HTML網(wǎng)頁到本地緩存,瀏覽器可以脫機(jī)方式工作。
????? (10)Path屬性
????? 指定主機(jī)上Web瀏覽器組件可執(zhí)行文件的路徑名,不包括文件名。
????? 語法:
????? property Path: WideString;
????? 示例:
????? Str := WebBrowser1.Path;
????? (11)ReadyState屬性
????? 獲得指定Web瀏覽器組件的狀態(tài)信息,使用這個信息可避免Web瀏覽器執(zhí)行未準(zhǔn)備的操作。
????? 語法:
????? property ReadyState: TOleEnum;
????? (12)RegisterAsBrowser屬性
????? 設(shè)置該屬性為True時,當(dāng)前使用的Web瀏覽器組件成為最高級別瀏覽器。
????? 語法:
????? property RegisterAsBrowser: WordBool;
????? (13)RegisterAsDropTarget屬性
????? 指出是否允許用戶拖放HTML文檔到當(dāng)前Web瀏覽器。
????? 語法:
????? property RegisterAsDropTarget: WordBool;
????? 示例:
????? 該屬性為True時,允許用戶拖放HTML文檔到當(dāng)前Web瀏覽器;否則拖放操作無效,代碼如下:
????? procedure TForm1.ToolButton4Click(Sender: TObject);
????? begin
???????? if not WebBrowser1.RegisterAsDropTarget then
?????????? WebBrowser1.RegisterAsDropTarget:=true;
????? end;
????? (14)Silent屬性
????? 指定TWebBrowser是否顯示對話框。該屬性為True時,該對話框不再顯示腳本錯誤。
????? 語法:
????? property Silent: WordBool;
????? (15)Type_屬性
????? 指定包含的文檔對象的類型名稱,讀取該屬性以確定Automation對象的類型,該對象的接口通過Document屬性表示。
????? 語法:
????? property Type_: WideString;
????? 示例:
????? 顯示文件的類型,代碼如下:
????? ShowMessage('Automation對象的類型為:'+WebBrowser1.Type_);
????? 2.方法
????? (1)ClientToWindow方法
????? IE使用該方法轉(zhuǎn)換客戶坐標(biāo)與窗口坐標(biāo)。一般不要使用該方法。
????? 語法:
????? procedure ClientToWindow(var pcx: SYSINT; var pcy: SYSINT);
????? pcx:坐標(biāo)點(diǎn)X。
????? pcy:坐標(biāo)點(diǎn)Y。
????? (2)ExecWB方法
????? 允許用戶用IOleCommandTarget接口傳遞一個命令到當(dāng)前Web瀏覽器組件。Microsoft定義了一些常量來表示這些命令,但是Web瀏覽器不全部支持這些命令,可用QueryStatusWB方法使用這些命令。
????? 語法:
????? procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT); overload;
????? procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT; var pvaIn:
????? OleVariant);
????? overload;
????? procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT; var pvaIn:
????? OleVariant;
????? var pvaOut: OleVariant); overload;
????? 示例:
????? 調(diào)用ExecWB方法能夠完成許多功能,例如停止網(wǎng)頁瀏覽,代碼如下:
????? WebBrowser1.ExecWB(OLECMDID_STOP,OLECMDEXECOPT_PROMPTUSER);
????? (3)GoBack方法
????? 返回到歷史列表中的上一個文檔。如果歷史列表中沒有包含另外的文檔,該方法將無效。
????? 語法:
????? procedure GoBack;
????? 示例:
????? 返回當(dāng)前頁的上一頁,代碼如下:
????? WebBrowser1.GoBack();
????? (4)GoForward方法
????? 返回到歷史列表中的下一個文檔,與最后調(diào)用GoBack方法的效果相反。
????? 語法:
????? procedure GoForward;
????? 示例:
????? 返回當(dāng)前頁的下一頁,但是如果歷史列表中沒有下一個文檔,則產(chǎn)生異常,代碼如下:
????? try
???????? WebBrowser1.GoForward();
????? except
???????? exit;
????? end;
????? (5)GoHome方法
????? 返回已注冊主頁或開始頁,在注冊表中指定主頁的注冊項(xiàng)為:HKEY_CURRENT_USER/Sof-
????? tware/Microsoft/IE/Main下的SStartpage名稱欄。可用TRegistry、TRegistryIniFile對象或IE瀏覽器“工具”中的Internet選項(xiàng)改變注冊主頁。
????? 語法:
????? procedure GoHome;
????? 示例:
????? 返回主頁,代碼如下:
????? if WebBrowser1.Busy then
???????? WebBrowser1.Stop;
????? WebBrowser1.GoHome;
????? (6)GoSearch方法
????? 打開已注冊的搜索網(wǎng)頁,在注冊表中指定搜索網(wǎng)頁的注冊項(xiàng)為:HKEY_CURRENT_USER/ Sof-
????? ware/Microsoft/IE/Main下的SearchPage名稱欄。可用TRegistry、TRegistryIniFile對象或IE瀏覽器中“工具”中的Internet選項(xiàng)改變注冊搜索網(wǎng)頁。
????? 語法:
????? procedure GoSearch;
????? 示例:
????? 打開已注冊的搜索網(wǎng)頁,代碼如下:
????? if WebBrowser1.Busy then
???????? WebBrowser1.Stop;
????? WebBrowser1.GoSearch();
????? (7)Navigate方法
????? 定位或下載指定的資源,發(fā)送HTTP消息到指定的URL并顯示指定文件的內(nèi)容,也可用來顯示指定的文件。
????? 語法:
????? procedure Navigate(const URL: WideString); overload;
????? procedure Navigate(const URL: WideString; var Flags: OleVariant);
overload;
????? procedure Navigate(const URL: WideString; var Flags: OleVariant;var
????? TargetFrameName:
????? OleVariant); overload;
????? procedure Navigate(const URL: WideString; var Flags: OleVariant; var
????? TargetFrameName:
????? OleVariant; var PostData: OleVariant); overload;
????? procedure Navigate(const URL: WideString; var Flags: OleVariant; var
????? TargetFrameName:
????? OleVariant; var PostData: OleVariant; var Headers: OleVariant); overload;
????? Navigate方法語法中各參數(shù)的說明如表26.14所示。
????? 示例:
????? Navigate方法是TWebBrowser組件中最重要的方法之一,使用該方法能夠?qū)?dāng)前TWebBrowser組件導(dǎo)航到任何存在的鏈接上,代碼如下:
????? if WebBrowser1.Busy then
???????? WebBrowser1.Stop;
????? WebBrowser1.Navigate(URL);???? //URL為網(wǎng)址
????? (8)Navigate2方法
????? 定位或下載指定的資源,發(fā)送HTTP消息到指定的URL并顯示指定文件的內(nèi)容,或?qū)Ш降讲荒鼙磉_(dá)為URL的資源。
????? 語法:
????? procedure Navigate2(var URL: OleVariant); overload;
????? procedure Navigate2(var URL: OleVariant; var Flags: OleVariant); overload;
????? procedure Navigate2(var URL: OleVariant; var Flags: OleVariant; var
????? TargetFrameName:
????? OleVariant); Overload;
????? procedure Navigate2(var URL: OleVariant; var Flags: OleVariant; var
????? TargetFrameName:
????? OleVariant; var PostData: OleVariant); overload;
????? procedure Navigate2(var URL: OleVariant; var Flags: OleVariant; var
????? TargetFrameName:
????? OleVariant; var PostData: OleVariant; var Headers: OleVariant); overload;
????? 示例:
????? Navigate2方法與Navegate方法類似,能夠?qū)?dāng)前TWebBrowser組件導(dǎo)航到指定的資源,代碼如下:
????? procedure TForm1.GoUrl2(URL: String);??? //URL為指定的資源的網(wǎng)址
????? var
???????? oUrl:Olevariant;
???????? oPost,oFram,oflag:Olevariant;
????? begin
???????? oUrl:=Url;
???????? oFram:=0;
???????? oFlag:=navOpenInNewWindow;???? //在新窗口中打開資源
???????? oPost:='';
???????? if WebBrowser1.Busy then
?????????? WebBrowser1.Stop;
???????? WebBrowser1.Navigate2(oUrl,oFlag,oFram,oPost);
????? end;
????? (9)QueryStatusWB方法
????? 確定可以使用ExecWB方法執(zhí)行的命令,即Web瀏覽器支持的命令信息,該方法使用IOleCommandTarget接口的QueryStatus方法來得到命令狀態(tài)的信息。
????? 語法:
????? function?? QueryStatusWB(cmdID: OLECMDID): OLECMDF;
????? cmdID:指定要獲取其信息的命令。
????? (10)Refresh方法
????? 重新載入當(dāng)前文檔。Web瀏覽器正在顯示的URL指定的資源可能已經(jīng)發(fā)生變化時,這個方法非常有用。該方法總是發(fā)送一個參數(shù),即非緩存標(biāo)題,通知服務(wù)器不要返回緩存的復(fù)制,這對于某些服務(wù)器可能是一個問題。為阻止發(fā)送這個非緩存標(biāo)題參數(shù)或只是刷新過期的網(wǎng)頁,可用Refresh2方法。
????? 語法:
????? procedure Refresh;
????? 示例:
????? 該方法完成了IE瀏覽器的刷新功能,可以使用該方法來重新載入當(dāng)前頁面,如果當(dāng)前TWebBrowser組件沒有載入任何的網(wǎng)頁,則會產(chǎn)生異常,代碼如下:
????? if WebBrowser1.LocationURL<>'' then
???????? WebBrowser1.Refresh;
????? (11)Refresh2方法
????? 調(diào)用Refresh2方法重新裝入當(dāng)前文檔,與Refresh方法不同的是,該方法可指定要完成的刷新級別。
????? 語法:
????? procedure Refresh2; overload;
????? procedure Refresh2(var Level: OleVariant); overload;
????? Level:指定要被刷新信息的類型,其取值如表7所示。
????? 示例:
????? Refresh2方法提供了更加復(fù)雜的刷新方式,提供了多種刷新方法,通過該方法同樣能夠?qū)崿F(xiàn)Refresh方法完成的任務(wù),代碼如下:
????? procedure TForm1.ToolButton7Click(Sender: TObject);
????? var
???????? Level:Olevariant;
????? begin
???????? Level:=REFRESH_IFEXPIRED;
???????? if WebBrowser1.LocationURL<>'' then
?????????? WebBrowser1.Refresh2(Level);
????? end;
????? (12)Stop方法
????? 終止任何未完成的導(dǎo)航或下載操作,并終止任何動態(tài)的網(wǎng)頁元素,如背景音樂和動畫等。
????? 語法:
????? procedure Stop;
????? 示例:
????? 該方法實(shí)現(xiàn)了IE中的停止功能,即停止了一切載入工作,代碼如下:
????? WebBrowser1.Stop;
????? 3.事件
????? (1)OnBeforeNavigate2事件
????? Web瀏覽器導(dǎo)航到一個新的資源前被觸發(fā)。
????? 語法:
????? property OnBeforeNavigate2: TWebBrowserBeforeNavigate2;
????? type TWebBrowserBeforeNavigate2 = procedure(Sender: TObject; const pDisp:
????? IDispatch; var URL: OleVariant; var Flags: OleVariant; var
????? TargetFrameName: OleVariant; var PostData: OleVariant; var Headers:
????? OleVariant; var Cancel: WordBool) of object;
????? (2)OnCommandStateChange事件
????? 當(dāng)執(zhí)行TWebBrowser組件的某個方法的功能改變時被觸發(fā),其狀態(tài)取值決定于執(zhí)行Web瀏覽器中某個方法的功能。
????? 語法:
????? property OnCommandStateChange: TWebBrowserCommandStateChange;
????? type TWebBrowserCommandStateChange = procedure(Sender: TObject; Command:
????? Integer; Enable: WordBool) of object;
????? Sender:指出其功能已變化的Web瀏覽器組件。
????? Enable:指定CSC_NAVIGATEFORWARD或CSC_NAVIGATEBACK命令是否可用,其值為True時,可用;否則不可用。
????? 示例:
????? OnCommandStateChange事件提供了一個命令狀態(tài)改變后的處理功能,通過該事件能夠判斷執(zhí)行某個命令后的當(dāng)前瀏覽器狀態(tài),例如控制“后退”、“前進(jìn)”或“停止”按鈕是否可用,代碼如下:
????? procedure TForm1.WebBrowser1CommandStateChange(Sender: TObject;
???????? Command: Integer; Enable: WordBool);
????? begin
???????? case Command of
?????????? CSC_NAVIGATEBACK: ToolButton5.Enabled := Enable;???? //“后退”按鈕
?????????? CSC_NAVIGATEFORWARD: ToolButton4.Enabled := Enable;???? //“前進(jìn)”按鈕
?????????? CSC_UPDATECOMMANDS: ToolButton2.Enabled := TWebBrowser(Sender).Busy;?
?????? //“停止”按鈕
???????? end;
????? end;
????? (3)OnDownloadBegin事件
????? Web瀏覽器開始下載一個文檔時被觸發(fā),編寫其事件處理程序可以指定Web瀏覽器定位到一個文檔后下載該文檔前應(yīng)采取的操作。
????? 語法:
????? property OnDownloadBegin: TNotifyEvent;
????? type TNotifyEvent = procedure (Sender: TObject) of object;
????? (4)OnDownloadComplete事件
????? 導(dǎo)航操作完成、暫停或操作失敗時被觸發(fā),編寫其事件處理程序可以指定應(yīng)采取的操作。
????? 語法:
????? property OnDownloadComplete: TNotifyEvent;
????? type TNotifyEvent = procedure (Sender: TObject) of object;
????? (5)OnNavigateComplete2事件
????? 當(dāng)Web瀏覽器成功地導(dǎo)航到一個新的位置時被觸發(fā),編寫其事件處理程序可以指定應(yīng)執(zhí)行的操作。這個事件可能產(chǎn)生在當(dāng)前文檔下載完成前,但是事件結(jié)束時,至少已經(jīng)接收到部分文檔并產(chǎn)生了文檔視圖。
????? 語法:
????? property OnNavigateComplete2: TWebBrowserNavigateComplete2;
????? type TWebBrowserNavigateComplete2 = procedure(Sender: TObject; const
pDisp:
????? IDispatch; var URL: OleVariant) of object;
????? Sender:導(dǎo)航到新的資源的Web瀏覽器。
????? pDisp:瀏覽器的Automation接口。
????? 示例:
????? 當(dāng)TWebBrowser組件成功地導(dǎo)航到一個新的位置后觸發(fā)該事件,利用該事件能夠獲得當(dāng)前狀態(tài)或URL地址,代碼如下:
????? if WebBrowser1.Offline then
???????? Statusbar1.Panels[Statusbar1.Panels.Count-1].Text:='脫機(jī)';
????? else
???????? Statusbar1.Panels[Statusbar1.Panels.Count-1].Text:='在線';
????? ComboBox1.Text:=WebBrowser1.LocationURL;
????? (6)OnProgressChange事件
????? 當(dāng)更新下載操作的進(jìn)度時被觸發(fā),編寫其事件處理程序可以提供一個關(guān)于下載進(jìn)度的可視化的反饋。
????? 語法:
????? property OnProgressChange: TWebBrowserProgressChange;
????? type TWebBrowserProgressChange = procedure(Sender: TObject; Progress:
????? Integer;
????? ProgressMax: Integer) of object;
????? Sender:正在下載文檔處理進(jìn)程中的Web瀏覽器。
????? Progress:指出有多少文檔已經(jīng)下載,取值范圍在0~ProgressMax之間。當(dāng)其參數(shù)為&#8722;1時,操作結(jié)束。
????? PropressMax:指示下載操作的最大值。
????? 示例:
????? 利用該事件能夠設(shè)計(jì)一個準(zhǔn)確的網(wǎng)頁載入進(jìn)度條,該進(jìn)度條表示了當(dāng)前網(wǎng)頁的載入進(jìn)度,代碼如下:
????? procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress,
???????? ProgressMax: Integer);
????? begin
???????? ProgressBar1.Max:=ProgressMax;
???????? if Progress = -1 then
?????????? ProgressBar1.Visible:=false
???????? else
???????? begin
?????????? ProgressBar1.Position := Progress;
?????????? ProgressBar1.Visible := True;
???????? end;
???????? if?? ProgressBar1.Position = ProgressMax then
?????????? ProgressBar1.Visible:=False;
????? end;

?

總結(jié)

以上是生活随笔為你收集整理的delphi TWebBrowser组件使用详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。