シンプルにする必要がありますが、その方法はわかりません。Delphi:フォームのサイズを変更すると右揃えのパネルがちらつきます。
私は、たとえば青色で色付けされた右揃えのパネルでフォームを作成します。
フォームの左端をつかんで、それを水平方向にすばやく前後にサイズ変更すると、右パネルが動かないかちらつくことがあります。その位置が変わらないので、それが完全に安定しているべきではない理由はありません。誰もこの明らかに単純な問題を解決する簡単なトリックを知っていますか?
ありがとうございました
シンプルにする必要がありますが、その方法はわかりません。Delphi:フォームのサイズを変更すると右揃えのパネルがちらつきます。
私は、たとえば青色で色付けされた右揃えのパネルでフォームを作成します。
フォームの左端をつかんで、それを水平方向にすばやく前後にサイズ変更すると、右パネルが動かないかちらつくことがあります。その位置が変わらないので、それが完全に安定しているべきではない理由はありません。誰もこの明らかに単純な問題を解決する簡単なトリックを知っていますか?
ありがとうございました
これは、Windows GUIアプリケーションでの実際の事実です。 WinFormsアプリケーションでも、Windowsの主流アプリケーションであっても、同じ効果を見ることができます。たとえば、エクスプローラウィンドウを開き、まったく同じ操作を行い、ウィンドウの左端をつかんでサイズを変更します。まったく同じ効果が表示されます。任意のエッジからサイズを変更することで、同じ効果を確認できます。 WordとExcelは同じように動作します。
私の推測では、Windowsはサイズ変更のメッセージを送信する前にサイズ変更ループを再描画して、アプリケーションがそのコントロールを再調整できるようにしていると思います。
あなたは正しいかもしれませんが、私は受け入れが難しいと感じています。私の意見では、必ずしも達成するのが容易ではない場合でも、不要なときにウィンドウの一部を再ペイントしないように常に努めなければなりません。私が記述した単純なケースでは、再描画すべき部分はサイズ変更の影響を受ける部分だけです。したがって、右のパネルは安定していなければなりません。 –
ウィンドウマネージャがこれを行っている場合、あなたは単に不運です。 XPを別々にレンダリングする実験をする価値があります。 –
フォームコンストラクタで 'DoubleBuffered:= True'を設定してみてください。 – Blorgbeard
これは実際にはちらつきの問題ではなく、位置合わせの問題です。他の質問はここでは役に立ちません。 –
私はdoubleBufferedをTRUEに設定しました。私はまた、FormResizeメソッドで右パネルを配置することで、自分自身で配置を試みました。運がない。 –