トップへ(mam-mam.net/)

TStringGridの更新速度を速くするには

検索:

「TStringGridの更新速度を速くするには」

TStringGridに大量のデータを表示させたいので遅いのですが、TStringGridにはBeginUpdateやEndUpdateはありません。しかしながら、Rows又はColsのBeginUpdateやEndUpdateを使えば良いと聞いて

  StringGrid1.Cols[0].BeginUpdate;
  for i:=1 to 20000 do
    StringGrid1.Celld[i,0];
  StringGrid1.Cols[0].EndUpdate;

のようにプログラムを行ったのですが、やはり速くありません。
どうすれば良いでしょうか。

回答

Delphiのバージョンにも依存すると思うのですが、私の持っているDelphi2006ProfessionalではRows又はColsのBeginUpdateやEndUpdateを使っても速くなりませんでした。しかしながら、速度を上げる方法は他にもあります。可能であれば、VisibleプロパティをFalseにしてから、セルに値を入れ、VisibleプロパティをTrueにすれば速くなる場合があります。

ソース

  StringGrid1.Visible:=False;
  for i:=1 to 20000 do
    StringGrid1.Celld[i,0];
  StringGrid1.Visible:=True;