「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;