お世話になります。
早速ですが、タイトルどおり大量のデータをTStringGridで表示
したいのですが、どうすればよいでしょうか?
行数は約20万行で、項目数は28項目いずれも文字列です。
とりあえずチェックしてみてください。
http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/01383.html
何が問題なのですか?
ただ、20万行表示は現実的では有りません。
ロジックを変えることをお勧めします。
行数20万、列数28で以下をやってみると、
1分ほど掛かりましたが、エラーは出ずに正常に動作しましたが・・・
var
iR, iC: integer;
begin
StringGrid1.Hide;
Application.ProcessMessages;
for iR := 0 to Pred(StringGrid1.RowCount) do begin
for iC := 0 to Pred(StringGrid1.ColCount) do begin
StringGrid1.Cells[iC, iR] := Format('%.2d', [iC]) + ',' + Format('%.6d', [iR]);
end;
end;
StringGrid1.Show;
end;
Hide→Showに変わりいかがですか?
begin
SendMessage(StringGrid1.Handle, WM_SETREDRAW, 0, 0);
{Gridにデータを設定}
SendMessage(StringGrid1.Handle, WM_SETREDRAW, 1, 0);
StringGrid1.Repaint;
end;
>SendMessageさん
こういう方法もあるんですね。勉強になります。
時間は両者とも変わりはありませんでした。
グリッドの下にラベル(「しばらくお待ちください」と書いています)を置いて、
Hideを行うと、ユーザーに処理が分かりやすいため、この方法を多用しています。
try
Hide;
……
finally
Show;
end;
して欲しいです
ツイート | ![]() |