2010-09-28 49 views
5

alt text爲什麼Delphi 2010 TRibbon在Windows XP上控制「閃爍」,但不是Vista/7?

我注意到,當我使用Delphi 2010自帶的TRibbon控件時,它可以在我的Windows 7系統上完美地工作。但是,該應用程序在Windows XP系統上具有一些奇怪的繪畫問題,並帶有「經典主題」(我還沒有嘗試過playschool主題)。

我知道DevExpressTMS Software還有其他功能區組件可用,但是購買第三方控件不適用於此項目。

有沒有人有這個問題,或知道一個解決方案?

+2

我和「playschool」主題相同 – Nat 2010-09-29 07:53:08

回答

4

很可能是因爲Windows 7使用「桌面合成」,這實際上意味着組件被繪製到離屏位圖上,然後複製到顯示器上。在XP中,組件通常直接繪製到顯示器上(如果組件先擦除組件上的內容並繪製「乾淨板面」,則會導致組件閃爍)。

德爾福支持雙緩衝,它實現了同樣的事情。如果將功能區的DoubleBuffered屬性設置爲True(在代碼中,因爲它未發佈),那麼應該避免閃爍(以繪製時分配和移動的額外內存爲代價) - 然而,我應該說,實際上用TRIBbon試了一下。

請注意,如果將DoubleBuffered設置爲True,則在Windows 7(或Vista上)上運行時不會產生額外開銷。當在桌面合成的Windows版本上運行時,VCL具有跳過離屏位圖業務的代碼。

+0

好的答案,特別感謝關於雙倍緩衝沒有開銷的說明。 – MarkF 2011-11-02 01:23:41

0

很可能這是TRibbon代碼中的一個錯誤,Microsoft Ribbon在XP和Win7中都呈現完美。

如果更改XP主題,圖像中顯示的「最小化」按鈕是否更改以反映主題更改?如果情況是這樣的話,功能區代碼可能已經針對Vista和7進行了優化,並且未被開發爲在XP下完美運行。

除非您可以修改TRibbon代碼,否則無法真正解決它。