Răsfoiți Sursa

* Reinstated SetFound

git-svn-id: trunk@20884 -
michael 13 ani în urmă
părinte
comite
b2ce6b2cab

+ 19 - 7
packages/fcl-db/src/base/bufdataset.pas

@@ -36,18 +36,20 @@ type
     FieldNo : integer;
     OrgBufID: integer;
     Buffer  : pointer;
-    Size    : ptrint;
+    Size    : PtrInt;
   end;
 
   TBufBlobStream = class(TStream)
   private
     FBlobBuffer : PBlobBuffer;
-    FPosition   : ptrint;
+    FPosition   : PtrInt;
     FDataset    : TCustomBufDataset;
   protected
     function Read(var Buffer; Count: Longint): Longint; override;
     function Write(const Buffer; Count: Longint): Longint; override;
-    function Seek(Offset: Longint; Origin: Word): Longint; override;
+    function Seek(const Offset: int64; Origin: TSeekOrigin): int64; override;
+    function GetPosition: Int64; override;
+    function GetSize : Int64; override;
   public
     constructor Create(Field: TBlobField; Mode: TBlobStreamMode);
   end;
@@ -2390,17 +2392,27 @@ begin
   ABlobBuffer := Nil;
 end;
 
-function TBufBlobStream.Seek(Offset: Longint; Origin: Word): Longint;
+function TBufBlobStream.Seek(const Offset: int64; Origin: TSeekOrigin): int64;
 
 begin
   Case Origin of
-    soFromBeginning : FPosition:=Offset;
-    soFromEnd       : FPosition:=FBlobBuffer^.Size+Offset;
-    soFromCurrent   : FpoSition:=FPosition+Offset;
+    soBeginning : FPosition:=Offset;
+    soEnd       : FPosition:=FBlobBuffer^.Size+Offset;
+    soCurrent   : FpoSition:=FPosition+Offset;
   end;
   Result:=FPosition;
 end;
 
+function TBufBlobStream.GetPosition: Int64;
+begin
+  Result:=FPosition;
+end;
+
+function TBufBlobStream.GetSize: Int64;
+begin
+  Result:=FBlobBuffer^.Size;
+end;
+
 
 function TBufBlobStream.Read(var Buffer; Count: Longint): Longint;
 

+ 4 - 0
packages/fcl-db/src/base/dataset.inc

@@ -1311,6 +1311,10 @@ begin
   FFiltered := value;
 end;
 
+procedure TDataSet.SetFound(const Value: Boolean);
+begin
+  FFound := Value;
+end;
 
 Procedure TDataset.SetModified(Value: Boolean);
 

+ 5 - 1
packages/fcl-db/src/base/datasource.inc

@@ -494,8 +494,12 @@ Procedure TMasterParamsDataLink.DoMasterDisable;
 
 begin
   Inherited;
-  If Assigned(DetailDataset) and DetailDataset.Active then
+  if Assigned(Params) and Assigned(DetailDataset) and DetailDataset.Active then
+    begin
+    DetailDataSet.CheckBrowseMode;
     DetailDataset.Close;
+    DetailDataset.Open;
+    end;
 end;
 
 Procedure TMasterParamsDataLink.DoMasterChange; 

+ 1 - 0
packages/fcl-db/src/base/db.pas

@@ -1487,6 +1487,7 @@ type
     procedure SetFilterOptions(Value: TFilterOptions); virtual;
     procedure SetFilterText(const Value: string); virtual;
     procedure SetFieldValues(const fieldname: string; Value: Variant); virtual;
+    procedure SetFound(const Value: Boolean); virtual;
     procedure SetModified(Value: Boolean);
     procedure SetName(const Value: TComponentName); override;
     procedure SetOnFilterRecord(const Value: TFilterRecordEvent); virtual;