Kaynağa Gözat

* Change OnApplyUpdates to be more future proof.

michael 7 yıl önce
ebeveyn
işleme
53a3015923
2 değiştirilmiş dosya ile 14 ekleme ve 8 silme
  1. 2 2
      demo/fcldb/demorest.lpr
  2. 12 6
      packages/fcl-db/db.pas

+ 2 - 2
demo/fcldb/demorest.lpr

@@ -46,7 +46,7 @@ Type
     function DoEditRecord(aEvent: TJSMouseEvent): boolean;
     procedure DoGetURL(Sender: TComponent; aRequest: TDataRequest; Var aURL: String);
     procedure DoLoadFail(DataSet: TDataSet; ID: Integer; const ErrorMsg: String);
-    procedure DSAfterApplyUpdates(DataSet: TDataSet; Updates: TResolveInfoArray);
+    procedure DSAfterApplyUpdates(DataSet: TDataSet; Updates: TResolveResults);
     procedure DSOpen(DataSet: TDataSet);
     procedure ResetButtons(Sender: TDataset);
     function SelectRecord(aEvent: TJSMouseEvent): boolean;
@@ -135,7 +135,7 @@ begin
   PanelContent.append(N);
 end;
 
-procedure TForm.DSAfterApplyUpdates(DataSet: TDataSet; Updates : TResolveInfoArray);
+procedure TForm.DSAfterApplyUpdates(DataSet: TDataSet; Updates : TResolveResults);
 begin
   Window.Alert('Updates applied on server!');
   EName.value:='';

+ 12 - 6
packages/fcl-db/db.pas

@@ -1041,8 +1041,13 @@ type
   end;
   TResolveInfoArray = Array of TResolveInfo;
 
+  // Record so we can extend later on
+  TResolveResults = record
+    Records : TResolveInfoArray;
+  end;
+
   TOnRecordResolveEvent = Procedure (Sender : TDataset; info : TResolveInfo) of object;
-  TApplyUpdatesEvent = Procedure (Sender : TDataset; info : TResolveInfoArray) of object;
+  TApplyUpdatesEvent = Procedure (Sender : TDataset; info : TResolveResults) of object;
 
 {------------------------------------------------------------------------------}
 
@@ -1192,7 +1197,7 @@ type
     procedure DoBeforeLoad; virtual;
     procedure DoAfterLoad; virtual;
     procedure DoBeforeApplyUpdates; virtual;
-    procedure DoAfterApplyUpdates(const ResolveInfo: TResolveInfoArray); virtual;
+    procedure DoAfterApplyUpdates(const ResolveInfo: TResolveResults); virtual;
     function  FieldByNumber(FieldNo: Longint): TField;
     function  FindRecord(Restart{%H-}, GoForward{%H-}: Boolean): Boolean; virtual;
     function  GetBookmarkStr: TBookmarkStr; virtual;
@@ -2733,7 +2738,7 @@ begin
     FBeforeApplyUpdates(Self);
 end;
 
-procedure TDataSet.DoAfterApplyUpdates(Const ResolveInfo : TResolveInfoArray);
+procedure TDataSet.DoAfterApplyUpdates(Const ResolveInfo : TResolveResults);
 
 begin
   If Assigned(FAfterApplyUpdates) then
@@ -2915,6 +2920,7 @@ Var
   RUD : TRecordUpdateDescriptor;
   doRemove : Boolean;
   Resolved : TResolveInfoArray;
+  Results : TResolveResults;
 
 begin
   if Assigned(FBatchList) and (aBatch.Dataset=Self) then
@@ -2924,11 +2930,11 @@ begin
   if (BI=-1) then
     Exit;
   FBatchList.Delete(Bi);
-  SetLength(Resolved, aBatch.List.Count);
+  SetLength(Results.Records, aBatch.List.Count);
   For RI:=0 to aBatch.List.Count-1 do
     begin
     RUD:=aBatch.List[RI];
-    Resolved[RI]:=RecordUpdateDescriptorToResolveInfo(RUD);
+    Results.Records[RI]:=RecordUpdateDescriptorToResolveInfo(RUD);
     aBatch.List.Items[RI]:=Nil;
     Idx:=IndexInChangeList(RUD.Bookmark);
     if (Idx<>-1) then
@@ -2950,7 +2956,7 @@ begin
     end;
   if (FBatchList.Count=0) then
     FreeAndNil(FBatchList);
-  DoAfterApplyUpdates(Resolved);
+  DoAfterApplyUpdates(Results);
 end;
 
 procedure TDataSet.DoApplyUpdates;