DBGRID를 새로 고치고 나면 행을 선택하십시오
문제
글쎄, 나에게서 어떤 종류의 N00B 질문. 나는 여기에서 그물과 비슷한 질문을 서핑했지만 그런 간단한 문제에 대한 정답을 찾지 못했습니다.
DBGRID가 있습니다. 하나의 행을 선택 하고이 행에 연결된 다른 데이터로 조치를 취합니다. 내가 끝난 후, DBGRID가 새로 고쳐지고 선택한 행이 먼저 재설정되었습니다. DBGrid 데이터를 새로 고치기 전에 선택한 것과 동일한 행을 선택하고 싶습니다. 제안이 있습니까?
해결책
새로 고침하기 전에 링크 된 데이터 세트의 현재 선택을 북마크로 저장 한 다음 북마크를 복원하십시오.
다른 팁
이 답변은 대안이 아니라 메이슨의 사소한 보충제로 의도 된 것입니다. 데이터 세트의 RecNO 속성 사용을 잘못 제안한 또 다른 답변이 나타 났기 때문에 추가했습니다. 모든 tdataset 자손이 안정적으로 또는 전혀 안심할 수있는 것은 아닙니다. 일부 후손은 현재 행의 recno에 대해 일정한 값을 반환하고 값을 할당 할 때 아무것도하지 않습니다.
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