私はDelphiの初心者です。アドバイスが必要です。Delphi7 TMS TDBAdvGrid列ヘッダーがクリックされたときにデータを並べ替えます。
私はTMS TDBAdvGridを使用しています。ユーザーが列のヘッダーをクリックしているときにデータを並べ替える必要があります。私はグリッドのソート設定をセットアップし、onclicksortイベントのコードを書いていますが、動作していません。
グリッドのソート設定:
SortSettings.Show = True;
SortSettings.IgnoreBlanks = True;
SortSettings.BlankPos = blLast;
onclicksortイベント:
try
try
if FSortISWorking then
Exit;
FSortISWorking := true;
if ACol < 0 then
begin
grid.BeginUpdate;
grid.SortSettings.Column := ACol;
Application.ProcessMessages;
grid.QSort;
grid.EndUpdate;
end;
except on e: Exception do
begin
// log the error
end;
end;
finally
FSortISWorking := false;
end;
グリッドはデータベースに直接リンクされていません。データはメモリ(TClientDataSet)にロードされ、データベースへの別のクエリを使わずにメモリ内のデータのみをソートする必要があります。
ありがとう
ありがとうございます。この解決策が働いた。唯一の問題は、プロパティがfalseの場合、データセットへの接続が閉じられていることです。 – Andrei
TMSのドキュメントを見ると、両方を持つことはできないようです。 PageMode =データ編集の場合はTrue、ソートの場合はPageMode = Falseのいずれかです。これについて詳しくは、「TMS TDBAdvGrid.pdf」を参照してください。単に「PageMode」を検索してください。私は過去にもこれと苦労し、Raduの解決策に進まなければならなかった - データをデータベースレベルで並べ替えて、データを編集できるようにする: - / –