문제

글쎄, 나에게서 어떤 종류의 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;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top