TListBox (lbVirtualOwnerDraw) を描画した所有者がいます。そのコンテンツは動的に更新されます (1 秒間に 10 回もの更新が行われる可能性があります)。リスト ボックスには、一度に最大 300 個のアイテムを含めることができます。各項目には、約 5 行のテキストとそれに関連付けられた画像が含まれる場合があります。項目が更新されるたびに、VCL フレームワークによって ListBoxDrawItem が呼び出されるように、TListBox を更新 (または無効化) する必要があります。ただし、これは冗長な再描画がすべて行われるため、全体的なパフォーマンスに悪影響を及ぼします。だから私の質問は:
1 つの項目またはその一部の描画を含むキャンバスのごく一部のみを無効にする方法はありますか? (たとえば、1 行のテキストまたはビットマップを含む四角形)。
Draw Item でこのような選択的な無効化長方形をどのように処理できますか? Refresh または invalidate の一部として整数を渡すことができれば、DrawItem でそれを使用して何を更新するかを決定できます。
項目が TListBox で (インデックスによって) まったく表示されているかどうかを確認する方法はありますか?
前もって感謝します!