在德爾福2010年(不知道其他版本)Application.HintColor似乎沒有效果在Windows 7上運行。它在XP上提供了所需的顏色。任何解決方法?德爾福Application.HintColor
回答
HintColor
是像一些在VCL中,其他*顏色屬性,如果你正在運行一個主題OS爲主題的應用程序,它們可以畫的控制時,可以忽略不計的。提示是有點不同,因爲對他們來說,它是Vista或以上,不是XP或以上。如果您在Controls.pas
中查看THintWindow.Paint
,則可以看到這一點 - 如果它是Vista且主題已啓用,則它特別描繪了Vista漸變背景。
這通常是好東西,因爲您希望您的應用程序適合操作系統的外觀和用戶的偏好。
如果你真的要覆蓋這一點,你將需要:
- 子類
THintWindow
- 顯示提示
- 在此上課的時候讓你的應用程序來使用這個新的提示類,覆蓋繪畫方法繪製如你所願
創建一個新的提示類從THintWindow
降爲了使應用程序使用新類提示,請將事件處理程序分配給TApplication.OnShowHint
(the easiest way to do this is via a TApplicationEvents
component on your main form)並更改HintInfo
參數的HintWindowClass
field to be your new class。
在您的新提示類中,您需要覆蓋Paint
和NCPaint
。 NCPaint
將繪製邊框,並且您將需要繪製非主題邊框(可能使用DrawEdge
。)更改Paint
以用您選擇的顏色填充背景,然後在提示的矩形中使用DrawText
繪製文本,並使用適當的文字包裝和對齊標誌。如果仔細查看VCL代碼,您可以看到幾個硬編碼的矩形偏移量,您可能想要模擬這些代碼以獲得VCL使用的代碼中相同的矩形。
你可以使用這種技術做各種有趣的提示變化。例如,我最近創作的一幅畫改變了這幅畫,所以畫了一個大膽的標題,然後在其中提供了其他信息。
最後:爲什麼要設置顏色?它是警告用戶一些事情還是提供一些其他反饋?如果是這樣,請考慮使用比顏色更多的東西 - 您可以使用此技術更改任何您想要提示的提示。嘗試繪製警告圖標或使用豐富格式的文本。我建議你儘量保持一般主題的外觀,並對主題繪畫進行編碼調整,而不是完全壓倒它,因爲除非有很好的理由,否則應該儘量保持用戶選擇的操作系統/外觀。
將'啓用運行時主題'關閉使它工作。
不,不是直接。如果您啓用了運行時主題,它將採用系統顏色作爲提示。 (IOW,提示將是'主題')。這就像爲啓用主題的按鈕設置顏色(假設您可以執行此操作)。
但是,您可以使用其他'提示'引擎。例如,您可以使用免費的JEDI的JVCL的TjvBallonHint和/或TjvDesktopAlert(或許與TjvDesktopAlertStack一起使用)。還有其他(免費&付費)替代品。另外,如果你想要,你可以實現你自己的提示窗口。
HTH
在德爾福2010年,你有TCustomHint類。你可以從它派生出一個新的類,它提供了一種新的提示。
您可以將新類指定給表單或任何其他控件的CustomHint屬性,Delphi將使用您的自定義提示類來顯示該控件的提示。
您可以檢查TBalloonHint類,這是在Controls.pas
- 1. 德爾福v.Word - 如何從德爾福
- 2. 德爾福HID Delphi7和德爾福XE2
- 3. 德爾福
- 4. 與德爾福
- 5. 與德爾福
- 6. 德爾福:TRegExpr
- 7. 類德爾福
- 8. 德爾福ftpgetfile
- 9. 德爾福
- 10. DES_KEY_SZ德爾福
- 11. 德爾福
- 12. 與德爾福
- 13. 德爾福
- 14. 德卡爾和德爾福2009年
- 15. 德爾福形式
- 16. 德爾福與流
- 17. 寫入德爾福
- 18. ListViewButtonClick在德爾福
- 19. 德爾福的QuickBooks
- 20. 德爾福結構
- 21. 德爾福+ ADO + dBase
- 22. 質量德爾福
- 23. 德爾福 - 素數
- 24. 德爾福TObjectDictionary有
- 25. 德爾福,QR,WMF
- 26. 從德爾福ADOStoredProc
- 27. TMS TWebCopy,德爾福
- 28. 德爾福和CreateThread()
- 29. 德爾福typinfo SetPropValue
- 30. NHibernate和德爾福
樣本TCustomHint後代由於啓用主題啓用主題的源代碼。這必須覆蓋特定的顏色選擇。 – frogb 2010-02-18 15:45:36