delphi TWebBrowser組件使用詳解

delphi TWebBrowser組件使用詳解

      該組件是一個瀏覽器組件,可以顯示一個指定地址的網頁、設置網頁打開時的主頁以及對網頁進行相關的操作,同時也可以對HTML文件進行剪切、複製、粘貼、刪除等操作。該
      組件在Internet組件頁中。
      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;


發佈了29 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章