この回答は、Masonの補足であり、代替ではありません。私は、データセットのRecNoプロパティの使用を間違って示唆している別の回答が現れたためにのみ追加しました。すべてのTDataSet子孫がRecNoを確実に実装するわけではありません。一部の子孫は一定値を返します。現在の行のRecNoは0、値を代入すると何もしません。
procedure TMyForm.DoSomethingWithDataSet(ADataSet : TDataSet);
var
Bookmark : TBookmark;
begin
Bookmark := ADataSet.GetBookmark; // Save your place in ADataSet
try
Screen.Cursor := crSqlWait; // Show the user that something is happening
Update; // update the form to make sure screen cursor updates
ADataSet.DisableControls;
// do something with ADataSet here e.g.
ADataSet.First;
while not ADataSet.Eof do begin
// do something with current row here, then
ADataSet.Next;
end;
finally
ADataSet.GotoBookmark(Bookmark); // Return to where you were at outset
ADataSet.FreeBookmark(Bookmark);
ADataSet.EnableControls;
Screen.Cursor := crDefault; // Let the user see you're done
end;
end;
うん、うまくいくようです。ありがとうございました! – Vlad
サンプルコードを教えてください。 – truthseeker