1. 程式人生 > 實用技巧 >Delphi TWebBrowser[2]-屬性、方法、事件示例詳解

Delphi TWebBrowser[2]-屬性、方法、事件示例詳解

Delphi TWebBrowser[2]-屬性、方法、事件示例詳解

1、屬性
(1)AddressBar  //設定是否顯示位址列,在TWebBrowser中沒有用。  語法:property AddressBar:WordBool;
(2)Busy  //確定Web瀏覽器元件是否正在導航到一個新的URL地址或正在下載文件。  語法:property Busy: WordBool;
//如果該屬性值為True,則在開始一個新的操作前,可用Stop方法中止當前操作,然後再導航到其他的頁面,程式碼如下:
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;
//顯示WebBrowser1元件的名稱,程式碼如下:
Showmessage(WebBrowser1.ControlInterface.Name);
(5)FullName  //指定主機上Web瀏覽器元件的可執行檔案的完整的合法路徑名。  語法:property FullName: WideString;
//顯示Web瀏覽器元件所在的可執行檔案的名稱,並且包含路徑,程式碼如下:
ShowMessage('Web元件所在的可執行檔案為:'+WebBrowser1.FullName);
(6)LocationName  
//獲得當前在Web瀏覽器元件中顯示的資源名。  語法:property LocationName: WideString;

//顯示網頁標題的名稱,程式碼如下:
ShowMessage('網頁標題名:'+WebBrowser1.LocationName);
(7)LocationURL  //確定當前顯示文件、資料夾的URL或路徑。  語法:property LocationURL: WideString;
//顯示地址的完整路徑,程式碼如下:
ShowMessage('Web瀏覽器元件連線的URL為:'+WebBrowser1.LocationURL);
(8)Name  //指定計算機上的TWebBrowser的名稱。  語法:property Name: WideString;
(9)Offline  //指定Web瀏覽器是否從本地快取中獲取文件。該屬性為True時,表示Web瀏覽器以離線方式工作,否則為線上方式。
語法:property Offline: WordBool;
注意:可以使用IE瀏覽器儲存HTML網頁到本地快取,瀏覽器可以離線方式工作。
(10)Path  //指定主機上Web瀏覽器元件可執行檔案的路徑名,不包括檔名。  語法:property Path: WideString;
Str := WebBrowser1.Path;
(11)ReadyState  //獲得指定Web瀏覽器元件的狀態資訊,使用這個資訊可避免Web瀏覽器執行未準備的操作。  語法:property ReadyState: TOleEnum;
(12)RegisterAsBrowser  //設定該屬性為True時,當前使用的Web瀏覽器元件成為最高級別瀏覽器。  語法:property RegisterAsBrowser: WordBool;
(13)RegisterAsDropTarget  //指出是否允許使用者拖放HTML文件到當前Web瀏覽器。  語法:property RegisterAsDropTarget: WordBool;
//該屬性為True時,允許使用者拖放HTML文件到當前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使用該方法轉換客戶座標與視窗座標。一般不要使用該方法。
語法:procedure ClientToWindow(var pcx: SYSINT; var pcy: SYSINT);  //pcx:座標點X。//pcy:座標點Y。
(2)ExecWB  //允許使用者用IOleCommandTarget介面傳遞一個命令到當前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;
//呼叫ExecWB方法能夠完成許多功能,例如停止網頁瀏覽,程式碼如下:
WebBrowser1.ExecWB(OLECMDID_STOP,OLECMDEXECOPT_PROMPTUSER);
(3)GoBack  //返回到歷史列表中的上一個文件。如果歷史列表中沒有包含另外的文件,該方法將無效。
語法:procedure GoBack;
//返回當前頁的上一頁,程式碼如下:
WebBrowser1.GoBack();
(4)GoForward  //返回到歷史列表中的下一個文件,與最後呼叫GoBack方法的效果相反。
語法:procedure GoForward;
//返回當前頁的下一頁,但是如果歷史列表中沒有下一個文件,則產生異常,程式碼如下:
try
   WebBrowser1.GoForward();
