2014-09-19 26 views
2

是任何人都知道現有Delphi組件,即有沒有一個組件的行爲像一個正確主題的TBitBtn?

  • 適當主題像一個TButton(具有淡入/淡出在鼠標懸停效果在Windows 7及以上)
  • 支持字形等TBitBtn但不使用ImageLists(與TBitBtn一樣)。

如果沒有這樣的組件可用,是否有可能修改TBitBtn的主題行爲來複制TButton的主題行爲?我不是主持人,但也許你可以從ThemeServices獲得不同的淡入淡出階段?或者,您是否必須通過在炎熱和非熱狀態之間進行折磨才能創造出淡化效果?

+2

圖像列表有什麼問題?就我個人而言,我發現'TBitBtn'是很久以前應該從Delphi中刪除的東西(和['我並不孤單](http://stackoverflow.com/a/4629905/960757))。你爲什麼更喜歡'TBitBtn'? – TLama 2014-09-19 08:51:02

回答

5

VCL TButton使用圖像列表實現圖像支持的原因在於,底層Win32 BUTTON控件如何支持圖像。如果你想擁有淡入/淡出動畫的完整主題支持,那麼你需要使用本地控件。那麼,你可以嘗試自己複製這些效果,但我認爲成功的可能性很低,並且你總是會受到未來主題變化的影響。這是什麼讓你咬着你TBitBtn

因此,解決問題的方法是使用帶圖像列表的TButton控件。在任何情況下,TButton的實現都使用私有圖像列表,因爲底層控件所需的索引是固定的。因此,TButton控件無論如何都會獲取圖片的副本。所以你可以很容易地編寫自己的按鈕控件,基於TButton或其祖先之一,它公開了字形屬性。然後將該字形推入圖像列表,然後進入底層的Win32控件。

如果您有不支持ImageListImageIndex性能的德爾福版本,你需要實現一個包裝了Win32 BUTTON控制自己的按鈕控制。

相關問題