2010-09-23 64 views
0

在我的Delphi 6 Pro程序我能夠成功地使用下面的代碼來改變光標放在一個TWebBrowser組件,但只有當它不包含有效的網頁文件:德爾福6 - 上TWebBrowser組件更改光標

const 
    theCursorID: integer = 1; 

Screen.Cursors[theCursorID] := LoadCursorFromFile(PChar(theAniCursorFilename)); 
theWebBrowser.Cursor := theCursorID; 

只要網頁文檔加載,光標就會恢復爲標準的鼠標指針。我猜這是因爲底層窗口(句柄/畫布等)在Web文檔加載時發生變化。如何在Web文檔加載時成功更改鼠標光標?

回答

1

記住TWebBrowser是IE的一個包裝,它反過來顯示一致的用戶界面,包括用於在瀏覽器中「瀏覽」的遊標。例如,無論加載的網頁中包含超鏈接,它都會將光標更改爲一隻手,以讓用戶知道他/她可以單擊該超鏈接。

我知道沒有辦法改變從Delphi的這種行爲,也許這是可能的。但是,如果你在控制加載的網頁(對我來說似乎是這樣),你可以在該頁面中對光標的改變進行編碼,因爲它只在IE中被支持。

如果您不能或不想修改.css文件,把下面的代碼添加到網頁的標題:

<style type="text/css"> 
<!-- 
BODY { cursor:url("<url of your cursor>"); } 
--> 

或者,你可以直接修改元素的樣式在頁面上像這樣:

...<body style="cursor:url(<url of your cursor>)" >... 
+0

感謝jachguate。我想,因爲我能夠從代碼(SetCursorPos)控制光標位置,我可以接管光標圖標本身,但我猜不是。我會嘗試一下您的想法,但是看到網頁由Flash對象支配時,我不確定是否可以覆蓋它的光標選擇。我可以控制網頁,但不包含Flash對象中包含的SWF。 – 2010-09-23 17:00:14

+0

@Robert:我做了一個測試,光標變化對簡單的Flash動畫沒有影響。 – jachguate 2010-09-23 18:08:46