文档库 最新最全的文档下载
当前位置:文档库 › DELPHI 中WEBBROWSER控件详解实例

DELPHI 中WEBBROWSER控件详解实例

DELPHI 中WEBBROWSER控件详解实例
DELPHI 中WEBBROWSER控件详解实例

Delphi中WebBrowser控件详解实例

2008-10-18下午06:58

很久都没有原创了,前几天帮朋友做了个网址发布程序,主要应用到了WebBrowser控件。今天主要给大家演示一下过程,让大家学习一下Delphi工具。

WebBrowser功能:

1。自动加载网页

2。去除WebBrowser滚动条

3。WebBrowser自身打开页面

4。禁止右键

1。首先,新建一个FROM窗体:

2。加入一个WEBBROWSER控件

3。调整后如下:

4.这样一个webbrowser就完成了,下一步我们来让程序打开后自动加载一个网页。

核心代码:WebBrowser1.Navigate('https://www.wendangku.net/doc/12763910.html,');

双击窗体灰色处,对窗体进行初始化,在代码窗口中输入(Begin与End间输入核心代码):

procedure TForm1.FormCreate(Sender:TObject);

begin

WebBrowser1.Navigate('https://www.wendangku.net/doc/12763910.html,');//窗体初始化完成WEBBROWSER加载一个网页end;

5。下面我们来实现禁止WEBBROWSER控件的滚动条功能:

核心代码:WebBrowser1.oleobject.Document.body.Scroll:=‘no’;

利用这个代码去掉滚动条的前提是webbrowser中必须有打开的网页,也就是在网页加载完完毕后再去掉滚动条。所以首先要判断页面是否加载完毕,如果加载完毕,就执行上面的语句

去掉滚动条。这时就要引入一个按扭控件来触发程序

加入SPEEDBUTTEN

调整形后:

好了,现在可以实现禁止滚动条的功能了:

第一步:在WebBrowser1DocumentComplete事件中置一个标志tag:=1(代表加载完毕)单击WEBBROWSER控件,在WebBrowser属性

的EVENS事件中找到WebBrowser1DocumentComplete(双击)

然后在代码窗口中输入:

procedure TForm1.WebBrowser1DocumentComplete(Sender:TObject;

const pDisp:IDispatch;var URL:OleVariant);

begin

tag:=1;//去掉Webbrowser1滚动条的标志

end;

对SpeedButten控件操作:(双击onClick)

加入如下代码:

procedure TForm1.SpeedButton1Click(Sender:TObject);

var

Doc:IHTMLDocument2;

begin

tag:=0;//去掉Webbrowser1滚动条的标志

WebBrowser1.Navigate2(’https://www.wendangku.net/doc/12763910.html,’);

while(tag=0)do Application.ProcessMessages;

WebBrowser1.oleobject.Document.body.Scroll:=‘no’;

end;

注意:使用前必须在uses中加入mshtml;

这样WebBrowser就禁止了滚动条。主要应用到了IHTMLDocument2。

6。

让Webbrowser中的链接点击时在自身窗口打开:(单击WebBrowser控件,属性中的EVENS事件,双击NewWindow2)

代码窗口中输入:

procedure TForm1.WebBrowser1NewWindow2(Sender:TObject;var ppDisp:IDispatch; var Cancel:WordBool);

begin

//將新視窗在自身開啟

ppdisp:=webBrowser1.Application;

end;

7。最后是禁用WebBrowser中的右键功能,放一个ApplicationEvents控件:

ApplicationEvents控件属性Evens事件中双击Onmessage:在代码窗口中输入:

procedure TForm1.ApplicationEvents1Message(var Msg:tagMSG;

var Handled:Boolean);

begin

if(Msg.message=wm_rbuttondown)or(Msg.message=wm_rbuttonup)or (msg.message=WM_RBUTTONDBLCLK)then

begin

if IsChild(Webbrowser1.Handle,Msg.hwnd)then

Handled:=true;

end;

end;

到此完成对程序的制作,调试

去滚动条后:

--------------------------------------------------------

===================================

unit Unit1;

interface

uses

Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms, Dialogs,StdCtrls,OleCtrls,SHDocVw,mshtml,AppEvnts;

type

TForm1=class(TForm)

WebBrowser1:TWebBrowser;

Button1:TButton;

ApplicationEvents1:TApplicationEvents;

procedure WebBrowser1DocumentComplete(Sender:TObject;

const pDisp:IDispatch;var URL:OleVariant);

procedure Button1Click(Sender:TObject);

procedure ApplicationEvents1Message(var Msg:tagMSG;

var Handled:Boolean);

private

{Private declarations}

public

{Public declarations}

end;

var

Form1:TForm1;

implementation

{$R*.dfm}

procedure TForm1.WebBrowser1DocumentComplete(Sender:TObject;

const pDisp:IDispatch;var URL:OleVariant);

begin

tag:=1;

end;

procedure TForm1.Button1Click(Sender:TObject);

var

a:IHTMLDocument2;

begin

tag:=0;

WebBrowser1.Navigate('https://www.wendangku.net/doc/12763910.html,');

while(tag=0)do Application.ProcessMessages;

WebBrowser1.oleobject.Document.body.Scroll:='no';

a:=WebBrowser1.Document as IHTMLDocument2;

a.Get_ParentWindow.ScrollBy(0,20);

end;

procedure TForm1.ApplicationEvents1Message(var Msg:tagMSG;

var Handled:Boolean);

begin

if(Msg.message=wm_rbuttondown)or(Msg.message=wm_rbuttonup)or (msg.message=WM_RBUTTONDBLCLK)then

begin

if IsChild(Webbrowser1.Handle,Msg.hwnd)then

Handled:=true;

end;

end; end.

相关文档