a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Delphi > 正文

在Delphi程序中應用IE瀏覽器控件

2019-11-18 18:57:23
字體:
來源:轉載
供稿:網友

在Delphi程序中應用IE瀏覽器控件

王發軍

---- 大概大家還記得Delphi的范例程序中的那個瀏覽器的例子吧。在那個例子中,利用控件THttp的屬性和方法制作了一個瀏覽器。該例子用于理解THttp控件的使用方法,確實不錯。但很少有人會用它作為一個真正的瀏覽器,原因很簡單,功能太有限了,不支持Frame,不支持Script腳本語言,不能以本地文件方式查看HTML文件等等。大部分用戶在使用IE或Navigator;我們程序員也樂意使用現成的瀏覽器,在需要使用瀏覽器時,就在程序中通過WinExec或CreatePRocess等方法調用外部瀏覽器讓用戶使用。這種方法確實挺省事的,但總讓筆者有點不甘心,把程序控制權讓給其它外部程序總讓自己很感到麻煩,尤其當應用軟件的使用者的計算機使用水平不是很高時。如果能有一個瀏覽器控件,就可把瀏覽器嵌入到自己的程序中,那應該挺不錯的。

---- 如果你的軟件的外部環境是WIN95+IE或WIN98(這樣的軟件使用率還很高的),那樣在系統中就已經有了一個IE瀏覽器控件可以使用了,也許是你長時間沒有發覺吧,別浪費資源了,拿來使用吧。當系統中已經安裝了IE3.X或IE4.X時,IE瀏覽器控件已經注冊到系統中了,請運行Regedit,用“編輯”菜單下的“查找”功能,查找“Shell.Explorer”鍵名,你會發現 IE控件已經作為ActiveX控件注冊在系統中了,這樣就我們可以在Delphi中使用該控件了。

一、 在Delphi中引入IE瀏覽器控件

 

---- 由于IE瀏覽器控件需要提供顯示功能才能使用,所以不能在程序中用CreateOleObject取得一個實例后直接使用其屬性和方法,否則程序在運行時會引起錯誤;這時需要用Delphi中提供的 “Import ActiveX Control”功能,操作方法見下所述。

---- 在“Components”菜單中,調用“Import ActiveX Control”功能,在Registered Controls (注冊控件)列表中選擇“Microsoft Internet Controls(Version1.1)”,下方的提示欄中顯示出其路徑為C:PWin98SystemSHDOCVW.DLL,在Class Names(類型列表)中列出了可注冊的三個控件: TWebBrowser_V1、TWebBrowser和TShellFolderViewOC,分別為IE3瀏覽器控件、IE4瀏覽器控件和 “Microsoft外殼文件夾查看路由器”控件。單擊Install進行安裝。安裝完成后,在“ActiveX” 控件欄中,將增加三個控件,分別為TWebBrowser_V1、TWebBrowser和TShellFolderViewOC;在 Delphi的Imports目錄下,將創建一個文件SHDocVw_TLB.PAS,其中有這三個控件的包裝細節,當然含控件的屬性和方法說明了,它可以作為我們使用控件的參考資料。

二、 在Delphi程序中使用IE瀏覽器控件

 

----

以TWebBrowser(IE4瀏覽器控件)為例子。TWebBrowser的常見屬性和方法主要有:GoBack:方法,后退到上一個頁面。GoForward:方法,前進到下一個頁面。GoHome:方法,調用默認的主頁頁面,該頁面在IE的選項中設定。GoSearch:方法,調用默認的搜索頁面,該頁面在IE的選項中設定。Navigate(const URL: WideString; var Flags, TargetFrameName, PostData, Headers: OleVariant):方法,調用指定頁面,具體參數如下:URL:指定頁面的URL。Flags:   Word類型,作用還不清楚,可設為0。TargetFrameName:WideString,打開頁面所在的Frame,為空字符串時在當前的Frame中打開;TargetFrameName指定的Frame存在時在Frame中打開;TargetFrameName指定的Frame不存在時則新建一個窗口打開,此時就相當于調用外部的IE瀏覽器了。PostData:boolean,是否允許發送數據。Headers:WideString,要發送的URL請求的頭部數據。Refresh:方法,刷新當前頁面。Stop:方法,停止調用或打開當前頁面。LocationName:屬性(WideString),當前位置的名稱。LocationURL:屬性(WideString),當前位置的URL。Busy: 屬性(Boolean),是否正忙。Visible: 屬性(Boolean),瀏覽器窗口是否可見。(以下屬性為在TWebBrowser新增,TWebBrowser_V1中沒有,其作用有待探索)StatusBar: 屬性(Boolean),是否顯示狀態欄。StatusText: 屬性(WideString),狀態欄內容。ToolBar: 屬性(SYSINT),工具欄中的內容。MenuBar: 屬性(Boolean),是否顯示菜單條。FullScreen: 屬性(Boolean),是否全屏顯示。Offline: 屬性(Boolean),是否脫機瀏覽。AddressBar: 屬性(Boolean),是否顯示地址欄。TWebBrowser的常見事件主要有:OnStatusTextChange = procedure(Sender: TObject; const Text: WideString) of object;

 

