Yaeuq.Net
用WebBrowser實現Html界面的應用
內容提要
什麼應用需要Html的界面
用什麼實現Html的界面
如何訪問Html頁面的內容
如何調用Javascript函數(兼談消息提示框)
如何禁止右鍵菜單(如何禁止用戶查看源代碼)
如何響應HTML的事件(如何在Html中調用Delphi的代碼)
如何能在Html控件上輸入回車
如何實現Html的打印和預覽
如何打包Html和相關文件
用WebBrowser實現Html界面的應用
樂土 2004-4-8
關鍵詞:WebBrowser Control, TWebBrowser, Delphi, Html,界面,Print Template,打印模板
內容摘要:本文講述了在Delphi中,利用WebBrower控件來實現Html界面所面臨的主要問題和解決辦法,並給出了代碼實例。
原文出處:http://www.Yaeuq.Net/software/webbrowser.htm
什麼應用需要Html的界面
HTML 的界面有以下特點:圖文混排,格式靈活,可以包含Flash、聲音和視頻等,實現圖文聲像的多媒體界面,而且易於建立和維護。另外,HTML的顯示環境一 般機器上都具備,通常不需要安裝額外的軟件。當然,HTML界面也有它欠缺的方面,即:界面控制能力有限,代碼調試不便----雖然DHtml提供了比較 強的編程特性,但是比起Delphi的傳統的開發語言和工具來,對界面的控制能力,尤其是和數據交互時的控制能力還是稍遜一籌。
了解了這些特點,我們就可以在實際應用開發中,適時地選擇Html技術。下面舉個例子:
一種儀器的管理程序,需要顯示該儀器的操作方法文檔,包含文字和圖片,並要求可以隱藏或顯示文檔,並能安要求打印。
這個應用中,圖文顯示、隱藏/顯示部分文檔、圖文打印等需求,都是Html界面所擅長的,用傳統的表單控件實現幾乎無法想像。
用什麼實現Html的界面
用Delphi實現HTML界面的應用主要有兩種選擇:WebBrowser Control或MSHtml。為了弄清兩者如何選擇,我們先來看看Internet Exporer 4.0及其後續版本的體系結構:
IE 浏覽器是建立在SHDOCVW.DLL組件之上的,而SHDOCVW.DLL則建立在MSHTML.DLL組件之上,底層則包括腳本引擎等。 SHDOCVW.DLL提供了對活動文檔(Active Document)的支持----例如Word等文檔可以在IE中顯示,並提供導航、in-place*連接、收藏夾、浏覽歷史和分級內容選擇 (PICS: Platform for Internet Content Selection)等功能。SHDOCVW.DLL組件雖然也提供了很多接口可以單獨使用,但是通常所指的SHDOCVW.DLL就是 WebBrowser Control。MSHTML.DLL是實行HTML解析和表現的組件。它通過DHtml對象模型提供對Html文檔的訪問。它實現了活動文檔服務器接 口,可以通過COM接口調用。
不難看出,WebBrowser在比較高的層次上,提供了更為豐富的功能,因此一般通常編程都采用 WebBrower控件。MSHTML只有在需要解析HTML這樣的特殊應用中,才推薦使用。微軟的MSDN網站上提供了一個使用MSHtml的例子: WalkAll Sample Source Page。
(*注:In-place鏈接,是指點擊HTML連接時,在相同的WebBrowser實例中顯示連接的HTML文檔。如果僅使用MSHtml.DLL,點擊鏈接將導致在新的浏覽器實例中打開鏈接的文檔。)
如何訪問Html頁面的內容
首先,在Delphi 7.0組件面板的Internet頁上,把TWebBrowser組件放到表單上。
通過執行以下語句裝載Html文檔到WebBrowser中進行顯示:
WebBrowser1.Navigate(GetCurrentDir + ''\index.htm'');
隱藏/顯示Html元件代碼示例:
var
Doc : IHtmlDocument2;
element: IHtmlElement;
begin
Doc := IHtmlDocument2(WebBrowser1.Document);
if nil <> Do