DBGridの更新後に行を選択
質問
まあ、私からのある種のn00bの質問。私はここでネットと同様の質問をサーフしましたが、そのような単純な(思ったように)問題に対する正しい答えは見つかりませんでした。
DBGridがあります。 1つの行を選択し、この行にリンクされた別のデータでいくつかのアクションを実行します。終了後、DBGridが更新され、選択した行が最初にリセットされます。 DBGridデータを更新する前に選択した行と同じ行を選択したい。提案はありますか?
解決
更新する前に、リンクされたデータセットの現在の選択をブックマークとして保存し、その後ブックマークを復元します。
他のヒント
この回答は、代替ではなく、メイソンのマイナーな補足として意図されています。追加したのは、データセットの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;
RecKey:=DmFRM.ViewTBL.RecNo;
with DmFRM.ViewTBL do
begin
Active:=false;
Active:=True;
RecNo:=RecKey;
end;
所属していません StackOverflow