Delphi TWebBrowser[2]-属性、方法、事件示例详解
Delphi TWebBrowser[2]-属性、方法、事件示例详解
1、属性
(1)AddressBar //设置是否显示地址栏,在TWebBrowser中没有用。 语法:property AddressBar:WordBool;
(2)Busy //确定Web浏览器组件是否正在导航到一个新的URL地址或正在下载文档。 语法:property Busy: WordBool;
(3)Container //访问Web浏览器父类或容器的接口。语法:property Container: IDispatch;
(4)ControlInterface //访问WebBrowser组件接口,这个接口允许一个Automation控制器访问Web浏览器的属性、方法和事件。
语法:property ControlInterface: IWebBrowser2;
(5)FullName //指定主机上Web浏览器组件的可执行文件的完整的合法路径名。 语法:property FullName: WideString;
(6)LocationName //获得当前在Web浏览器组件中显示的资源名。 语法:property LocationName: WideString;
(7)LocationURL //确定当前显示文档、文件夹的URL或路径。 语法:property LocationURL: WideString;
(8)Name //指定计算机上的TWebBrowser的名称。 语法:property Name: WideString;
(9)Offline //指定Web浏览器是否从本地缓存中获取文档。该属性为True时,表示Web浏览器以脱机方式工作,否则为在线方式。
语法:property Offline: WordBool;
注意:可以使用IE浏览器保存HTML网页到本地缓存,浏览器可以脱机方式工作。
(10)Path //指定主机上Web浏览器组件可执行文件的路径名,不包括文件名。 语法:property Path: WideString;
(11)ReadyState //获得指定Web浏览器组件的状态信息,使用这个信息可避免Web浏览器执行未准备的操作。 语法:property ReadyState: TOleEnum;
(12)RegisterAsBrowser //设置该属性为True时,当前使用的Web浏览器组件成为最高级别浏览器。 语法:property RegisterAsBrowser: WordBool;
(13)RegisterAsDropTarget //指出是否允许用户拖放HTML文档到当前Web浏览器。 语法:property RegisterAsDropTarget: WordBool;
(14)Silent //指定TWebBrowser是否显示对话框。该属性为True时,该对话框不再显示脚本错误。 语法:property Silent: WordBool;
(15)Type_ //指定包含的文档对象的类型名称,读取该属性以确定Automation对象的类型,该对象的接口通过Document属性表示。
语法:property Type_: WideString;
(1)AddressBar //设置是否显示地址栏,在TWebBrowser中没有用。 语法:property AddressBar:WordBool;
(2)Busy //确定Web浏览器组件是否正在导航到一个新的URL地址或正在下载文档。 语法:property Busy: WordBool;
1 2 3 4 5 6 | //如果该属性值为True,则在开始一个新的操作前,可用Stop方法中止当前操作,然后再导航到其他的页面,代码如下: procedure TForm1 . BitBtn1Click(Sender: TObject); begin if WebBrowser1 . Busy then WebBrowser1 . Stop; WebBrowser1 . Navigate( 'www.mingrisoft.com' ); end ; |
1 2 3 4 5 6 7 | //如果Web浏览器没有一个具有Automation接口的容器,则该属性的值为空。否则可以通过返回的接口,访问Web浏览器父类或容器,代码如下: if WebBrowser1 . Container <> nil then begin WebBrowser1 . Stop; end else ShowMessage( 'Web浏览器没有一个具有Automation接口的容器' ); |
语法:property ControlInterface: IWebBrowser2;
1 2 | //显示WebBrowser1组件的名称,代码如下: Showmessage(WebBrowser1 . ControlInterface . Name); |
1 2 | //显示Web浏览器组件所在的可执行文件的名称,并且包含路径,代码如下: ShowMessage( 'Web组件所在的可执行文件为:' +WebBrowser1 . FullName); |
1 2 | //显示网页标题的名称,代码如下: ShowMessage( '网页标题名:' +WebBrowser1 . LocationName); |
1 2 | //显示地址的完整路径,代码如下: ShowMessage( 'Web浏览器组件连接的URL为:' +WebBrowser1 . LocationURL); |
(9)Offline //指定Web浏览器是否从本地缓存中获取文档。该属性为True时,表示Web浏览器以脱机方式工作,否则为在线方式。
语法:property Offline: WordBool;
注意:可以使用IE浏览器保存HTML网页到本地缓存,浏览器可以脱机方式工作。
(10)Path //指定主机上Web浏览器组件可执行文件的路径名,不包括文件名。 语法:property Path: WideString;
1 | Str := WebBrowser1 . Path; |
(12)RegisterAsBrowser //设置该属性为True时,当前使用的Web浏览器组件成为最高级别浏览器。 语法:property RegisterAsBrowser: WordBool;
(13)RegisterAsDropTarget //指出是否允许用户拖放HTML文档到当前Web浏览器。 语法:property RegisterAsDropTarget: WordBool;
1 2 3 4 5 6 | //该属性为True时,允许用户拖放HTML文档到当前Web浏览器;否则拖放操作无效,代码如下: procedure TForm1 . ToolButton4Click(Sender: TObject); begin if not WebBrowser1 . RegisterAsDropTarget then WebBrowser1 . RegisterAsDropTarget:= true ; end ; |
(15)Type_ //指定包含的文档对象的类型名称,读取该属性以确定Automation对象的类型,该对象的接口通过Document属性表示。
语法:property Type_: WideString;
1 2 | //显示文件的类型,代码如下: 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;
(3)GoBack //返回到历史列表中的上一个文档。如果历史列表中没有包含另外的文档,该方法将无效。
语法:procedure GoBack;
(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;
1 2 | //调用ExecWB方法能够完成许多功能,例如停止网页浏览,代码如下: WebBrowser1 . ExecWB(OLECMDID_STOP,OLECMDEXECOPT_PROMPTUSER); |
语法:procedure GoBack;
1 2 | //返回当前页的上一页,代码如下: WebBrowser1 . GoBack(); |
语法:procedure GoForward;
1 2 3 4 5 6 | //返回当前页的下一页,但是如果历史列表中没有下一个文档,则产生异常,代码如下: try WebBrowser1 . GoForward(); except exit; end ; |
语法:procedure GoHome;
1 2 3 4 | //返回主页,代码如下: if WebBrowser1 . Busy then WebBrowser1 . Stop; WebBrowser1 . GoHome; |
语法:procedure GoSearch;
1 2 3 4 | //打开已注册的搜索网页,代码如下: if WebBrowser1 . Busy then WebBrowser1 . Stop; WebBrowser1 . GoSearch(); |
语法:
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所示。
1 2 3 4 | //Navigate方法是TWebBrowser组件中最重要的方法之一,使用该方法能够将当前TWebBrowser组件导航到任何存在的链接上,代码如下: if WebBrowser1 . Busy then WebBrowser1 . Stop; WebBrowser1 . Navigate(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;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //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 ; |
语法:function QueryStatusWB(cmdID: OLECMDID): OLECMDF; //cmdID:指定要获取其信息的命令。
(10)Refresh //重新载入当前文档。Web浏览器正在显示的URL指定的资源可能已经发生变化时,这个方法非常有用。该方法总是发送一个参数,即非缓存标题,通知服务器不要返回缓存的复制,这对于某些服务器可能是一个问题。为阻止发送这个非缓存标题参数或只是刷新过期的网页,可用Refresh2方法。
语法:procedure Refresh;
1 2 3 | //该方法完成了IE浏览器的刷新功能,可以使用该方法来重新载入当前页面,如果当前TWebBrowser组件没有载入任何的网页,则会产生异常,代码如下: if WebBrowser1 . LocationURL<> '' then WebBrowser1 . Refresh; |
语法:
procedure Refresh2; overload;
procedure Refresh2(var Level: OleVariant); overload; //Level:指定要被刷新信息的类型,其取值如表7所示。
1 2 3 4 5 6 7 8 9 | //Refresh2方法提供了更加复杂的刷新方式,提供了多种刷新方法,通过该方法同样能够实现Refresh方法完成的任务,代码如下: procedure TForm1 . ToolButton7Click(Sender: TObject); var Level:Olevariant; begin Level:=REFRESH_IFEXPIRED; if WebBrowser1 . LocationURL<> '' then WebBrowser1 . Refresh2(Level); end ; |
语法:procedure Stop;
1 2 | //该方法实现了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时,可用;否则不可用。
(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;
(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时,可用;否则不可用。
1 2 3 4 5 6 7 8 9 10 | //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 ; |
语法:
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接口。
(6)OnProgressChange //当更新下载操作的进度时被触发,编写其事件处理程序可以提供一个关于下载进度的可视化的反馈。
语法:
property OnProgressChange: TWebBrowserProgressChange;
type TWebBrowserProgressChange = procedure(Sender: TObject; Progress: Integer;
ProgressMax: Integer) of object;
//Sender:正在下载文档处理进程中的Web浏览器。
//Progress:指出有多少文档已经下载,取值范围在0~ProgressMax之间。当其参数为−1时,操作结束。
//PropressMax:指示下载操作的最大值。
示例:
语法:
property OnNavigateComplete2: TWebBrowserNavigateComplete2;
type TWebBrowserNavigateComplete2 = procedure(Sender: TObject; const pDisp:
IDispatch; var URL: OleVariant) of object;
//Sender:导航到新的资源的Web浏览器。
//pDisp:浏览器的Automation接口。
1 2 3 4 5 6 | //当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; |
语法:
property OnProgressChange: TWebBrowserProgressChange;
type TWebBrowserProgressChange = procedure(Sender: TObject; Progress: Integer;
ProgressMax: Integer) of object;
//Sender:正在下载文档处理进程中的Web浏览器。
//Progress:指出有多少文档已经下载,取值范围在0~ProgressMax之间。当其参数为−1时,操作结束。
//PropressMax:指示下载操作的最大值。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //利用该事件能够设计一个准确的网页载入进度条,该进度条表示了当前网页的载入进度,代码如下: 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 更新时间:
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!
分类:
Delphi Web
标签:
Delphi
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
2019-11-18 Delphi 滚动条的使用介绍