Delphi中利用网页打造程序界面

大家都知道,现在的网页想要多花哨就有多花哨,比起传统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>



发表评论

电子邮件地址不会被公开。 必填项已用*标注

45 − 42 =