---- 在狀態欄提示信息變化時發生,參數Text為當前狀態欄提示信息,我們可以根據該信息來更新我們自己的狀態欄提示信息或處理其它的事務.

---- OnProgressChange = procedure(Sender: TObject; Progress, ProgressMax: Integer) of object;

---- 在打開頁面的進度變化時發生,參數Progress為當前進度,ProgressMax為總進度,我們可以根據這兩個參數來更新我們自己的狀態欄提示信息或處理其它的事務.

---- OnCommandStateChange = procedure(Sender: TObject; Command: Integer; Enable: WordBool) of object;

---- 當執行新的命令時發生,Command為命令標識,Enable為是否允許執行該命令. OnTitleChange = procedure(Sender: TObject; const Text: WideString) of object;

---- 在頁面的標題發生變化時發生,Text為當前標題.

---- OnPropertyChange = procedure(Sender: TObject; const Property_: WideString) of object;

---- 在頁面的屬性發生變化時發生,Property_為屬性名稱 OnDownloadComplete: TNotifyEvent

---- 在下載頁面完成后發生.

---- OnDownloadBegin: TNotifyEvent

---- 在下載頁面開始前發生.

三、 在Delphi程序中應用IE瀏覽器控件的兩個例子

 

---- (1)制作自己的幫助系統

---- 我們利用IE瀏覽器控件為用戶制作了一個幫助系統,幫助文件由多個HTML文件組成,一個主題對應一個 HTML文件(Topic.HTM),每個主題下的項目對應HTML文件中的一個標簽(#Item)。這樣在我們的系統中,就不必再調用IE瀏覽器或WinHelp程序來為用戶提供幫助了。相信大家知道HTML幫助文件與傳統的HLP幫助文件相比的優勢所在吧。

---- 在下面例子中,演示了TWebBrowser(IE4瀏覽器控件)的Navigate方法的使用方法。請注意程序中的注釋。(下面為程序的主要片段)。

{根據主題和項目調用幫助文件}procedure ShowHelp( HelpTopic,HelpItem : String );var   TargetFrameName,PostData,Heads,Flags : OleVariant;   URL : widestring;begin TargetFrameName := ';{指定Frame的空字符串時,則在當前Frame中打開幫助文件} PostData := false;{不發送數據} Heads := ';{Header信息為空} Flags := 0;{Flags設為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的空字符串時,則在當前Frame中打開動畫文件} PostData := false;{不發送數據} Heads := ';{Header信息為空} Flags := 0;{Flags設為0} URL := GIFFileName; with formGIF.webbrowser do{在指定窗口中的IE瀏覽器控件中顯示動畫}  begin   navigate(URL,Flags,TargetFrameName,PostData,Heads);{顯示動畫文件}  end;end;

 

---- 以上程序在PWIN98+Delphi3.0下調試通過。


上一篇:用DELPHI為ASP開發文件上載組件

下一篇:在DELPHI2.0/3.0中直接操作端口

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 久久精品综合 | 国产香蕉97碰碰久久人人九色 | 精品亚洲一区二区三区在线观看 | 欧美激情自拍 | 九九99九九精彩网站 | 国产精品一线二线在线观看 | 国产区一二 | 一级毛片观看 | 蜜臀一区 | 日本免费色 | 久久久av| 国产免费久久 | 国产在线精品成人免费怡红院 | 国产精品理论片在线观看 | 国产精品地址 | 青青草综合在线 | 一区二区三区精品视频 | 日韩欧美在线中文字幕 | 国产一区网站 | 久久亚洲精品中文字幕蜜潮电影 | 欧美日韩成人在线观看 | 欧美一区在线看 | 天天成人综合网 | 中文成人无字幕乱码精品 | 91香蕉| 中文字幕一区二区三区乱码图片 | 免费a在线观看 | 成人1区2区| 亚洲综合在线播放 | 玖玖久久 | 国产精品免费一区二区 | 亚洲成人首页 | 午夜激情电影在线 | 在线色综合 | 亚洲成人激情在线观看 | 在线播放亚洲 | 久久精品毛片 | 9999久久久久| 欧美成人小视频 | 成人午夜sm精品久久久久久久 | 黄色一级大片在线免费看产 |