ListViewに高速表示するには?


どんこ  2006-06-06 04:44:51  No: 22039

TListViewでCSVファイルを高速に表示したいのですが、
どうすればよいのでしょうか。
(TRichEditの場合はTMemoryStreamにデータを書き込んでから
LoadFromStreamで高速に表示できるようですが、同じように
できないのでしょうか?)
ファイルはCSVファイルになっていて、X=66,Y=3500です。
TStringListで読込んでListViewに表示しようとしているのですが、
以下のプログラムでは非常に時間がかかっています。

以下、プログラム(FData,TempList は TStringList です)

FData.LoadFromFile(FileName);
for i := 1 to FData.Count do begin
  TempList.Text := AnsiReplaceText(FData.Strings[i - 1], ',', #13#10);
  ListItem := ListView.Items.Add;
  ListItem.Caption  := TempList.Strings[0];
  TempList.Delete(0);
  LIstItem.SubItems.Text := TempList.Text;
end;


所要時間  2006-06-06 04:53:46  No: 22040

>以下のプログラムでは非常に時間がかかっています。
所要時間はいかほど?


カレーライズ  2006-06-06 08:24:04  No: 22041

ListViewっていうのは 項目を追加するときに再描画などが走ってしまいどうしても  遅くなってしまいます。なので

  FData.LoadFromFile(FileName);
  ListItem.BeginUpdate();        ・・・。
  for i := 1 to FData.Count do begin
      ・・・・
  end;
  ListItem.EndUpdate();          ・・・「
  
  上記のi) ii)を追加すれば再描画が制限されて処理時間が短縮されると思いますよ。  それにしても  66*3500っていう時点で時間がかかる当たり前だと思いますがね・・・・もし上記の方法でうまくいったなら  どれくらい速くなったのかを教えて頂きたいものですm(_ _)m


カレーライズ  2006-06-06 08:29:53  No: 22042

文字化けしてすいません。プログラム部分は以下の通りです

  FData.LoadFromFile(FileName);
  ListItem.BeginUpdate();        ・・・i) 
  for i := 1 to FData.Count do begin
      ・・・・
  end;
  ListItem.EndUpdate();          ・・・ii)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加