From 00300a800d14db4770ced4469dcccd4f46f4d456 Mon Sep 17 00:00:00 2001 From: michael Date: Wed, 18 Jul 2018 07:25:52 +0000 Subject: [PATCH] * Change AfterApplyUpdates so it gets all resolveinfo from the batch --- demo/fcldb/demorest.lpr | 4 ++-- packages/fcl-db/db.pas | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/demo/fcldb/demorest.lpr b/demo/fcldb/demorest.lpr index 2137bf6..1f20283 100644 --- a/demo/fcldb/demorest.lpr +++ b/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); + procedure DSAfterApplyUpdates(DataSet: TDataSet; Updates: TResolveInfoArray); 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); +procedure TForm.DSAfterApplyUpdates(DataSet: TDataSet; Updates : TResolveInfoArray); begin Window.Alert('Updates applied on server!'); EName.value:=''; diff --git a/packages/fcl-db/db.pas b/packages/fcl-db/db.pas index ce31b5d..619c4ae 100644 --- a/packages/fcl-db/db.pas +++ b/packages/fcl-db/db.pas @@ -1040,13 +1040,15 @@ type _private : JSValue; // for use by descendents of TDataset end; TResolveInfoArray = Array of TResolveInfo; - TOnRecordResolveEvent = Procedure (Sender : TDataset; info : TResolveInfo); + + TOnRecordResolveEvent = Procedure (Sender : TDataset; info : TResolveInfo) of object; + TApplyUpdatesEvent = Procedure (Sender : TDataset; info : TResolveInfoArray) of object; {------------------------------------------------------------------------------} TDataSet = class(TComponent) Private - FAfterApplyUpdates: TDatasetNotifyEvent; + FAfterApplyUpdates: TApplyUpdatesEvent; FAfterLoad: TDatasetNotifyEvent; FBeforeApplyUpdates: TDatasetNotifyEvent; FBeforeLoad: TDatasetNotifyEvent; @@ -1190,7 +1192,7 @@ type procedure DoBeforeLoad; virtual; procedure DoAfterLoad; virtual; procedure DoBeforeApplyUpdates; virtual; - procedure DoAfterApplyUpdates;virtual; + procedure DoAfterApplyUpdates(const ResolveInfo: TResolveInfoArray); virtual; function FieldByNumber(FieldNo: Longint): TField; function FindRecord(Restart{%H-}, GoForward{%H-}: Boolean): Boolean; virtual; function GetBookmarkStr: TBookmarkStr; virtual; @@ -1384,7 +1386,7 @@ type property BeforeLoad : TDatasetNotifyEvent Read FBeforeLoad Write FBeforeLoad; Property AfterLoad : TDatasetNotifyEvent Read FAfterLoad Write FAfterLoad; Property BeforeApplyUpdates : TDatasetNotifyEvent Read FBeforeApplyUpdates Write FBeforeApplyUpdates; - Property AfterApplyUpdates : TDatasetNotifyEvent Read FAfterApplyUpdates Write FAfterApplyUpdates; + Property AfterApplyUpdates : TApplyUpdatesEvent Read FAfterApplyUpdates Write FAfterApplyUpdates; property AfterRefresh: TDataSetNotifyEvent read FAfterRefresh write FAfterRefresh; property OnCalcFields: TDataSetNotifyEvent read FOnCalcFields write FOnCalcFields; property OnDeleteError: TDataSetErrorEvent read FOnDeleteError write FOnDeleteError; @@ -2731,11 +2733,11 @@ begin FBeforeApplyUpdates(Self); end; -procedure TDataSet.DoAfterApplyUpdates; +procedure TDataSet.DoAfterApplyUpdates(Const ResolveInfo : TResolveInfoArray); begin If Assigned(FAfterApplyUpdates) then - FAfterApplyUpdates(Self); + FAfterApplyUpdates(Self,ResolveInfo); end; function TDataSet.FieldByNumber(FieldNo: Longint): TField; @@ -2912,6 +2914,7 @@ Var BI,RI,Idx: integer; RUD : TRecordUpdateDescriptor; doRemove : Boolean; + Resolved : TResolveInfoArray; begin if Assigned(FBatchList) and (aBatch.Dataset=Self) then @@ -2921,9 +2924,11 @@ begin if (BI=-1) then Exit; FBatchList.Delete(Bi); + SetLength(Resolved, aBatch.List.Count); For RI:=0 to aBatch.List.Count-1 do begin RUD:=aBatch.List[RI]; + Resolved[RI]:=RecordUpdateDescriptorToResolveInfo(RUD); aBatch.List.Items[RI]:=Nil; Idx:=IndexInChangeList(RUD.Bookmark); if (Idx<>-1) then @@ -2945,7 +2950,7 @@ begin end; if (FBatchList.Count=0) then FreeAndNil(FBatchList); - DoAfterApplyUpdates; + DoAfterApplyUpdates(Resolved); end; procedure TDataSet.DoApplyUpdates;