簡體   English   中英

TToolbar與TForm.DoubleBuffered不兼容?

[英]TToolbar incompatible with TForm.DoubleBuffered?

我正在使用Delphi XE3。
當我創建一個新的VCL項目並在其上放一個TToolbar時,一切正常 - 除非我激活Form1.DoubleBuffered
從那一刻起,工具欄的繪制就被打破了 - 在設計時,它是黑色,透明或IDE的一部分(狀態欄,工具欄等)被復制到其中。 當我點擊它時以及當我更改為源代碼(F12)並返回時,它會在這些選項之間發生變化。
在運行時,它總是黑色的。

使用DrawingStyle=dsGradient ,一切都按預期工作。 切換回dsNormal再次打破它。

停用Form1.DoubleBuffered修復它。

任何提示如何解決該問題?

正如本文所述, When not to use DoubleBuffered ,某些控件(如TToolBarTRichEditDoubleBuffered屬性設置為true時效果DoubleBuffered

原因可以在文檔TWinControl.DoubleBuffered找到,其中一些WinControls無法在臨時位圖上繪制自己(就像DoubleBuffered為true時DoubleBuffered )。

一種解決方法是將TToolBar放在TPanel

在我看來,解決方案是將TForm.DoubleBuffered設置為False 使用值True會導致各種其他問題。 這個屬性在XP主題之前運行得相當好,但是自從他們到來之后,在我看來,使用TForm.DoubleBuffered並不可行。

除了遇到的問題,我在使用Windows Basic主題時遇到了很多繪畫漏洞。 我知道這不是主流,但我碰巧看到很多遠程訪問。 而且還有更多。 雙重緩沖表單時,停止主題動畫的工作。 例如,默認按鈕會發出脈沖以指示它是默認按鈕。

如果您在沒有雙重緩沖表單的情況下調整大小閃爍,請使用我對其他問題的回答中想法 從評論看來,你想要打擊的閃爍似乎是在一個顏料盒中。 我顯然不知道細節,但我的經驗和直覺說你應該能夠很容易地處理當地的閃爍。 肯定不需要全局形式的雙重緩沖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM