私はググってたくさんのアドバイスを見つけましたが、それはすべて数年前のもののようで、どれも役に立ちませんでした.
8列の文字列グリッドがあり、数百行を超えると、入力に2秒以上かかります(GetTickCountを使用して比較しました)。
私は試しましたStringGrid.Perform(WM_SETREDRAW, 0, 0)
(そして0, 1
最後に)。
Visible := False
アップデートしながら設定してみました。どちらも駄目。
方法はありませんBeginUpdate()
。
何かアドバイス?Delphi XE2 スターター。FOSS サードパーティの VCL ストリング グリッドが試用され、テストされている場合は、喜んで使用します。
[更新] TDrawGrid を使用して ...「TDrawGrid には、兄弟の TStringGrid のようなプロパティ「セル」がありません。コードは、データを表示する場所を計算する必要があり、次に「キャンバス上にデータの表現を描画する必要があります。 「グリッドの」。
それは私にとって大変な作業のように聞こえます:-(
VirtualTreeView の使用 - 十分に高速な場合は問題ありません。子ノードはありません。(更新++ホームページでこれを読んだところです「仮想ツリービューは非常に高速です。100万ノードの追加には700ミリ秒しかかかりません」)。それなら速度的には問題ありません。しかし、文字列グリッドを使用するのはいいことです。特に、ユーザーがクリックしてソートできる場所。
または、stringgrid の高さは 20 行のみです。たぶん、スクロールバーのクリックを処理し、ユーザーがスクロールしたときにそれらの 20 行をクリアして再入力できますか?
[追加更新] コードが持つ TStringGrid から TListView に変更しましたBeginupdate())
が、ほとんど違いはありませんでした。おっと、「仮想モード」を忘れていました-brb。
ところで、データは表示専用で読み取り専用です。
確かにこれは非常に一般的な問題ですか?