三行代码搞定天气预报
前两天在根客户聊天的时候,偶尔谈到在我们的软件主界面上添加一个天气预报的功能。
当时只是随口说说,没想到客户认真了,一定要实现这个功能,没办法了,只有做出来了。
客户哪所以的PC都是可以登录Internet的,所以,我想直接找个有天气预报的网站,用WebBrowser把页面显示出来就行了。
说干就干,做个demo先。
做之前先找网站,百度google了一下,找到一段代码
<iframe src="http://weather.265.com/weather.htm" width="168" height="54" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
这段代码是嵌入网页用的,我不需要后面的格式,只要url(http://weather.265.com/weather.htm)就可以了。
网页找到了,开始动手:
1、新建一个项目,放一个WebBrowser,一个button
如图0
2、在Button的Click事件写如下代码
WebBrowser1.Navigate('http://weather.265.com/weather.htm');
编译运行界面如下:
图1
功能倒是实现了,但不太美观,有滚动条,边框也很难看。
3、想办法去掉边框和滚动条
在WebBrowser1的DocumentComplete时间加入如下代码:
WebBrowser1.OleObject.document.body.scroll := 'no'; //不显示滚动条
WebBrowser1.OleObject.document.body.style.borderStyle := 'none'; //不显示边框
编译运行,界面如下:
图2
嗯,不错,只写三行代码就搞定了天气预报。
完整代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('http://weather.265.com/weather.htm');
end;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
WebBrowser1.OleObject.document.body.scroll := 'no'; //不显示滚动条
WebBrowser1.OleObject.document.body.style.borderStyle := 'none'; //不显示边框
end;
后记:刚开始考虑使用WebService来实现,查了一些资料后,发现,天气预报的WebService竟然不是很多,
于是想干脆直接用页面来算了。没想到WebService提了这么多年,还是没能很好推广开,不知是什么原因。