mirror of
https://github.com/CloudDelphi/Router4Delphi.git
synced 2025-12-19 08:43:43 +01:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9787e23c32 | ||
|
|
574146d906 | ||
|
|
3d708ba8b6 |
Binary file not shown.
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 89 KiB |
@ -30,7 +30,10 @@ begin
|
||||
for lIndex := Self.ControlCount - 1 downto 0 do
|
||||
begin
|
||||
if (Self.Controls[lIndex] is TForm) then
|
||||
begin
|
||||
(Self.Controls[lIndex] as TForm).Close;
|
||||
(Self.Controls[lIndex] as TForm).parent := nil;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@ -42,6 +42,7 @@ type
|
||||
FInstanteObject : iRouter4DComponent;
|
||||
FListCacheOrder : TList<String>;
|
||||
FIndexCache : Integer;
|
||||
FMaxCacheHistory : Integer;
|
||||
procedure CreateInstancePersistent( aPath : String);
|
||||
//procedure CacheKeyNotify(Sender: TObject; const Key: string; Action: TCollectionNotification);
|
||||
public
|
||||
@ -72,6 +73,7 @@ type
|
||||
function InstanteObject : iRouter4DComponent;
|
||||
function GoBack : String;
|
||||
function BreadCrumb(aDelimiter: char = '/') : String;
|
||||
function addCacheHistory(aKey : String) : TRouter4DHistory;
|
||||
function IndexCache : Integer;
|
||||
end;
|
||||
|
||||
@ -225,6 +227,21 @@ begin
|
||||
FListCache2.Add(aKey, CachePersistent);
|
||||
end;
|
||||
|
||||
function TRouter4DHistory.addCacheHistory(aKey: String): TRouter4DHistory;
|
||||
var
|
||||
I: Integer;
|
||||
begin
|
||||
Result := Self;
|
||||
for I := Pred(FListCacheOrder.Count) downto Succ(FIndexCache) do
|
||||
FListCacheOrder.Delete(I);
|
||||
|
||||
if FListCacheOrder.Count > FMaxCacheHistory then
|
||||
FListCacheOrder.Delete(0);
|
||||
|
||||
FListCacheOrder.Add(aKey);
|
||||
FIndexCache := Pred(FListCacheOrder.Count);
|
||||
end;
|
||||
|
||||
function TRouter4DHistory.AddHistory(aKey: String; aObject: TPersistentClass;
|
||||
aSBKey : String; isVisible: Boolean): iRouter4DComponent;
|
||||
var
|
||||
@ -244,6 +261,8 @@ constructor TRouter4DHistory.Create;
|
||||
begin
|
||||
FListCache := TObjectDictionary<String, TObject>.Create;
|
||||
FListCache2 := TDictionary<String, TCachePersistent>.Create;
|
||||
FListCacheOrder := TList<String>.Create;
|
||||
FMaxCacheHistory := 10;
|
||||
{$IFDEF HAS_FMX}
|
||||
FListCacheContainer := TObjectDictionary<String, TFMXObject>.Create;
|
||||
{$ELSE}
|
||||
@ -275,6 +294,7 @@ begin
|
||||
FListCache.Free;
|
||||
FListCache2.Free;
|
||||
FListCacheContainer.Free;
|
||||
FListCacheOrder.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
||||
@ -51,6 +51,7 @@ type
|
||||
function &To ( aPatch : String; aProps : TProps; aKey : String = '') : iRouter4DLink; overload;
|
||||
function &To ( aPatch : String; aNameContainer : String) : iRouter4DLink; overload;
|
||||
function IndexLink ( aPatch : String ) : iRouter4DLink;
|
||||
function GoBack : iRouter4DLink;
|
||||
end;
|
||||
|
||||
iRouter4DRender = interface
|
||||
|
||||
@ -38,6 +38,7 @@ type
|
||||
function &To ( aPatch : String) : iRouter4DLink; overload;
|
||||
function &To ( aPatch : String; aProps : TProps; aKey : String = '') : iRouter4DLink; overload;
|
||||
function &To ( aPatch : String; aNameContainer : String) : iRouter4DLink; overload;
|
||||
function GoBack : iRouter4DLink;
|
||||
function IndexLink ( aPatch : String ) : iRouter4DLink;
|
||||
end;
|
||||
|
||||
@ -66,6 +67,7 @@ begin
|
||||
aComponent
|
||||
.AddObject(
|
||||
Router4DHistory
|
||||
.addCacheHistory(aPatch)
|
||||
.GetHistory(aPatch)
|
||||
.Render
|
||||
);
|
||||
@ -85,6 +87,7 @@ begin
|
||||
aComponent
|
||||
.AddObject(
|
||||
Router4DHistory
|
||||
.addCacheHistory(aPatch)
|
||||
.GetHistory(aPatch)
|
||||
.Render
|
||||
);
|
||||
@ -111,6 +114,7 @@ begin
|
||||
aContainer
|
||||
.AddObject(
|
||||
Router4DHistory
|
||||
.addCacheHistory(aPatch)
|
||||
.GetHistory(aPatch)
|
||||
.Render
|
||||
);
|
||||
@ -131,6 +135,26 @@ begin
|
||||
inherited;
|
||||
end;
|
||||
|
||||
function TRouter4DLink.GoBack : iRouter4DLink;
|
||||
begin
|
||||
Result := Self;
|
||||
{$IFDEF HAS_FMX}
|
||||
Router4DHistory.MainRouter.RemoveObject(0);
|
||||
{$ELSE}
|
||||
Router4DHistory.MainRouter.RemoveObject;
|
||||
{$ENDIF}
|
||||
Router4DHistory.InstanteObject.UnRender;
|
||||
Router4DHistory
|
||||
.MainRouter
|
||||
.AddObject(
|
||||
Router4DHistory
|
||||
.GetHistory(Router4DHistory.GoBack)
|
||||
.Render
|
||||
);
|
||||
|
||||
if Assigned(FAnimation) then
|
||||
FAnimation(Router4DHistory.MainRouter);
|
||||
end;
|
||||
function TRouter4DLink.IndexLink(aPatch: String): iRouter4DLink;
|
||||
begin
|
||||
Result := Self;
|
||||
@ -166,6 +190,7 @@ begin
|
||||
.MainRouter
|
||||
.AddObject(
|
||||
Router4DHistory
|
||||
.addCacheHistory(aPatch)
|
||||
.GetHistory(aPatch)
|
||||
.Render
|
||||
);
|
||||
@ -188,6 +213,7 @@ begin
|
||||
.MainRouter
|
||||
.AddObject(
|
||||
Router4DHistory
|
||||
.addCacheHistory(aPatch)
|
||||
.GetHistory(aPatch)
|
||||
.Render
|
||||
);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user