大家都知道,现在的网页想要多花哨就有多花哨,比起传统Windows应用程序界面单调的菜单加按钮,不知会醒目多少。而且网页素材十分丰富,制作起来也比较简单。如果你想做一个华丽无比,动感十足的程序界面,那Web界面就是你最佳的选择。
第一步:根据需要,用FrontPage或者Dreamweaver做一个界面,界面加上图片,还可加上漂亮的动态Flash。Web界面与程序事件联系在一起的地方就是“超链接”,我们以一个简单的播放器程序为例。
比如:要做一个播放器,有“播放”按钮和“停止”按钮,分别设置“播放”按钮的链接为“Play_”;“停止”按钮的超链接为“Stop_”。并保存这个网页文件为“WebFrm.htm”。
第二步:在Delphi中新建一个Project,设置Form1的长宽和刚才设计网页一样大小,在Form1上放置一个WebBrowser1控件,设置WebBrowser1的Align属性为alClient,我们是利用TWebBrowser来显示网页界面的。代码如下:
procedure TForm1.FormCrea te Sender TObject begin WebBrowser1.Navigate ‘D \播放器\WebFrm.htm’ //把“D \播放器”换成你保存WebFrm.htm的目录 end |
第三步:关键就在这步了。在响应Web界面上“播放”和“停止”的点击事件时,就要用到TWebBrowser的OnBeforeNavigate2事件,它的代码如下:
procedure TForm1.WebBrowser1BeforeNa vigate2 Sender TObject const pDisp IDispatch var URL Flags TargetFrameName PostData Headers OleVariant var Cancel WordB ool |
在它的七个参数中,我们会用到URL和Cancel这两个参数,在本例中,当你点击“播放”按钮时,URL就会返回“D \播放器\WebFrm.htm\Play_”这行字符串 当点击“停止”按钮时,URL则返回“D\播放器\WebFrm.htm\Stop_”这行字符串。Cancel这个参数的用途是:当点击“播放”按钮时,Web想要跳转到“D \播放器\WebFrm.htm\Play_”这个页面,但根本没这个页面,WebBrowser1就会出现我们上网经常看到的“该页无法显示”这个页面,这时把Cancel设为True WebBrowser1会断开链接,就不会出现以上情况了。
具体代码如下:
procedure TForm1.WebBrowser1BeforeNa vigate2 Sender TObject const pDisp IDispatch var URL Flags TargetFrameName PostData Headers OleVariant var Cancel WordB ool begin if Pos ‘Play_’ URL > 0 then begin //当返回的URL含有“Play_”,就执行播放的代码 ShowMessage ‘播放’ //为简单起见,用来代替播放的代码。 Cancel = True end else if Pos ‘Stop_’ URL > 0 then begin ShowMessage ‘停止’ //为简单起见,用来代替播放的代码。 Cancel = True end end |
(以上代码Delphi6+Win2000编译通过。)
下面还有一段示例代码
html
————–
<a href=”#close”>×</a>
<a href=”#mix”>□</a>
<a href=”#mini”>-</a>
main.pas
—————
procedure Tmain.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
var
ev:tstringlist;
begin
ev:=tstringlist.Create;
ev.Delimiter:=’#’;
ev.DelimitedText:=url;
if ev.Count>1 then
begin
if ev.Strings[1]=’mini’ then WindowState:=wsMinimized;
if ev.Strings[1]=’mix’ then
if WindowState = wsMaximized then
WindowState:=wsNormal
else
WindowState:=wsMaximized;
if ev.Strings[1]=’close’ then Close;
end;
end;
下面还有一段说明
利用页面
做导航窗口,那么如何才让Delphi来响应
页面中的单击操作呢?其实很简单
1.在主程序中加一个TWebBrowser组件
用它来显示页面
2.在BeforeNavigate2事件中处理响应操作
例如:
If Pos(‘varex:0101’, URL)>0 Then
begin
//执行一些操作
SendMessage(frmMain.Handle,ESD_MSG,101,0);
Cancel:=True;
end;
代码说明: varex:0101 是网页中一个热点所指向的连接
网页中的代码
<img src=”image/111.jpg” width=”396″ height=”184″ border=”0″ usemap=”#Map”>
在网页中每个图像都有usemap,为它起一个名字
<map name=”Map”>
<area shape=”rect” coords=”19,4,100,24″ href=”varex:0101″>
<area shape=”rect” coords=”21,33,100,49″ href=”gzgl.html”>
</map>