except
   exit;
end;
(5)GoHome  //返回已註冊主頁或開始頁,在登錄檔中指定主頁的註冊項為:HKEY_CURRENT_USER\Sof- tware\Microsoft\IE\Main下的SStartpage名稱欄。可用TRegistry、TRegistryIniFile物件或IE瀏覽器“工具”中的Internet選項改變註冊主頁。
語法:procedure GoHome;
//返回主頁,程式碼如下:
if WebBrowser1.Busy then
   WebBrowser1.Stop;
WebBrowser1.GoHome;
(6)GoSearch  //開啟已註冊的搜尋網頁,在登錄檔中指定搜尋網頁的註冊項為:HKEY_CURRENT_USER\ Sof- ware\Microsoft\IE\Main下的SearchPage名稱欄。可用TRegistry、TRegistryIniFile物件或IE瀏覽器中“工具”中的Internet選項改變註冊搜尋網頁。
語法:procedure GoSearch;
//開啟已註冊的搜尋網頁,程式碼如下:
if WebBrowser1.Busy then
   WebBrowser1.Stop;
WebBrowser1.GoSearch();
(7)Navigate  //定位或下載指定的資源,傳送HTTP訊息到指定的URL並顯示指定檔案的內容,也可用來顯示指定的檔案。
語法:
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方法語法中各引數的說明如表26.14所示。
//Navigate方法是TWebBrowser元件中最重要的方法之一,使用該方法能夠將當前TWebBrowser元件導航到任何存在的連結上,程式碼如下:
if WebBrowser1.Busy then
   WebBrowser1.Stop;
WebBrowser1.Navigate(URL);     //URL為網址
(8)Navigate2  //定位或下載指定的資源,傳送HTTP訊息到指定的URL並顯示指定檔案的內容,或導航到不能表達為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方法類似,能夠將當前TWebBrowser元件導航到指定的資源,程式碼如下:
procedure TForm1.GoUrl2(URL: String);    //URL為指定的資源的網址
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方法執行的命令,即Web瀏覽器支援的命令資訊,該方法使用IOleCommandTarget介面的QueryStatus方法來得到命令狀態的資訊。
語法:function QueryStatusWB(cmdID: OLECMDID): OLECMDF;  //cmdID:指定要獲取其資訊的命令。
(10)Refresh  //重新載入當前文件。Web瀏覽器正在顯示的URL指定的資源可能已經發生變化時,這個方法非常有用。該方法總是傳送一個引數,即非快取標題,通知伺服器不要返回快取的複製,這對於某些伺服器可能是一個問題。為阻止傳送這個非快取標題引數或只是重新整理過期的網頁,可用Refresh2方法。
語法:procedure Refresh;
//該方法完成了IE瀏覽器的重新整理功能,可以使用該方法來重新載入當前頁面,如果當前TWebBrowser元件沒有載入任何的網頁,則會產生異常,程式碼如下:
if WebBrowser1.LocationURL<>'' then
   WebBrowser1.Refresh;
(11)Refresh2  //呼叫Refresh2方法重新裝入當前文件,與Refresh方法不同的是,該方法可指定要完成的重新整理級別。
語法:
procedure Refresh2; overload;
procedure Refresh2(var Level: OleVariant); overload;  //Level:指定要被重新整理資訊的型別,其取值如表7所示。
//Refresh2方法提供了更加複雜的重新整理方式,提供了多種重新整理方法,通過該方法同樣能夠實現Refresh方法完成的任務,程式碼如下:
procedure TForm1.ToolButton7Click(Sender: TObject);
var
   Level:Olevariant;
begin
   Level:=REFRESH_IFEXPIRED;
   if WebBrowser1.LocationURL<>'' then
     WebBrowser1.Refresh2(Level);
end;
(12)Stop  //終止任何未完成的導航或下載操作,並終止任何動態的網頁元素,如背景音樂和動畫等。
語法:procedure Stop;
//該方法實現了IE中的停止功能,即停止了一切載入工作,程式碼如下:
WebBrowser1.Stop;

  

