---- 大概大家還記得Delphi的范例程序中的那個瀏覽器的例子吧。在那個例子中,利用控件THttp的屬性和方法制作了一個瀏覽器。該例子用于理解THttp控件的使用方法,確實不錯。但很少有人會用它作為一個真正的瀏覽器,原因很簡單,功能太有限了,不支持Frame,不支持Script腳本語言,不能以本地文件方式查看HTML文件等等。大部分用戶在使用IE或Navigator;我們程序員也樂意使用現(xiàn)成的瀏覽器,在需要使用瀏覽器時,就在程序中通過WinExec或CreateProcess等方法調(diào)用外部瀏覽器讓用戶使用。這種方法確實挺省事的,但總讓筆者有點不甘心,把程序控制權(quán)讓給其它外部程序總讓自己很感到麻煩,尤其當(dāng)應(yīng)用軟件的使用者的計算機使用水平不是很高時。如果能有一個瀏覽器控件,就可把瀏覽器嵌入到自己的程序中,那應(yīng)該挺不錯的。
---- 如果你的軟件的外部環(huán)境是WIN95+IE或WIN98(這樣的軟件使用率還很高的),那樣在系統(tǒng)中就已經(jīng)有了一個IE瀏覽器控件可以使用了,也許是你長時間沒有發(fā)覺吧,別浪費資源了,拿來使用吧。當(dāng)系統(tǒng)中已經(jīng)安裝了IE3.X或IE4.X時,IE瀏覽器控件已經(jīng)注冊到系統(tǒng)中了,請運行Regedit,用“編輯”菜單下的“查找”功能,查找“Shell.Explorer”鍵名,你會發(fā)現(xiàn) IE控件已經(jīng)作為ActiveX控件注冊在系統(tǒng)中了,這樣就我們可以在Delphi中使用該控件了。
一、 在Delphi中引入IE瀏覽器控件
---- 由于IE瀏覽器控件需要提供顯示功能才能使用,所以不能在程序中用CreateOleObject取得一個實例后直接使用其屬性和方法,否則程序在運行時會引起錯誤;這時需要用Delphi中提供的 “Import ActiveX Control”功能,操作方法見下所述。
---- 在“Components”菜單中,調(diào)用“Import ActiveX Control”功能,在Registered Controls (注冊控件)列表中選擇“Microsoft Internet Controls(Version1.1)”,下方的提示欄中顯示出其路徑為C:\PWin98\System\SHDOCVW.DLL,在Class Names(類型列表)中列出了可注冊的三個控件: TWebBrowser_V1、TWebBrowser和TShellFolderViewOC,分別為IE3瀏覽器控件、IE4瀏覽器控件和 “Microsoft外殼文件夾查看路由器”控件。單擊Install進行安裝。安裝完成后,在“ActiveX” 控件欄中,將增加三個控件,分別為TWebBrowser_V1、TWebBrowser和TShellFolderViewOC;在 Delphi的Imports目錄下,將創(chuàng)建一個文件SHDocVw_TLB.PAS,其中有這三個控件的包裝細(xì)節(jié),當(dāng)然含控件的屬性和方法說明了,它可以作為我們使用控件的參考資料。
二、 在Delphi程序中使用IE瀏覽器控件
----
以TWebBrowser(IE4瀏覽器控件)為例子。
TWebBrowser的常見屬性和方法主要有:
GoBack:方法,后退到上一個頁面。
GoForward:方法,前進到下一個頁面。
GoHome:方法,調(diào)用默認(rèn)的主頁頁面,
該頁面在IE的選項中設(shè)定。
GoSearch:方法,調(diào)用默認(rèn)的搜索頁面,
該頁面在IE的選項中設(shè)定。
Navigate(const URL: WideString;
var Flags, TargetFrameName, PostData,
Headers: OleVariant):方法,
調(diào)用指定頁面,具體參數(shù)如下:
URL:指定頁面的URL。Flags:
Word類型,作用還不清楚,可設(shè)為0。
TargetFrameName:WideString,
打開頁面所在的Frame,為空字符串時在當(dāng)前的
Frame中打開;TargetFrameName
指定的Frame存在時在Frame中打開;
TargetFrameName指定的Frame
不存在時則新建一個窗口打開,此時就相當(dāng)
于調(diào)用外部的IE瀏覽器了。
PostData:boolean,是否允許發(fā)送數(shù)據(jù)。
Headers:WideString,
要發(fā)送的URL請求的頭部數(shù)據(jù)。
Refresh:方法,刷新當(dāng)前頁面。
Stop:方法,停止調(diào)用或打開當(dāng)前頁面。
LocationName:屬性(WideString),當(dāng)前位置的名稱。
LocationURL:屬性(WideString),當(dāng)前位置的URL。
Busy: 屬性(Boolean),是否正忙。
Visible: 屬性(Boolean),瀏覽器窗口是否可見。
(以下屬性為在TWebBrowser新增,
TWebBrowser_V1中沒有,其作用有待探索)
StatusBar: 屬性(Boolean),是否顯示狀態(tài)欄。
StatusText: 屬性(WideString),狀態(tài)欄內(nèi)容。
ToolBar: 屬性(SYSINT),工具欄中的內(nèi)容。
MenuBar: 屬性(Boolean),是否顯示菜單條。
FullScreen: 屬性(Boolean),是否全屏顯示。
Offline: 屬性(Boolean),是否脫機瀏覽。
AddressBar: 屬性(Boolean),是否顯示地址欄。
TWebBrowser的常見事件主要有:
OnStatusTextChange = procedure
(Sender: TObject; const Text: WideString)
of object;
---- 在狀態(tài)欄提示信息變化時發(fā)生,參數(shù)Text為當(dāng)前狀態(tài)欄提示信息,我們可以根據(jù)該信息來更新我們自己的狀態(tài)欄提示信息或處理其它的事務(wù).
---- OnProgressChange = procedure(Sender: TObject; Progress, ProgressMax: Integer) of object;
---- 在打開頁面的進度變化時發(fā)生,參數(shù)Progress為當(dāng)前進度,ProgressMax為總進度,我們可以根據(jù)這兩個參數(shù)來更新我們自己的狀態(tài)欄提示信息或處理其它的事務(wù).
---- OnCommandStateChange = procedure(Sender: TObject; Command: Integer; Enable: WordBool) of object;
---- 當(dāng)執(zhí)行新的命令時發(fā)生,Command為命令標(biāo)識,Enable為是否允許執(zhí)行該命令. OnTitleChange = procedure(Sender: TObject; const Text: WideString) of object;
---- 在頁面的標(biāo)題發(fā)生變化時發(fā)生,Text為當(dāng)前標(biāo)題.
---- OnPropertyChange = procedure(Sender: TObject; const Property_: WideString) of object;
---- 在頁面的屬性發(fā)生變化時發(fā)生,Property_為屬性名稱 OnDownloadComplete: TNotifyEvent
---- 在下載頁面完成后發(fā)生.
---- OnDownloadBegin: TNotifyEvent
---- 在下載頁面開始前發(fā)生.
三、 在Delphi程序中應(yīng)用IE瀏覽器控件的兩個例子
---- (1)制作自己的幫助系統(tǒng)
---- 我們利用IE瀏覽器控件為用戶制作了一個幫助系統(tǒng),幫助文件由多個HTML文件組成,一個主題對應(yīng)一個 HTML文件(Topic.HTM),每個主題下的項目對應(yīng)HTML文件中的一個標(biāo)簽(#Item)。這樣在我們的系統(tǒng)中,就不必再調(diào)用IE瀏覽器或WinHelp程序來為用戶提供幫助了。相信大家知道HTML幫助文件與傳統(tǒng)的HLP幫助文件相比的優(yōu)勢所在吧。
---- 在下面例子中,演示了TWebBrowser(IE4瀏覽器控件)的Navigate方法的使用方法。請注意程序中的注釋。(下面為程序的主要片段)。
{根據(jù)主題和項目調(diào)用幫助文件}
procedure ShowHelp
( HelpTopic,HelpItem : String );
var
TargetFrameName,PostData,
Heads,Flags : OleVariant;
URL : widestring;
begin
TargetFrameName := '';{指定Frame的空字符串時,
則在當(dāng)前Frame中打開幫助文件}
PostData := false;{不發(fā)送數(shù)據(jù)}
Heads := '';{Header信息為空}
Flags := 0;{Flags設(shè)為0}
URL := HelpTopic + '.HTM#'+HelpItem;
{幫助信息的URL}
with formHelp.webbrowser do{在幫助窗口
中的IE瀏覽器控件中顯示幫助信息}
begin
navigate(URL,Flags,TargetFrameName,
PostData,Heads);{顯示幫助信息}
end;
end;
---- (2)顯示一個GIF動畫
---- 假如你還沒有一個適合的動畫顯示控件,不妨試用一下下面方法.
procedure ShowGIF( GIFFileName : String );
var
TargetFrameName,PostData,Heads,Flags : OleVariant;
URL : widestring;
begin
TargetFrameName := '';{指定Frame的空字符串時,
則在當(dāng)前Frame中打開動畫文件}
PostData := false;{不發(fā)送數(shù)據(jù)}
Heads := '';{Header信息為空}
Flags := 0;{Flags設(shè)為0}
URL := GIFFileName;
with formGIF.webbrowser do{在指定窗口中的
IE瀏覽器控件中顯示動畫}
begin
navigate(URL,Flags,TargetFrameName
,PostData,Heads);{顯示動畫文件}
end;
end;
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。