2008年7月27日

仮想リストビュー

ListViewはWindowsのコモンコントロールですが、表示件数が100件を超えるあたりから処理がどんどん重くなっていき、10000件あたりになるとクリアするだけでも数秒掛かるようになってしまいます。そこで表示件数が多くなることが想定される場合は仮想リストビューを使用します。といってもListItemを追加、変更、削除する代わりにOwnerDataをTrueにした状態でCountを変更するかInvalidateで表示を無効化し、OnDataイベントで渡されたListItemのCaptionおよびSubItemsを設定するだけです。
procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin

  try
    Item.Caption := 'Line ' + IntToStr(Item.Index);
    Item.SubItems.Clear;
    Item.SubItems.Add('2nd column');
    Item.SubItems.Add('3rd column');

  except
    { Ignore exceptions }
  end;

end;

ただし仮想リストビューにした場合はListView_SetColumnWidthでLVSCW_AUTOSIZEやLVSCW_AUTOSIZE_USEHEADERを指定することはできません。

0 件のコメント: