Delphi/C++Builder TListView 仮想モード時の Item.Dataプロパティ

TListView の速度を上げられる、仮想モード

  • ListView.OwnerData を True にし
  • ListView.Items.Count := 10000; 等と先に個数だけ指定
  • OnData イベント引数の Item: TListItem へ記述

という感じに利用する

この OnData イベントは、ListView のアイテムが描画されるたびに発生し、引数の Item: TListItem は毎回新規作成される
仮想モードと言う事で、ListViewが保持しているのは個数だけで OwnerDraw を行っている感じ

通常のモードと大きく違うのが Item.Data := としてポインタ等を Data プロパティへ格納して、
ListView1Deletion 
イベントなどで解放を行っていると
仮想モードでは 
ListView1Deletion が発生しないため、
メモリリークの恐れが出てくる事
仮想モードなので、実データは別にあるという事が前提なんだろうけど...

【追記】
OnEditing イベントも仮想モードでは引数の Itemが常に nil になってしまうようです

コメント