第一:
在你刷新前保存所在位置的行號
procedure XXXClass.LockPositionEx;
begin
DisableControls;
FHistoryRecNo := 0;
FHistoryIndexName := EmptyStr;
if Active then
begin
if IndexName <> EmptyStr then
FHistoryIndexName := IndexName;
IndexName := EmptyStr;
if not IsEmpty then
if (State in [dsEdit,dsInsert]) then
FHistoryRecNo := -1
else
FHistoryRecNo := RecNo;
end;
end;
第二刷新後定位到新行號
procedure XXXClass.UnlockPositionEx;
begin
if Active then
begin
if not IsEmpty then
if FHistoryRecNo < 0 then//處理編輯狀態,直接跳至最後一條記錄
Last
else if FHistoryRecNo = 0 then
First
else if FHistoryRecNo > 0 then//
begin
if RecordCount >= FHistoryRecNo then
RecNo := FHistoryRecNo
else if RecordCount > 0 then
Last;
end;
if FHistoryIndexName <> EmptyStr then
begin
IndexName := FHistoryIndexName;
FHistoryIndexName := EmptyStr;
end;
end;
EnableControls;
end;