使用WebBrowser打开Powerpoint时只自动显示前两页的解决办法

来源:互联网 发布:java算法1到n的阶乘和 编辑:程序博客网 时间:2024/06/09 16:17

有些时候在使用delphi的WebBrowser控件编写显示PPT(Microsoft PowerPoint)文档的时候(假设你欲显示的PPT已经设置成自动进行幻灯片切换),会出现WebBrowser只播放了前两页就停在那里不动了的情况。这时如果你用鼠标点一下WebBrowser右面的滚动条下方的箭头,会继续播放,如果你把PPT设置成了循环播放,也会顺利播放下去。
这个问题产生的原因尚不知晓,也许是由于office,WebBrowser控件,delphi之间的兼容问题所引发的。
经过我一段时间的探索,找到了一种可以使其正常运转的方法:
    我发现,如果在窗口中添加一个按钮,在按钮的OnClick事件中写入调用WebBrowser的Navigate函数的语句,然后在运行时用鼠标点击按钮来达到使用WebBrowser来播放PPT时,不会发生停止的现象。所以,可以调用鼠标的OnClick事件来达到目的,例如,如果你要访问的ppt的URL为http://198.162.0.1/p.ppt,你可以新建一个全局变量ss:widestring,然后将URL赋给ss,然后新建一个Button1,在OnClick事件中使用 WebBrowser1.Navigate(ss);来访问。当然了,我们不能把原来在程序中自动执行的部分通过手动点按钮来实现,在你需要时,调用Button1.OnClick(nil);就可以模拟出一个鼠标点击事件了。
    要注意的是,这个Button1的Visible属性是不能够为false的,如果你想让这个多余的按钮不可见,将Visible属性设为False,你将看到我们所讨论的这个问题仍然存在,PPT还是停滞不前。这个问题之所以不知道产生的原因,问题就在这里。建议大家把Button1的Height和Width设成1,这样他就成了一个像素点,把它放到角落应该不会被发现。

 

2008.5.30

经过进一步研究,发现这个问题确实是由于Focus的问题,但是对WebBrowser这个控件使用setfocus方法好像不行,还是要使用一个button,有的时候如果按照上文说的方法不行的话,可以在调用onclick事件前使用button1.setfocus,对按钮设置焦点。

原创粉丝点击