|
@@ -79,15 +79,12 @@ type
|
|
function AllocRecordBuffer: TDataRecord; override;
|
|
function AllocRecordBuffer: TDataRecord; override;
|
|
procedure FreeRecordBuffer(var Buffer: TDataRecord); override;
|
|
procedure FreeRecordBuffer(var Buffer: TDataRecord); override;
|
|
procedure InternalInitRecord(var Buffer: TDataRecord); override;
|
|
procedure InternalInitRecord(var Buffer: TDataRecord); override;
|
|
- procedure GetBookmarkData(Buffer: TDataRecord; var Data: TBookmark); override;
|
|
|
|
- function GetBookmarkFlag(Buffer: TDataRecord): TBookmarkFlag; override;
|
|
|
|
function GetRecord(Var Buffer: TDataRecord; GetMode: TGetMode; DoCheck: Boolean): TGetResult; override;
|
|
function GetRecord(Var Buffer: TDataRecord; GetMode: TGetMode; DoCheck: Boolean): TGetResult; override;
|
|
function GetRecordSize: Word; override;
|
|
function GetRecordSize: Word; override;
|
|
procedure AddToRows(AValue: TJSArray);
|
|
procedure AddToRows(AValue: TJSArray);
|
|
procedure InternalClose; override;
|
|
procedure InternalClose; override;
|
|
procedure InternalDelete; override;
|
|
procedure InternalDelete; override;
|
|
procedure InternalFirst; override;
|
|
procedure InternalFirst; override;
|
|
- procedure InternalGotoBookmark(ABookmark: TBookmark); override;
|
|
|
|
procedure InternalLast; override;
|
|
procedure InternalLast; override;
|
|
procedure InternalOpen; override;
|
|
procedure InternalOpen; override;
|
|
procedure InternalPost; override;
|
|
procedure InternalPost; override;
|
|
@@ -98,6 +95,10 @@ type
|
|
procedure InternalSetToRecord(Buffer: TDataRecord); override;
|
|
procedure InternalSetToRecord(Buffer: TDataRecord); override;
|
|
function GetFieldClass(FieldType: TFieldType): TFieldClass; override;
|
|
function GetFieldClass(FieldType: TFieldType): TFieldClass; override;
|
|
function IsCursorOpen: Boolean; override;
|
|
function IsCursorOpen: Boolean; override;
|
|
|
|
+ // Bookmark operations
|
|
|
|
+ procedure GetBookmarkData(Buffer: TDataRecord; var Data: TBookmark); override;
|
|
|
|
+ function GetBookmarkFlag(Buffer: TDataRecord): TBookmarkFlag; override;
|
|
|
|
+ procedure InternalGotoBookmark(ABookmark: TBookmark); override;
|
|
procedure SetBookmarkFlag(Var Buffer: TDataRecord; Value: TBookmarkFlag); override;
|
|
procedure SetBookmarkFlag(Var Buffer: TDataRecord; Value: TBookmarkFlag); override;
|
|
procedure SetBookmarkData(Var Buffer: TDataRecord; Data: TBookmark); override;
|
|
procedure SetBookmarkData(Var Buffer: TDataRecord; Data: TBookmark); override;
|
|
function GetRecordCount: Integer; override;
|
|
function GetRecordCount: Integer; override;
|
|
@@ -135,6 +136,7 @@ type
|
|
destructor Destroy; override;
|
|
destructor Destroy; override;
|
|
function GetFieldData(Field: TField; Buffer: TDatarecord): JSValue; override;
|
|
function GetFieldData(Field: TField; Buffer: TDatarecord): JSValue; override;
|
|
procedure SetFieldData(Field: TField; var Buffer: TDatarecord; AValue : JSValue); override;
|
|
procedure SetFieldData(Field: TField; var Buffer: TDatarecord; AValue : JSValue); override;
|
|
|
|
+ function CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Longint; override;
|
|
published
|
|
published
|
|
Property FieldDefs;
|
|
Property FieldDefs;
|
|
// redeclared data set properties
|
|
// redeclared data set properties
|
|
@@ -408,7 +410,7 @@ begin
|
|
FCurrentList.Delete(FCurrent);
|
|
FCurrentList.Delete(FCurrent);
|
|
if (FCurrent>=FCurrentList.Count) then
|
|
if (FCurrent>=FCurrentList.Count) then
|
|
Dec(FCurrent);
|
|
Dec(FCurrent);
|
|
- FRows:=FRows.Splice(FCurrent,1);
|
|
|
|
|
|
+ FRows.Splice(FCurrent,1);
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TBaseJSONDataSet.InternalFirst;
|
|
procedure TBaseJSONDataSet.InternalFirst;
|
|
@@ -619,6 +621,24 @@ begin
|
|
Buffer.BookmarkFlag := Value;
|
|
Buffer.BookmarkFlag := Value;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+function TBaseJSONDataSet.CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Longint;
|
|
|
|
+
|
|
|
|
+begin
|
|
|
|
+ if isNumber(Bookmark1.Data) and isNumber(Bookmark2.Data) then
|
|
|
|
+ Result := Integer(Bookmark2.Data) - Integer(Bookmark1.Data)
|
|
|
|
+ else
|
|
|
|
+ begin
|
|
|
|
+ if isNumber(Bookmark1.Data) then
|
|
|
|
+ Result := -1
|
|
|
|
+ else
|
|
|
|
+ if isNumber(Bookmark2.Data) then
|
|
|
|
+ Result := 1
|
|
|
|
+ else
|
|
|
|
+ Result := 0;
|
|
|
|
+ end;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+
|
|
procedure TBaseJSONDataSet.SetRecNo(Value: Integer);
|
|
procedure TBaseJSONDataSet.SetRecNo(Value: Integer);
|
|
begin
|
|
begin
|
|
if (Value < 0) or (Value > FCurrentList.Count) then
|
|
if (Value < 0) or (Value > FCurrentList.Count) then
|