|
@@ -195,6 +195,8 @@ const
|
|
procedure OnBeforeFetchAll(constref AParams: TPageFetchParams); virtual;
|
|
procedure OnBeforeFetchAll(constref AParams: TPageFetchParams); virtual;
|
|
procedure FetchAll(const AContainer : TList<T>); virtual; abstract;
|
|
procedure FetchAll(const AContainer : TList<T>); virtual; abstract;
|
|
procedure OnAfterFetchAll(constref AParams: TPageFetchParams); virtual;
|
|
procedure OnAfterFetchAll(constref AParams: TPageFetchParams); virtual;
|
|
|
|
+ procedure EnterLock; inline;
|
|
|
|
+ procedure ReleaseLock; inline;
|
|
public
|
|
public
|
|
constructor Create(AOwner: TComponent); override; overload;
|
|
constructor Create(AOwner: TComponent); override; overload;
|
|
destructor Destroy; override;
|
|
destructor Destroy; override;
|
|
@@ -515,7 +517,12 @@ begin
|
|
try
|
|
try
|
|
// Fetch underlying data if stale
|
|
// Fetch underlying data if stale
|
|
data := GC.AddObject( TList<T>.Create ) as TList<T>;
|
|
data := GC.AddObject( TList<T>.Create ) as TList<T>;
|
|
- FetchAll(data);
|
|
|
|
|
|
+ EnterLock;
|
|
|
|
+ try
|
|
|
|
+ FetchAll(data);
|
|
|
|
+ finally
|
|
|
|
+ ReleaseLock;
|
|
|
|
+ end;
|
|
|
|
|
|
// Filter the data
|
|
// Filter the data
|
|
filters := AParams.GetSearchFilters;
|
|
filters := AParams.GetSearchFilters;
|
|
@@ -591,6 +598,16 @@ procedure TCustomDataSource<T>.OnAfterFetchAll(constref AParams: TPageFetchParam
|
|
begin
|
|
begin
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TCustomDataSource<T>.EnterLock;
|
|
|
|
+begin
|
|
|
|
+ FLock.Acquire;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TCustomDataSource<T>.ReleaseLock; inline;
|
|
|
|
+begin
|
|
|
|
+ FLock.Release;
|
|
|
|
+end;
|
|
|
|
+
|
|
{ TColumnFilterPredicate }
|
|
{ TColumnFilterPredicate }
|
|
|
|
|
|
constructor TColumnFilterPredicate<T>.Create(const AFilter : TColumnFilter; const ADelegate : TApplyFilterDelegate<T>);
|
|
constructor TColumnFilterPredicate<T>.Create(const AFilter : TColumnFilter; const ADelegate : TApplyFilterDelegate<T>);
|