RAD Studio 11で追加されたTWinControlのLockDrawingメソッド(実行イメージ、コードあり)
Embarcaderoさんのこちらのブログに記載された内容が分かりづらかったのでフルコード作成しました。
blogs.embarcadero.com
上記のブログでは画像しかないから効果が全くわかりませんね。
gifくらい貼ってくれてもいいのに…。
というわけで、コードとgifを貼っつけておきます。
なお、使用したのは Delphi 11.0 です。
コード:https://bitbucket.org/t_kawakami/lockdrawing/src/main/
最初のPlainボタンを押すと、Listbox.Items.Addの処理で応答なしになってしまいます。
追加するたびに画面の再描画が行われてしまうためのようです。
次に、記事にある、新しく追加されたLockDrawingメソッドを使います。
一瞬で更新されます。
また、BeginUpdateを使った方法は従来から使われていると思いますが、これも一瞬で更新されました。
どちらが速いか調べてみましたが、ほとんど差はありませんでした。
続いて、Flickerをクリックします。
赤と青がチラチラちらつきます。
最後に、Flicker with Lockをクリックします。
が、描画を止めてしまっているので全くちらつきません。
TPanelのようにBeginUpdate/EndUpdateメソッドが用意されていないコントロールの場合、LockDrawingは大変有効かと思います。