0

MS SQL の ID で関連付けられた 2 つのテーブルがあります。Delphi インターフェイスは 2 つの DBGrid のように見えます。上部のテーブルから 1 つのレコードを選択すると、下部のテーブルにこの ID を持つすべてのレコードが表示されます。DBGrid は、指定された ID を持つすべてのレコードを単純に表示するストアド プロシージャ (TMSStoredProc) に接続されています。トップ テーブル AfterScroll イベント:

Bottom_table_SP.ParamByName('@ID').AsInteger := Top_table_SP.FieldByName('ID').AsInteger;
Bottom_table_SP.Active := False;
Bottom_table_SP.Active := True;

すべてが非常にシンプルで、機能します。しかし、トップテーブルを高速でスクロールしている間、フォーム全体が点滅し始めます.トップテーブルとボトムテーブルのサイズはミリ秒単位で変化します. この種の問題を処理する方法を知っている人はいますか?

4

1 に答える 1

1

SQL Server について言及されているTADOStoredProcedureので、ここでは ADO コンポーネント ( ) を使用していると推測されるため、通常のプロパティMasterFieldsMasterSourceプロパティは使用できません。その他の基本的な機能はまだあるので、このちらつきを避けるためにTDataSet.DisableControlsとを使用する必要があります。EnableControls

Bottom_table_SP.DisableControls;
try
  Bottom_table_SP.Active := False;
  Bottom_table_SP.ParamByName('@ID').AsInteger := Top_table_SP.FieldByName('ID').AsInteger;
  Bottom_table_SP.Active := True;
finally
  Bottom_table_SP.EnableControls;
end;

データ表示の無効化と有効化が説明に役立つ場合があります。

于 2013-06-26T17:45:24.850 に答える