Browse Source

* Patch from Luiz Americo for bug #10777

git-svn-id: trunk@10357 -
joost 17 years ago
parent
commit
c64fea89b7
1 changed files with 14 additions and 7 deletions
  1. 14 7
      packages/fcl-db/src/sqlite/customsqliteds.pas

+ 14 - 7
packages/fcl-db/src/sqlite/customsqliteds.pas

@@ -1046,10 +1046,12 @@ begin
     if MatchRecord then
     if MatchRecord then
     begin
     begin
       Result := TempItem;
       Result := TempItem;
-      if DoResync then
+      if DoResync and (TempItem <> PPDataRecord(ActiveBuffer)^) then
       begin
       begin
+        DoBeforeScroll;
         FCurrentItem := TempItem;
         FCurrentItem := TempItem;
         Resync([]);
         Resync([]);
+        DoAfterScroll;
       end;
       end;
       Break;//while
       Break;//while
     end;
     end;
@@ -1180,17 +1182,22 @@ end;
 
 
 procedure TCustomSqliteDataset.SetRecNo(Value: Integer);
 procedure TCustomSqliteDataset.SetRecNo(Value: Integer);
 var
 var
-  Counter:Integer;
-  TempItem:PDataRecord;
+  Counter: Integer;
+  TempItem: PDataRecord;
 begin
 begin
   if (Value > FRecordCount) or (Value <= 0) then
   if (Value > FRecordCount) or (Value <= 0) then
     DatabaseError('Record Number Out Of Range',Self);
     DatabaseError('Record Number Out Of Range',Self);
   CheckBrowseMode;
   CheckBrowseMode;
-  TempItem:=FBeginItem;
+  TempItem := FBeginItem;
   for Counter := 1 to Value do
   for Counter := 1 to Value do
-    TempItem:=TempItem^.Next;
-  FCurrentItem:=TempItem;
-  Resync([]);
+    TempItem := TempItem^.Next;
+  if TempItem <> PPDataRecord(ActiveBuffer)^ then
+  begin
+    DoBeforeScroll;
+    FCurrentItem := TempItem;
+    Resync([]);
+    DoAfterScroll;
+  end;
 end;
 end;
 
 
 // Specific functions 
 // Specific functions