3、事件
(1)OnBeforeNavigate2  //Web瀏覽器導航到一個新的資源前被觸發。
語法:
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  //當執行TWebBrowser元件的某個方法的功能改變時被觸發,其狀態取值決定於執行Web瀏覽器中某個方法的功能。
語法:
property OnCommandStateChange: TWebBrowserCommandStateChange;
type TWebBrowserCommandStateChange = procedure(Sender: TObject; Command: Integer; Enable: WordBool) of object;
//Sender:指出其功能已變化的Web瀏覽器元件。
//Enable:指定CSC_NAVIGATEFORWARD或CSC_NAVIGATEBACK命令是否可用,其值為True時,可用;否則不可用。
//OnCommandStateChange事件提供了一個命令狀態改變後的處理功能,通過該事件能夠判斷執行某個命令後的當前瀏覽器狀態,例如控制“後退”、“前進”或“停止”按鈕是否可用,程式碼如下:
procedure TForm1.WebBrowser1CommandStateChange(Sender: TObject;
   Command: Integer; Enable: WordBool);
begin
   case Command of
     CSC_NAVIGATEBACK: ToolButton5.Enabled := Enable;     //“後退”按鈕
     CSC_NAVIGATEFORWARD: ToolButton4.Enabled := Enable;     //“前進”按鈕
     CSC_UPDATECOMMANDS: ToolButton2.Enabled := TWebBrowser(Sender).Busy;   //“停止”按鈕
   end;
end;
(3)OnDownloadBegin  //Web瀏覽器開始下載一個文件時被觸發,編寫其事件處理程式可以指定Web瀏覽器定位到一個文件後下載該文件前應採取的操作。
語法:
property OnDownloadBegin: TNotifyEvent;
type TNotifyEvent = procedure (Sender: TObject) of object;
(4)OnDownloadComplete  //導航操作完成、暫停或操作失敗時被觸發,編寫其事件處理程式可以指定應採取的操作。
語法:
property OnDownloadComplete: TNotifyEvent;
type TNotifyEvent = procedure (Sender: TObject) of object; (5)OnNavigateComplete2  //當Web瀏覽器成功地導航到一個新的位置時被觸發,編寫其事件處理程式可以指定應執行的操作。這個事件可能產生在當前文件下載完成前,但是事件結束時,至少已經接收到部分文件併產生了文件檢視。
語法:
property OnNavigateComplete2: TWebBrowserNavigateComplete2;
type TWebBrowserNavigateComplete2 = procedure(Sender: TObject; const pDisp:
IDispatch; var URL: OleVariant) of object;
//Sender:導航到新的資源的Web瀏覽器。
//pDisp:瀏覽器的Automation介面。
//當TWebBrowser元件成功地導航到一個新的位置後觸發該事件,利用該事件能夠獲得當前狀態或URL地址,程式碼如下:
if WebBrowser1.Offline then
   Statusbar1.Panels[Statusbar1.Panels.Count-1].Text:='離線';
else
   Statusbar1.Panels[Statusbar1.Panels.Count-1].Text:='線上';
ComboBox1.Text:=WebBrowser1.LocationURL;
(6)OnProgressChange  //當更新下載操作的進度時被觸發,編寫其事件處理程式可以提供一個關於下載進度的視覺化的反饋。
語法:
property OnProgressChange: TWebBrowserProgressChange;
type TWebBrowserProgressChange = procedure(Sender: TObject; Progress: Integer;
ProgressMax: Integer) of object;
//Sender:正在下載文件處理程序中的Web瀏覽器。
//Progress:指出有多少文件已經下載,取值範圍在0~ProgressMax之間。當其引數為&#8722;1時,操作結束。
//PropressMax:指示下載操作的最大值。
示例:
//利用該事件能夠設計一個準確的網頁載入進度條,該進度條表示了當前網頁的載入進度,程式碼如下:
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; 

  

建立時間:2020.11.18  更新時間: