7

DelphiXE3を使用しています。
新しいVCLプロジェクトを作成してドロップするTToolbarと、アクティブ化する場合を除いて、すべてが正常に機能しForm1.DoubleBufferedます。
その瞬間から、ツールバーの描画は壊れます-設計時に、それは黒、透明、またはIDEの一部(ステータスバー、ツールバーなど)がそれにコピーされます。これらのオプションをクリックすると、ソースコード(F12)に変更して戻ると、これらのオプション間で変更されます。
実行時には、常に黒です。

を使用DrawingStyle=dsGradientすると、すべてが期待どおりに機能します。に切り替えるdsNormalと、再び壊れます。

非アクティブ化Form1.DoubleBufferedすると修復されます。

その問題を回避する方法のヒントはありますか?

4

2 に答える 2

4

この記事で報告されているWhen not to use DoubleBufferedように、一部のコントロールは、プロパティがtrueに設定されているTToolBarTRichEditうまく機能しません。DoubleBuffered

その理由は、ドキュメントに記載されています。TWinControl.DoubleBufferedここでは、一部のWinControlが一時的なビットマップに描画できません(DoubleBufferedtrueの場合に発生します)。

TToolBar回避策の1つは、をに置くことTPanelです。

于 2013-03-25T10:06:28.963 に答える
4

私の意見では、解決策はに設定TForm.DoubleBufferedすることFalseです。の値を使用するとTrue、他のあらゆる種類の問題が発生します。このプロパティは、XPテーマの前はかなりうまく機能しTForm.DoubleBufferedていましたが、私の見解では、それらが到着して以来、使用することは実行可能ではありませんでした。

あなたが遭遇した問題に加えて、私はWindowsBasicテーマを使用するときにたくさんのペイントの欠陥に遭遇しました。それが主流ではないことは知っていますが、リモートアクセスでそれをよく目にします。そして、もっとあります。フォームをダブルバッファリングすると、テーマアニメーションが機能しなくなります。たとえば、デフォルトのボタンは、それがデフォルトのボタンであることを示すためにパルスします。

フォームを二重にバッファリングせずにサイズ変更のちらつきが発生する場合は、別の質問に対する私の回答のアイデアを使用してください。コメントから、あなたが戦いたいちらつきはペイントボックスにあるようです。詳細はわかりませんが、私の経験と本能では、地域レベルでのちらつきに非常に簡単に対処できるはずだと言っています。確かに、グローバルフォームワイドダブルバッファリングは必要ありません。

于 2013-03-25T10:16:39.820 に答える