[英]TToolbar incompatible with TForm.DoubleBuffered?
我正在使用Delphi XE3。
當我創建一個新的VCL項目並在其上放一個TToolbar
時,一切正常 - 除非我激活Form1.DoubleBuffered
。
從那一刻起,工具欄的繪制就被打破了 - 在設計時,它是黑色,透明或IDE的一部分(狀態欄,工具欄等)被復制到其中。 當我點擊它時以及當我更改為源代碼(F12)並返回時,它會在這些選項之間發生變化。
在運行時,它總是黑色的。
使用DrawingStyle=dsGradient
,一切都按預期工作。 切換回dsNormal
再次打破它。
停用Form1.DoubleBuffered
修復它。
任何提示如何解決該問題?
正如本文所述, When not to use DoubleBuffered
,某些控件(如TToolBar
和TRichEdit
在DoubleBuffered
屬性設置為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.