* Change AfterApplyUpdates so it gets all resolveinfo from the batch

This commit is contained in:
michael 2018-07-18 07:25:52 +00:00
parent 6adedb6ade
commit 00300a800d
2 changed files with 14 additions and 9 deletions

View File

@ -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:='';

View File

@ -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;