三行代碼搞定天氣預報
前兩天在根客戶聊天的時候,偶爾談到在我們的軟件主界面上添加一個天氣預報的功能。
當時只是隨口說說,沒想到客戶認真了,一定要實現這個功能,沒辦法了,只有做出來了。
客戶哪所以的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提了這麼多年,還是沒能很好推廣開,不知是什麼原因。