WebBrowser控件属性:
1、Application
如果该对象有效,则返回掌管WebBrowser控件的应用程序实现的自动化对象(IDispatch)。如果在宿主对象中自动化对象无效,程序将返回WebBrowser控件的自动化对象
2、Parent
返回WebBrowser控件的父自动化对象,通常是一个容器,例如是宿主或IE窗口
3、Containe
返回WebBrowser控件容器的自动化对象。通常该值与Parent属性返回的值相同
4、Document
为活动的文档返回自动化对象。如果HTML当前正被显示在WebBrowser中,则Document属性提供对DHTML Object Model的访问途径
5、TopLevelContainer
返回一个Boolean值,表明IE是否是WebBrowser控件顶层容器,是就返回true
6、Type
返回已被WebBrowser控件加载的对象的类型。例如:如果加载.doc文件,就会返回Microsoft Word Document
7、Left
返回或设置WebBrowser控件窗口的内部左边与容器窗口左边的距离
8、Top
返回或设置WebBrowser控件窗口的内部左边与容器窗口顶边的距离
9、Width
返回或设置WebBrowser窗口的宽度,以像素为单位
10、Height
返回或设置WebBrowser窗口的高度,以像素为单位
11、LocationName
返回一个字符串,该字符串包含着WebBrowser当前显示的资源的名称,如果资源是网页就是网页的标题;如果是文件或文件夹 ,就是文件或文件夹的名称
12、LocationURL
返回WebBrowser当前正在显示的资源的URL
13、Busy
返回一个Boolean值,说明WebBrowser当前是否正在加载URL,如果返回true就可以使用stop方法来撤销正在执行的访问操作<br/>
WebBrowser控件的事件:
<br/>
1、BeforeNavigate2 导航发生前激发,刷新时不激发
2、CommandStateChange 当命令的激活状态改变时激发。它表明何时激活或关闭Back和Forward菜单项或按钮
3、DocumentComplete 当整个文档完成是激发,刷新页面不激发
4、DownloadBegin 当某项下载操作已经开始后激发,刷新也可激发此事件
5、DownloadComplete 当某项下载操作已经完成后激发,刷新也可激发此事件
6、 NavigateComplete2 导航完成后激发,刷新时不激发 NewWindow2 在创建新窗口以前激发
7、OnFullScreen 当FullScreen属性改变时激发。该事件采用VARIENT_BOOL的一个输入参数来指示IE是全屏显示方式(VARIENT_TRUE)还是普通显 示方式(VARIENT_FALSE)
8、OnMenuBar 改变MenuBar的属性时激发,标示参数是VARIENT_BOOL类型的。VARIANT_TRUE是可见,VARIANT_ FALSE是隐藏
9、OnQuit 无论是用户关闭浏览器还是开发者调用Quit方法,当IE退出时就会激发
10、 OnStatusBar 与OnMenuBar调用方法相同,标示状态栏是否可见。
11、 OnToolBar 调用方法同上,标示工具栏是否可见。
12、 OnVisible 控制窗口的可见或隐藏,也使用一个VARIENT_BOOL类型的参数
13、StatusTextChange 如果要改变状态栏中的文字,这个事件就会被激发,但它并不理会程序是否有状态栏
14、TitleChange 网页标题有效或改变时激发
WebBrowser控件的函数:
1、GoBack 相当于IE的”后退”按钮,使你在当前历史列表中后退一项
2、GoForward 相当于IE的”前进”按钮,使你在当前历史列表中前进一项
3、 GoHome 相当于IE的”主页”按钮,连接用户默认的主页
4、GoSearch 相当于IE的”搜索”按钮,连接用户默认的搜索页面
5、 Navigate 连接到指定的URL
6、Refresh 刷新当前页面
7、Refresh2 同上,只是可以指定刷新级别,所指定的刷新级别的值来自RefreshConstants枚举表,该表定义在ExDisp.h中,可以指定的不同值 如下: REFRESH_NORMAL 执行简单的刷新,不将HTTP pragma: no-cache头发送给服务器 REFRESH_IFEXPIRED 只有在网页过期后才进行简单的刷新 REFRESH_CONTINUE 仅作内部使用 REFRESH_COMPLETELY 将包含pragma: no-cache头的请求发送到服务器 <br><br/>
初始化和终止化 这几句话放在主窗口所有语句之后,“end.”之前(需引用ActiveX单元)。
Initialization
OleInitialize(nil);
Finalization
try
OleUninitialize;
except
end;
Webbrower的显示和隐藏
TWinControl(WebBrowser1).Visible :=False;
OnCommandStateChange事件
当执行TWebBrowser组件的某个方法的功能改变时被触发,其状态取值决定于执行Web浏览器中某个方法的功能。
property OnCommandStateChange: TWebBrowserCommandStateChange;
type TWebBrowserCommandStateChange = procedure(Sender: TObject; Command: Integer; Enable: WordBool) of object;
Sender:指出其功能已变化的Web浏览器组件。
Command:指出功能变化的调用方法,参数取值如表所示。
常量 |
值 |
说明 |
CSC_UPDATECOMMANDS |
−1 |
不被其他常量包含的任何变化,应用程序必须检查Web浏览器的该属性以更新控制, 例如,事件处理程序可能在更新Stop按钮时检查Busy属性 |
CSC_NAVIGATEFORWARD |
1 |
历史列表改变GoForward方法导航到一个新的URL的功能,Enable参数指定GoForward方法现在是否导航到一个新的URL |
CSC_NAVIGATEBACK |
2 |
历史列表改变GoBack方法导航到一个新的URL的功能,Enable参数指定GoBack方法现在是否导航到一个新的URL |
Enable:指定CSC_NAVIGATEFORWARD或CSC_NAVIGATEBACK命令是否可用,其值为True时,可用;否则不可用。
示例:
OnCommandStateChange事件提供了一个命令状态改变后的处理功能,通过该事件能够判断执行某个命令后的当前浏览器状态,例如控制“后退”、“前进”或“停止”按钮是否可用,代码如下:
procedure TForm1.WebBrowser1CommandStateChange(ASender: TObject;Command: Integer; Enable: WordBool);
Var bRtn:Boolean;
begin
case Command of
CSC_NAVIGATEBACK: ToolButton_Back.Enabled := Enable; //“后退”按钮
CSC_NAVIGATEFORWARD: ToolButton_Forward.Enabled := Enable; //“前进”按钮
CSC_UPDATECOMMANDS: ToolButton_Stop.Enabled := TWebBrowser(ASender).Busy; //“停止”按钮
end;
end;
使用进度条查看浏览器状态
procedure TForm1.WebBrowser1ProgressChange(ASender: 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;
1、去掉TWebBrowser的滚动条
IHTMLBodyElementDisp(IHTMLDocument2(WebBrowser1.document).body).scroll:= 'no';
2、滚屏
var
a: IHTMLDocument2;
x,y:Integer;
begin
y:=y+ 20; // 加减进行上下滚动
a := WebBrowser1.Document as IHTMLDocument2;
a.Get_ParentWindow.Scroll(x,y);
end;
3、去边框 边框去掉后 Webbrowser编辑时使用Enter换行无效 但可以使用Shift+Enter换行 Xe2有这个问题XE4正常
margin
应该有上下左右的
WebBrowser1.OleObject.Document.Body.Style.margin := ' 0px ';
4、禁止提示脚步错误
procedure TForm1.WebBrowser1NavigateComplete2(ASender: TObject;const pDisp: IDispatch; var URL: OleVariant);
begin
WebBrowser1.Silent := True;
end;
5、禁止弹出窗口
procedure TForm1.WebBrowser1NewWindow2(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);
begin
Cancel := True;
end;
6、屏蔽右键菜单 先要添加ApplicationEvents1,指定其Message事件
var Handled: Boolean);
begin
with Msg do
begin
if not IsChild(WebBrowser1.Handle, hWnd) then
Exit;
Handled := (message = WM_RBUTTONDOWN) or (message = WM_RBUTTONUP) or (message = WM_CONTEXTMENU);
end;
end;
屏蔽右键菜单
function MouseProc(nCode: Integer; wParam, lParam: Longint): LongInt; stdcall;
var
classbuf: array[ 0 .. 255] of Char;
const
ie = 'Internet Explorer_Server';
begin
case nCode < 0 of
True:
Result := CallNextHookEx(MouseHook, nCode, wParam, lParam) ;
False:
case wParam of
WM_RBUTTONDOWN, WM_RBUTTONUP:
begin
GetClassName(PMOUSEHOOKSTRUCT(lParam)^.HWND, classbuf, SizeOf(classbuf)) ;
if lstrcmp(@classbuf[ 0], @ie[ 1]) = 0 then
Result := HC_SKIP
else
Result := CallNextHookEx(MouseHook, nCode, wParam, lParam) ;
end
else
begin
Result := CallNextHookEx(MouseHook, nCode, wParam, lParam) ;
end;
end; //case wParam
end; //case nCode
end; (*MouseProc*)
//Form OnCreate
procedure TWebBrowserForm.FormCreate(Sender: TObject) ;
begin
MouseHook := SetWindowsHookEx(WH_MOUSE, MouseProc, 0, GetCurrentThreadId()) ;
end;
//Form OnDestroy
procedure TWebBrowserForm.FormDestroy(Sender: TObject) ;
begin
if MouseHook <> 0 then UnHookWindowsHookEx(MouseHook) ;
end;
If you want to find more about Windows hooks, read the :An introduction to hook procedures
7、替换右键菜单
7、通过IUniformResourceLocator接口建立Internet快捷方式
8、设置焦点 (当Webbrowser处于编辑模式)
TWebBrowser非常特殊,它从TWinControl继承来的SetFocus方法并不能使得它所包含的文档获得焦点
begin
if Form1.WebBrowser1.Document <> nil then
with WebBrowser1.Application as IOleobject do
DoVerb(OLEIVERB_UIACTIVATE, nil, WebBrowser1, 0, Handle, GetClientRect());
end;
if WebBrowser1.Document <> nil then
IHTMLWindow2(IHTMLDocument2(WebBrowser1.Document).ParentWindow).Focus();