alter repo

This commit is contained in:
alepmedeiros 2021-03-02 13:50:22 -03:00
parent bd3bdfedd2
commit b984541d5f
60 changed files with 5219 additions and 190 deletions

2
.gitignore vendored
View File

@ -66,4 +66,4 @@ __recovery/
*.stat *.stat
# Boss dependency manager vendor folder https://github.com/HashLoad/boss # Boss dependency manager vendor folder https://github.com/HashLoad/boss
modules/ modules/

72
ProjectGroup1.groupproj Normal file
View File

@ -0,0 +1,72 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{7038A3EC-BD85-4AA8-B65E-783D12D02F7F}</ProjectGuid>
</PropertyGroup>
<ItemGroup>
<Projects Include="Router4Delphi.dproj">
<Dependencies/>
</Projects>
<Projects Include="Samples\VCL\Router.dproj">
<Dependencies/>
</Projects>
<Projects Include="Samples\FMX\SimpleDemo\SimpleDemo.dproj">
<Dependencies/>
</Projects>
<Projects Include="Samples\FMX\Demo\Router4DelphiDemo.dproj">
<Dependencies/>
</Projects>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Default.Personality.12</Borland.Personality>
<Borland.ProjectType/>
<BorlandProject>
<Default.Personality/>
</BorlandProject>
</ProjectExtensions>
<Target Name="Router4Delphi">
<MSBuild Projects="Router4Delphi.dproj"/>
</Target>
<Target Name="Router4Delphi:Clean">
<MSBuild Projects="Router4Delphi.dproj" Targets="Clean"/>
</Target>
<Target Name="Router4Delphi:Make">
<MSBuild Projects="Router4Delphi.dproj" Targets="Make"/>
</Target>
<Target Name="Router">
<MSBuild Projects="Samples\VCL\Router.dproj"/>
</Target>
<Target Name="Router:Clean">
<MSBuild Projects="Samples\VCL\Router.dproj" Targets="Clean"/>
</Target>
<Target Name="Router:Make">
<MSBuild Projects="Samples\VCL\Router.dproj" Targets="Make"/>
</Target>
<Target Name="SimpleDemo">
<MSBuild Projects="Samples\FMX\SimpleDemo\SimpleDemo.dproj"/>
</Target>
<Target Name="SimpleDemo:Clean">
<MSBuild Projects="Samples\FMX\SimpleDemo\SimpleDemo.dproj" Targets="Clean"/>
</Target>
<Target Name="SimpleDemo:Make">
<MSBuild Projects="Samples\FMX\SimpleDemo\SimpleDemo.dproj" Targets="Make"/>
</Target>
<Target Name="Router4DelphiDemo">
<MSBuild Projects="Samples\FMX\Demo\Router4DelphiDemo.dproj"/>
</Target>
<Target Name="Router4DelphiDemo:Clean">
<MSBuild Projects="Samples\FMX\Demo\Router4DelphiDemo.dproj" Targets="Clean"/>
</Target>
<Target Name="Router4DelphiDemo:Make">
<MSBuild Projects="Samples\FMX\Demo\Router4DelphiDemo.dproj" Targets="Make"/>
</Target>
<Target Name="Build">
<CallTarget Targets="Router4Delphi;Router;SimpleDemo;Router4DelphiDemo"/>
</Target>
<Target Name="Clean">
<CallTarget Targets="Router4Delphi:Clean;Router:Clean;SimpleDemo:Clean;Router4DelphiDemo:Clean"/>
</Target>
<Target Name="Make">
<CallTarget Targets="Router4Delphi:Make;Router:Make;SimpleDemo:Make;Router4DelphiDemo:Make"/>
</Target>
<Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
</Project>

View File

@ -1,7 +1,7 @@
# Router4Delphi # Router4Delphi
Framework para Criação de Rotas de Telas para FMX Framework para Criação de Rotas de Telas para FMX e VCL
O Router4Delphi tem o objetivo de facilitar a chamada de telas e embed de Layouts em aplicações FMX, reduzindo o acoplamento das telas de dando mais dinâmismo e práticidade na construção de interfaces ricas em Delphi O Router4Delphi tem o objetivo de facilitar a chamada de telas e embed de Layouts em aplicações FMX, e Panels em aplicações VCL, reduzindo o acoplamento das telas de dando mais dinâmismo e práticidade na construção de interfaces ricas em Delphi
## Instalação ## Instalação
@ -13,14 +13,16 @@ Para utilizar o Router4Delphi para criar suas rotas, você deve realizar a uses
## Criação de uma Tela para Roteamento ## Criação de uma Tela para Roteamento
Para que o sistema de Rotas funcione você deve criar um novo formulário FMX e Implementar a Interface iRouter4DComponent ela pertence a unit Router4D.Interfaces portanto a mesma deve ser incluida nas suas Units. Para que o sistema de Rotas funcione você deve criar um novo formulário FMX ou VCL e Implementar a Interface iRouter4DComponent ela pertence a unit Router4D.Interfaces portanto a mesma deve ser incluida nas suas Units.
Toda a construção das telas baseadas em rotas utilizar TLayouts para embedar as chamadas das telas, dessa forma é preciso que sua nova tela tenha um TLayout principal e todos os demais componentes devem ser incluídos dentro desse layout. Toda a construção das telas baseadas em rotas utilizar TLayouts e TPanels para embedar as chamadas das telas, dessa forma é preciso que sua nova tela tenha um TLayout ou um TPanel principal e todos os demais componentes devem ser incluídos dentro desse layout ou panel.
A Implementação da Interface iRouter4DComponent requer a declaração de dois métodos ( Render e UnRender ), o Render é chamado sempre que uma rota aciona a tela, e o UnRender sempre que ela saí de exibição. A Implementação da Interface iRouter4DComponent requer a declaração de dois métodos ( Render e UnRender ), o Render é chamado sempre que uma rota aciona a tela, e o UnRender sempre que ela saí de exibição.
Abaixo o Código de uma tela simples implementando a interface iRouter4DComponent e pronta para ser utilizada. Abaixo o Código de uma tela simples implementando a interface iRouter4DComponent e pronta para ser utilizada.
#### Exemplo em FMX
Crie um Novo Formulario na sua Aplicação, inclua nele um Layout alinhado AlClient e implemente os métodos como abaixo. Crie um Novo Formulario na sua Aplicação, inclua nele um Layout alinhado AlClient e implemente os métodos como abaixo.
```delphi ```delphi
@ -357,4 +359,3 @@ TRouter4D
.ItemHeigth(60) .ItemHeigth(60)
.RenderToListBox; .RenderToListBox;
``` ```

View File

@ -36,22 +36,24 @@ requires
DbxCommonDriver, DbxCommonDriver,
FireDAC, FireDAC,
FireDACCommonDriver, FireDACCommonDriver,
FireDACCommon; FireDACCommon,
vcl;
contains contains
DuckListU in 'src\DuckListU.pas',
EventBus.Core in 'src\EventBus.Core.pas',
EventBus.Subscribers in 'src\EventBus.Subscribers.pas',
ObjectsMappers in 'src\ObjectsMappers.pas',
Router4D.History in 'src\Router4D.History.pas', Router4D.History in 'src\Router4D.History.pas',
Router4D.Interfaces in 'src\Router4D.Interfaces.pas', Router4D.Interfaces in 'src\Router4D.Interfaces.pas',
Router4D.Link in 'src\Router4D.Link.pas', Router4D.Link in 'src\Router4D.Link.pas',
Router4D in 'src\Router4D.pas', Router4D in 'src\Router4D.pas',
Router4D.Props in 'src\Router4D.Props.pas', Router4D.Props in 'src\Router4D.Props.pas',
Router4D.Render in 'src\Router4D.Render.pas',
Router4D.Switch in 'src\Router4D.Switch.pas', Router4D.Switch in 'src\Router4D.Switch.pas',
Router4D.Utils in 'src\Router4D.Utils.pas', Router4D.Utils in 'src\Router4D.Utils.pas',
DuckListU in 'src\DuckListU.pas',
EventBus.Core in 'src\EventBus.Core.pas',
EventBus.Subscribers in 'src\EventBus.Subscribers.pas',
ObjectsMappers in 'src\ObjectsMappers.pas',
RTTIUtilsU in 'src\RTTIUtilsU.pas', RTTIUtilsU in 'src\RTTIUtilsU.pas',
Router4D.Sidebar in 'src\Router4D.Sidebar.pas', Router4D.Helper in 'src\Router4D.Helper.pas',
Router4D.Render in 'src\Router4D.Render.pas'; Router4D.Sidebar in 'src\Router4D.Sidebar.pas';
end. end.

View File

@ -1,8 +1,8 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<ProjectGuid>{3810FA8C-A44A-4F47-AEB3-80819D3485B2}</ProjectGuid> <ProjectGuid>{AC59E0D2-C9EA-4482-B4D9-D663FB283EB2}</ProjectGuid>
<MainSource>Router4Delphi.dpk</MainSource> <MainSource>Router4Delphi.dpk</MainSource>
<ProjectVersion>19.0</ProjectVersion> <ProjectVersion>18.8</ProjectVersion>
<FrameworkType>FMX</FrameworkType> <FrameworkType>FMX</FrameworkType>
<Base>True</Base> <Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config> <Config Condition="'$(Config)'==''">Debug</Config>
@ -103,20 +103,22 @@
<DCCReference Include="FireDAC.dcp"/> <DCCReference Include="FireDAC.dcp"/>
<DCCReference Include="FireDACCommonDriver.dcp"/> <DCCReference Include="FireDACCommonDriver.dcp"/>
<DCCReference Include="FireDACCommon.dcp"/> <DCCReference Include="FireDACCommon.dcp"/>
<DCCReference Include="vcl.dcp"/>
<DCCReference Include="src\DuckListU.pas"/>
<DCCReference Include="src\EventBus.Core.pas"/>
<DCCReference Include="src\EventBus.Subscribers.pas"/>
<DCCReference Include="src\ObjectsMappers.pas"/>
<DCCReference Include="src\Router4D.History.pas"/> <DCCReference Include="src\Router4D.History.pas"/>
<DCCReference Include="src\Router4D.Interfaces.pas"/> <DCCReference Include="src\Router4D.Interfaces.pas"/>
<DCCReference Include="src\Router4D.Link.pas"/> <DCCReference Include="src\Router4D.Link.pas"/>
<DCCReference Include="src\Router4D.pas"/> <DCCReference Include="src\Router4D.pas"/>
<DCCReference Include="src\Router4D.Props.pas"/> <DCCReference Include="src\Router4D.Props.pas"/>
<DCCReference Include="src\Router4D.Render.pas"/>
<DCCReference Include="src\Router4D.Switch.pas"/> <DCCReference Include="src\Router4D.Switch.pas"/>
<DCCReference Include="src\Router4D.Utils.pas"/> <DCCReference Include="src\Router4D.Utils.pas"/>
<DCCReference Include="src\DuckListU.pas"/>
<DCCReference Include="src\EventBus.Core.pas"/>
<DCCReference Include="src\EventBus.Subscribers.pas"/>
<DCCReference Include="src\ObjectsMappers.pas"/>
<DCCReference Include="src\RTTIUtilsU.pas"/> <DCCReference Include="src\RTTIUtilsU.pas"/>
<DCCReference Include="src\Router4D.Helper.pas"/>
<DCCReference Include="src\Router4D.Sidebar.pas"/> <DCCReference Include="src\Router4D.Sidebar.pas"/>
<DCCReference Include="src\Router4D.Render.pas"/>
<BuildConfiguration Include="Release"> <BuildConfiguration Include="Release">
<Key>Cfg_2</Key> <Key>Cfg_2</Key>
<CfgParent>Base</CfgParent> <CfgParent>Base</CfgParent>
@ -138,13 +140,6 @@
<Source Name="MainSource">Router4Delphi.dpk</Source> <Source Name="MainSource">Router4Delphi.dpk</Source>
</Source> </Source>
</Delphi.Personality> </Delphi.Personality>
<Platforms>
<Platform value="Android">False</Platform>
<Platform value="Android64">False</Platform>
<Platform value="Linux64">False</Platform>
<Platform value="Win32">True</Platform>
<Platform value="Win64">False</Platform>
</Platforms>
<Deployment Version="3"> <Deployment Version="3">
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule"> <DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
<Platform Name="OSX32"> <Platform Name="OSX32">
@ -161,7 +156,7 @@
<Overwrite>true</Overwrite> <Overwrite>true</Overwrite>
</Platform> </Platform>
</DeployFile> </DeployFile>
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\Router4Delphi.bpl" Configuration="Debug" Class="ProjectOutput"> <DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\Router4Delphi.bpl" Configuration="Debug" Class="ProjectOutput">
<Platform Name="Win32"> <Platform Name="Win32">
<RemoteName>Router4Delphi.bpl</RemoteName> <RemoteName>Router4Delphi.bpl</RemoteName>
<Overwrite>true</Overwrite> <Overwrite>true</Overwrite>
@ -533,63 +528,267 @@
<Operation>0</Operation> <Operation>0</Operation>
</Platform> </Platform>
</DeployClass> </DeployClass>
<DeployClass Name="iPad_Launch2x"> <DeployClass Name="iPad_Launch1024x768">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64"> <Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
<Platform Name="iOSSimulator"> <Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
</DeployClass> </DeployClass>
<DeployClass Name="iPad_LaunchDark2x"> <DeployClass Name="iPad_Launch1536x2048">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64"> <Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
<Platform Name="iOSSimulator"> <Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
</DeployClass> </DeployClass>
<DeployClass Name="iPhone_Launch2x"> <DeployClass Name="iPad_Launch1668">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64"> <Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
<Platform Name="iOSSimulator"> <Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
</DeployClass> </DeployClass>
<DeployClass Name="iPhone_Launch3x"> <DeployClass Name="iPad_Launch1668x2388">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64"> <Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
<Platform Name="iOSSimulator"> <Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
</DeployClass> </DeployClass>
<DeployClass Name="iPhone_LaunchDark2x"> <DeployClass Name="iPad_Launch2048x1536">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64"> <Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
<Platform Name="iOSSimulator"> <Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
</DeployClass> </DeployClass>
<DeployClass Name="iPhone_LaunchDark3x"> <DeployClass Name="iPad_Launch2048x2732">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch2224">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch2388x1668">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch2732x2048">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch768x1024">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch1125">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch1136x640">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch1242">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch1242x2688">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch1334">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch1792">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch2208">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch2436">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch2688x1242">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch320">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch640">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch640x1136">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch750">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch828">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64"> <Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
<Platform Name="iOSSimulator"> <Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
</DeployClass> </DeployClass>
@ -614,7 +813,6 @@
<DeployClass Name="ProjectiOSDeviceResourceRules"/> <DeployClass Name="ProjectiOSDeviceResourceRules"/>
<DeployClass Name="ProjectiOSEntitlements"/> <DeployClass Name="ProjectiOSEntitlements"/>
<DeployClass Name="ProjectiOSInfoPList"/> <DeployClass Name="ProjectiOSInfoPList"/>
<DeployClass Name="ProjectiOSLaunchScreen"/>
<DeployClass Name="ProjectiOSResource"> <DeployClass Name="ProjectiOSResource">
<Platform Name="iOSDevice32"> <Platform Name="iOSDevice32">
<Operation>1</Operation> <Operation>1</Operation>
@ -715,6 +913,12 @@
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/> <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/> <ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
</Deployment> </Deployment>
<Platforms>
<Platform value="Android">False</Platform>
<Platform value="Android64">False</Platform>
<Platform value="Win32">True</Platform>
<Platform value="Win64">False</Platform>
</Platforms>
</BorlandProject> </BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion> <ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions> </ProjectExtensions>

View File

@ -1,32 +1,2 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<BorlandProject> <BorlandProject/>
<Transactions>
<Transaction>2020/07/13 22:38:51.000.784,=rtl.dcp</Transaction>
<Transaction>2020/07/13 22:38:58.000.612,C:\Users\thuli\Documents\Embarcadero\Studio\Projects\Router4Delphi.dproj=C:\Users\thuli\Documents\Embarcadero\Studio\Projects\Package1.dproj</Transaction>
<Transaction>2020/07/13 22:39:07.000.751,D:\Projetos\Frameworks\Router4Delphi\Router4Delphi.dproj=C:\Users\thuli\Documents\Embarcadero\Studio\Projects\Router4Delphi.dproj</Transaction>
<Transaction>2020/07/13 22:39:18.000.950,=D:\Projetos\Frameworks\Router4Delphi\src\Router4D.pas</Transaction>
<Transaction>2020/07/13 22:39:18.000.846,=D:\Projetos\Frameworks\Router4Delphi\src\Router4D.History.pas</Transaction>
<Transaction>2020/07/13 22:39:18.000.879,=D:\Projetos\Frameworks\Router4Delphi\src\Router4D.Interfaces.pas</Transaction>
<Transaction>2020/07/13 22:39:18.000.985,=D:\Projetos\Frameworks\Router4Delphi\src\Router4D.Props.pas</Transaction>
<Transaction>2020/07/13 22:39:18.000.922,=D:\Projetos\Frameworks\Router4Delphi\src\Router4D.Link.pas</Transaction>
<Transaction>2020/07/13 22:39:19.000.075,=D:\Projetos\Frameworks\Router4Delphi\src\Router4D.Utils.pas</Transaction>
<Transaction>2020/07/13 22:39:19.000.046,=D:\Projetos\Frameworks\Router4Delphi\src\Router4D.Switch.pas</Transaction>
<Transaction>2020/07/13 22:39:42.000.878,=D:\Projetos\Frameworks\Router4Delphi\src\EventBus.Core.pas</Transaction>
<Transaction>2020/07/13 22:39:42.000.911,=D:\Projetos\Frameworks\Router4Delphi\src\EventBus.Subscribers.pas</Transaction>
<Transaction>2020/07/13 22:39:42.000.975,=D:\Projetos\Frameworks\Router4Delphi\src\ObjectsMappers.pas</Transaction>
<Transaction>2020/07/13 22:39:42.000.838,=D:\Projetos\Frameworks\Router4Delphi\src\DuckListU.pas</Transaction>
<Transaction>2020/07/13 22:39:43.000.018,=D:\Projetos\Frameworks\Router4Delphi\src\RTTIUtilsU.pas</Transaction>
<Transaction>2020/07/13 22:39:54.000.821,=FireDAC.dcp</Transaction>
<Transaction>2020/07/13 22:39:54.000.880,=FireDACCommonDriver.dcp</Transaction>
<Transaction>2020/07/13 22:39:54.000.735,=dbrtl.dcp</Transaction>
<Transaction>2020/07/13 22:39:54.000.681,=soaprtl.dcp</Transaction>
<Transaction>2020/07/13 22:39:54.000.780,=DbxCommonDriver.dcp</Transaction>
<Transaction>2020/07/13 22:39:54.000.598,=xmlrtl.dcp</Transaction>
<Transaction>2020/07/13 22:39:54.000.644,=fmx.dcp</Transaction>
<Transaction>2020/07/13 22:39:54.000.918,=FireDACCommon.dcp</Transaction>
<Transaction>2020/07/14 20:23:48.000.027,=D:\Projetos\Frameworks\Router4Delphi\Unit1.pas</Transaction>
<Transaction>2020/07/14 20:23:58.000.724,D:\Projetos\Frameworks\Router4Delphi\Unit1.pas=D:\Projetos\Frameworks\Router4Delphi\src\Router4D.Sidebar.pas</Transaction>
<Transaction>2020/07/14 20:52:39.000.123,=D:\Projetos\Frameworks\Router4Delphi\Unit1.pas</Transaction>
<Transaction>2020/07/14 20:52:54.000.533,D:\Projetos\Frameworks\Router4Delphi\Unit1.pas=D:\Projetos\Frameworks\Router4Delphi\src\Router4D.Render.pas</Transaction>
</Transactions>
</BorlandProject>

Binary file not shown.

View File

@ -0,0 +1,11 @@
object Form2: TForm2
Left = 0
Top = 0
Caption = 'Form2'
ClientHeight = 537
ClientWidth = 921
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
end

View File

@ -0,0 +1,24 @@
unit Router4DelphiDemo.View.Principal;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs;
type
TForm2 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.fmx}
end.

View File

@ -0,0 +1,19 @@
program Router4DelphiDemo;
uses
System.StartUpCopy,
FMX.Forms,
Router4DelphiDemo.View.Principal in 'Views\Router4DelphiDemo.View.Principal.pas' {ViewPrincipal},
Router4DelphiDemo.Views.Layouts.Main in 'Views\Layouts\Router4DelphiDemo.Views.Layouts.Main.pas' {MainLayout},
Router4DelphiDemo.View.Components.Sidebar in 'Views\Components\Router4DelphiDemo.View.Components.Sidebar.pas' {ComponentSideBar},
Router4DelphiDemo.View.Router in 'Views\Routers\Router4DelphiDemo.View.Router.pas',
Router4DelphiDemo.View.Pages.Index in 'Views\Pages\Router4DelphiDemo.View.Pages.Index.pas' {PageIndex},
Router4DelphiDemo.View.Pages.Cadastros in 'Views\Pages\Router4DelphiDemo.View.Pages.Cadastros.pas' {PageCadastros};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TViewPrincipal, ViewPrincipal);
Application.Run;
end.

View File

@ -0,0 +1,910 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{4B24F7C2-9744-436B-9B23-4088395571E2}</ProjectGuid>
<ProjectVersion>19.0</ProjectVersion>
<FrameworkType>FMX</FrameworkType>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>32787</TargetedPlatforms>
<AppType>Application</AppType>
<MainSource>Router4DelphiDemo.dpr</MainSource>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
<Base_Android>true</Base_Android>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
<Base_Android64>true</Base_Android64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
<Base_Win64>true</Base_Win64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
<Cfg_1_Win32>true</Cfg_1_Win32>
<CfgParent>Cfg_1</CfgParent>
<Cfg_1>true</Cfg_1>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
<Cfg_1_Win64>true</Cfg_1_Win64>
<CfgParent>Cfg_1</CfgParent>
<Cfg_1>true</Cfg_1>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
<Cfg_2_Win32>true</Cfg_2_Win32>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win64)'!=''">
<Cfg_2_Win64>true</Cfg_2_Win64>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
<DCC_E>false</DCC_E>
<DCC_N>false</DCC_N>
<DCC_S>false</DCC_S>
<DCC_F>false</DCC_F>
<DCC_K>false</DCC_K>
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
<AUP_ACCESS_COARSE_LOCATION>true</AUP_ACCESS_COARSE_LOCATION>
<AUP_ACCESS_FINE_LOCATION>true</AUP_ACCESS_FINE_LOCATION>
<AUP_CALL_PHONE>true</AUP_CALL_PHONE>
<AUP_CAMERA>true</AUP_CAMERA>
<AUP_INTERNET>true</AUP_INTERNET>
<AUP_READ_EXTERNAL_STORAGE>true</AUP_READ_EXTERNAL_STORAGE>
<AUP_WRITE_EXTERNAL_STORAGE>true</AUP_WRITE_EXTERNAL_STORAGE>
<AUP_READ_PHONE_STATE>true</AUP_READ_PHONE_STATE>
<Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
<Icns_MainIcns>$(BDS)\bin\delphi_PROJECTICNS.icns</Icns_MainIcns>
<SanitizedProjectName>Router4DelphiDemo</SanitizedProjectName>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Android)'!=''">
<DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<Android_LauncherIcon36>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png</Android_LauncherIcon36>
<Android_LauncherIcon48>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png</Android_LauncherIcon48>
<Android_LauncherIcon72>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png</Android_LauncherIcon72>
<Android_LauncherIcon96>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png</Android_LauncherIcon96>
<Android_LauncherIcon144>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png</Android_LauncherIcon144>
<Android_SplashImage426>$(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png</Android_SplashImage426>
<Android_SplashImage470>$(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png</Android_SplashImage470>
<Android_SplashImage640>$(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png</Android_SplashImage640>
<Android_SplashImage960>$(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png</Android_SplashImage960>
<Android_NotificationIcon24>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png</Android_NotificationIcon24>
<Android_NotificationIcon36>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png</Android_NotificationIcon36>
<Android_NotificationIcon48>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png</Android_NotificationIcon48>
<Android_NotificationIcon72>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png</Android_NotificationIcon72>
<Android_NotificationIcon96>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png</Android_NotificationIcon96>
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar</EnabledSysJars>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Android64)'!=''">
<DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<Android_LauncherIcon36>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png</Android_LauncherIcon36>
<Android_LauncherIcon48>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png</Android_LauncherIcon48>
<Android_LauncherIcon72>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png</Android_LauncherIcon72>
<Android_LauncherIcon96>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png</Android_LauncherIcon96>
<Android_LauncherIcon144>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png</Android_LauncherIcon144>
<Android_SplashImage426>$(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png</Android_SplashImage426>
<Android_SplashImage470>$(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png</Android_SplashImage470>
<Android_SplashImage640>$(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png</Android_SplashImage640>
<Android_SplashImage960>$(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png</Android_SplashImage960>
<Android_NotificationIcon24>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png</Android_NotificationIcon24>
<Android_NotificationIcon36>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png</Android_NotificationIcon36>
<Android_NotificationIcon48>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png</Android_NotificationIcon48>
<Android_NotificationIcon72>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png</Android_NotificationIcon72>
<Android_NotificationIcon96>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png</Android_NotificationIcon96>
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar</EnabledSysJars>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_UsePackage>DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;bindcompvclsmp;emsclientfiredac;tethering;svnui;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;svn;DBXOracleDriver;inetdb;emsedge;fmx;FireDACIBDriver;fmxdae;vcledge;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;IWBootstrapD104;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;Intraweb_15_D10_4;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;TBGWebCharts;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;IWBootstrap4D104;DBXSybaseASADriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<VerInfo_Locale>1033</VerInfo_Locale>
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
<UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
<UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win64)'!=''">
<DCC_UsePackage>DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;bindcompvclsmp;emsclientfiredac;tethering;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;DBXOracleDriver;inetdb;emsedge;fmx;FireDACIBDriver;fmxdae;vcledge;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<VerInfo_Locale>1033</VerInfo_Locale>
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
<UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
<UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
<DCC_DebugDCUs>true</DCC_DebugDCUs>
<DCC_Optimize>false</DCC_Optimize>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
<DCC_RemoteDebug>true</DCC_RemoteDebug>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
<DCC_RemoteDebug>false</DCC_RemoteDebug>
<AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
<AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Locale>1033</VerInfo_Locale>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
<AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
<AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
<DCC_DebugInformation>0</DCC_DebugInformation>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
<AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
<AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
<AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
<AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="Views\Router4DelphiDemo.View.Principal.pas">
<Form>ViewPrincipal</Form>
<FormType>fmx</FormType>
</DCCReference>
<DCCReference Include="Views\Layouts\Router4DelphiDemo.Views.Layouts.Main.pas">
<Form>MainLayout</Form>
<FormType>fmx</FormType>
</DCCReference>
<DCCReference Include="Views\Components\Router4DelphiDemo.View.Components.Sidebar.pas">
<Form>ComponentSideBar</Form>
<FormType>fmx</FormType>
</DCCReference>
<DCCReference Include="Views\Routers\Router4DelphiDemo.View.Router.pas"/>
<DCCReference Include="Views\Pages\Router4DelphiDemo.View.Pages.Index.pas">
<Form>PageIndex</Form>
<FormType>fmx</FormType>
</DCCReference>
<DCCReference Include="Views\Pages\Router4DelphiDemo.View.Pages.Cadastros.pas">
<Form>PageCadastros</Form>
<FormType>fmx</FormType>
</DCCReference>
<BuildConfiguration Include="Release">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>Application</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality>
<Source>
<Source Name="MainSource">Router4DelphiDemo.dpr</Source>
</Source>
<Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dclofficexp270.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
</Excluded_Packages>
</Delphi.Personality>
<Platforms>
<Platform value="Android">True</Platform>
<Platform value="Android64">True</Platform>
<Platform value="iOSDevice32">False</Platform>
<Platform value="iOSDevice64">False</Platform>
<Platform value="iOSSimulator">False</Platform>
<Platform value="OSX32">False</Platform>
<Platform value="OSX64">False</Platform>
<Platform value="Win32">True</Platform>
<Platform value="Win64">True</Platform>
</Platforms>
<Deployment Version="3">
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
<Platform Name="OSX32">
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
<Platform Name="iOSSimulator">
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
<Platform Name="iOSSimulator">
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployFile LocalName="Win32\Debug\Router4DelphiDemo.exe" Configuration="Debug" Class="ProjectOutput">
<Platform Name="Win32">
<RemoteName>Router4DelphiDemo.exe</RemoteName>
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployClass Name="AdditionalDebugSymbols">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidClassesDexFile">
<Platform Name="Android">
<RemoteDir>classes</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>classes</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidFileProvider">
<Platform Name="Android">
<RemoteDir>res\xml</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\xml</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidGDBServer">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidLibnativeArmeabiFile">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>library\lib\armeabi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidLibnativeArmeabiv7aFile">
<Platform Name="Android64">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidLibnativeMipsFile">
<Platform Name="Android">
<RemoteDir>library\lib\mips</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>library\lib\mips</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidServiceOutput">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>library\lib\arm64-v8a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidServiceOutput_Android32">
<Platform Name="Android64">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashImageDef">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashStyles">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashStylesV21">
<Platform Name="Android">
<RemoteDir>res\values-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_Colors">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_DefaultAppIcon">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon144">
<Platform Name="Android">
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon36">
<Platform Name="Android">
<RemoteDir>res\drawable-ldpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-ldpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon48">
<Platform Name="Android">
<RemoteDir>res\drawable-mdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-mdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon72">
<Platform Name="Android">
<RemoteDir>res\drawable-hdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-hdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon96">
<Platform Name="Android">
<RemoteDir>res\drawable-xhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon24">
<Platform Name="Android">
<RemoteDir>res\drawable-mdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-mdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon36">
<Platform Name="Android">
<RemoteDir>res\drawable-hdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-hdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon48">
<Platform Name="Android">
<RemoteDir>res\drawable-xhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon72">
<Platform Name="Android">
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon96">
<Platform Name="Android">
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage426">
<Platform Name="Android">
<RemoteDir>res\drawable-small</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-small</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage470">
<Platform Name="Android">
<RemoteDir>res\drawable-normal</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-normal</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage640">
<Platform Name="Android">
<RemoteDir>res\drawable-large</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-large</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage960">
<Platform Name="Android">
<RemoteDir>res\drawable-xlarge</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xlarge</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_Strings">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DebugSymbols">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DependencyFramework">
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.framework</Extensions>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.framework</Extensions>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DependencyModule">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.dll;.bpl</Extensions>
</Platform>
</DeployClass>
<DeployClass Required="true" Name="DependencyPackage">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.bpl</Extensions>
</Platform>
</DeployClass>
<DeployClass Name="File">
<Platform Name="Android">
<Operation>0</Operation>
</Platform>
<Platform Name="Android64">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>0</Operation>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\Resources\StartUp\</RemoteDir>
<Operation>0</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\Resources\StartUp\</RemoteDir>
<Operation>0</Operation>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch2x">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_LaunchDark2x">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch2x">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch3x">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_LaunchDark2x">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_LaunchDark3x">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectAndroidManifest">
<Platform Name="Android">
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSDeviceDebug">
<Platform Name="iOSDevice32">
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSDeviceResourceRules">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSEntitlements">
<Platform Name="iOSDevice32">
<RemoteDir>..\</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<RemoteDir>..\</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSInfoPList">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSLaunchScreen">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen</RemoteDir>
<Operation>64</Operation>
</Platform>
<Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen</RemoteDir>
<Operation>64</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSResource">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXDebug">
<Platform Name="OSX64">
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXEntitlements">
<Platform Name="OSX32">
<RemoteDir>..\</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>..\</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXInfoPList">
<Platform Name="OSX32">
<RemoteDir>Contents</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXResource">
<Platform Name="OSX32">
<RemoteDir>Contents\Resources</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\Resources</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Required="true" Name="ProjectOutput">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>library\lib\arm64-v8a</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="Linux64">
<Operation>1</Operation>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOutput_Android32">
<Platform Name="Android64">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectUWPManifest">
<Platform Name="Win32">
<Operation>1</Operation>
</Platform>
<Platform Name="Win64">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="UWP_DelphiLogo150">
<Platform Name="Win32">
<RemoteDir>Assets</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win64">
<RemoteDir>Assets</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="UWP_DelphiLogo44">
<Platform Name="Win32">
<RemoteDir>Assets</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win64">
<RemoteDir>Assets</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
</Deployment>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
<Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
</Project>

Binary file not shown.

View File

@ -0,0 +1,60 @@
object ComponentSideBar: TComponentSideBar
Left = 0
Top = 0
Caption = 'Form4'
ClientHeight = 480
ClientWidth = 640
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object Layout1: TLayout
Align = Client
Size.Width = 640.000000000000000000
Size.Height = 480.000000000000000000
Size.PlatformDefault = False
object Rectangle1: TRectangle
Align = Contents
Fill.Color = xFF36414A
Size.Width = 640.000000000000000000
Size.Height = 480.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
object ListBox1: TListBox
Align = Client
Size.Width = 640.000000000000000000
Size.Height = 480.000000000000000000
Size.PlatformDefault = False
StyleLookup = 'transparentlistboxstyle'
OnClick = ListBox1Click
DisableFocusEffect = True
ItemHeight = 60.000000000000000000
DefaultItemStyles.ItemStyle = ''
DefaultItemStyles.GroupHeaderStyle = ''
DefaultItemStyles.GroupFooterStyle = ''
Viewport.Width = 640.000000000000000000
Viewport.Height = 480.000000000000000000
object ListBoxItem1: TListBoxItem
TextSettings.Font.Size = 15.000000000000000000
TextSettings.FontColor = claWhite
StyledSettings = [Family, Style, Other]
Padding.Left = 15.000000000000000000
Size.Width = 640.000000000000000000
Size.Height = 60.000000000000000000
Size.PlatformDefault = False
Text = 'Home'
end
object ListBoxItem2: TListBoxItem
TextSettings.Font.Size = 15.000000000000000000
TextSettings.FontColor = claWhite
StyledSettings = [Family, Style, Other]
Position.Y = 60.000000000000000000
Size.Width = 640.000000000000000000
Size.Height = 60.000000000000000000
Size.PlatformDefault = False
Text = 'Cadastros'
end
end
end
end

View File

@ -0,0 +1,39 @@
unit Router4DelphiDemo.View.Components.Sidebar;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts,
FMX.ListBox, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects;
type
TComponentSideBar = class(TForm)
Layout1: TLayout;
ListBox1: TListBox;
ListBoxItem1: TListBoxItem;
ListBoxItem2: TListBoxItem;
Rectangle1: TRectangle;
procedure ListBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ComponentSideBar: TComponentSideBar;
implementation
uses
Router4D;
{$R *.fmx}
procedure TComponentSideBar.ListBox1Click(Sender: TObject);
begin
TRouter4D.Link.&To(ListBox1.Items[ListBox1.ItemIndex])
end;
end.

View File

@ -0,0 +1,56 @@
object MainLayout: TMainLayout
Left = 0
Top = 0
Caption = 'Form3'
ClientHeight = 577
ClientWidth = 860
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object LayoutIndex: TLayout
Align = Contents
Size.Width = 860.000000000000000000
Size.Height = 577.000000000000000000
Size.PlatformDefault = False
object Layout1: TLayout
Align = Top
Size.Width = 860.000000000000000000
Size.Height = 65.000000000000000000
Size.PlatformDefault = False
object Rectangle1: TRectangle
Align = Contents
Fill.Color = xFF2D2F32
Size.Width = 860.000000000000000000
Size.Height = 65.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
object Label1: TLabel
Align = Left
StyledSettings = [Family, Style]
Margins.Left = 15.000000000000000000
Position.X = 15.000000000000000000
Size.Width = 554.000000000000000000
Size.Height = 65.000000000000000000
Size.PlatformDefault = False
TextSettings.Font.Size = 25.000000000000000000
TextSettings.FontColor = claWhite
Text = 'Layout Principal'
end
end
object Layout2: TLayout
Align = Left
Position.Y = 65.000000000000000000
Size.Width = 225.000000000000000000
Size.Height = 512.000000000000000000
Size.PlatformDefault = False
end
object Layout3: TLayout
Align = Client
Size.Width = 635.000000000000000000
Size.Height = 512.000000000000000000
Size.PlatformDefault = False
end
end
end

View File

@ -0,0 +1,61 @@
unit Router4DelphiDemo.Views.Layouts.Main;
interface
uses
System.SysUtils,
System.Types,
System.UITypes,
System.Classes,
System.Variants,
FMX.Types,
FMX.Controls,
FMX.Forms,
FMX.Graphics,
FMX.Dialogs,
FMX.Layouts,
FMX.Controls.Presentation,
FMX.StdCtrls,
Router4D.Interfaces, FMX.Objects;
type
TMainLayout = class(TForm, iRouter4DComponent)
Layout1: TLayout;
Layout2: TLayout;
Layout3: TLayout;
Label1: TLabel;
LayoutIndex: TLayout;
Rectangle1: TRectangle;
private
{ Private declarations }
public
{ Public declarations }
function Render : TFMXObject;
end;
var
MainLayout: TMainLayout;
implementation
uses
Router4DelphiDemo.View.Pages.Index,
Router4D,
Router4DelphiDemo.View.Components.Sidebar;
{$R *.fmx}
{ TMainLayout }
function TMainLayout.Render: TFMXObject;
begin
Result := LayoutIndex;
TRouter4D.Render<TPageIndex>.SetElement(Layout3);
Layout2.RemoveObject(0);
Layout2.AddObject(
TComponentSideBar.Create(Self).Layout1
)
end;
end.

View File

@ -0,0 +1,27 @@
object PageCadastros: TPageCadastros
Left = 0
Top = 0
Caption = 'Form2'
ClientHeight = 480
ClientWidth = 640
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object Layout1: TLayout
Align = Client
Size.Width = 640.000000000000000000
Size.Height = 480.000000000000000000
Size.PlatformDefault = False
object Label1: TLabel
Align = Client
StyledSettings = [Family, Style, FontColor]
Size.Width = 640.000000000000000000
Size.Height = 480.000000000000000000
Size.PlatformDefault = False
TextSettings.Font.Size = 30.000000000000000000
TextSettings.HorzAlign = Center
Text = 'Cadastros'
end
end
end

View File

@ -0,0 +1,36 @@
unit Router4DelphiDemo.View.Pages.Cadastros;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.Layouts,
Router4D.Interfaces;
type
TPageCadastros = class(TForm, iRouter4DComponent)
Layout1: TLayout;
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
function Render : TFMXObject;
end;
var
PageCadastros: TPageCadastros;
implementation
{$R *.fmx}
{ TForm2 }
function TPageCadastros.Render: TFMXObject;
begin
Result := Layout1;
end;
end.

View File

@ -0,0 +1,27 @@
object PageIndex: TPageIndex
Left = 0
Top = 0
Caption = 'Form5'
ClientHeight = 609
ClientWidth = 940
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object Layout1: TLayout
Align = Contents
Size.Width = 940.000000000000000000
Size.Height = 609.000000000000000000
Size.PlatformDefault = False
object Label1: TLabel
Align = Client
StyledSettings = [Family, Style, FontColor]
Size.Width = 940.000000000000000000
Size.Height = 609.000000000000000000
Size.PlatformDefault = False
TextSettings.Font.Size = 30.000000000000000000
TextSettings.HorzAlign = Center
Text = 'Home'
end
end
end

View File

@ -0,0 +1,47 @@
unit Router4DelphiDemo.View.Pages.Index;
interface
uses
System.SysUtils,
System.Types,
System.UITypes,
System.Classes,
System.Variants,
FMX.Types,
FMX.Controls,
FMX.Forms,
FMX.Graphics,
FMX.Dialogs,
FMX.Layouts,
Router4D.Interfaces, FMX.Controls.Presentation, FMX.StdCtrls;
type
TPageIndex = class(TForm, iRouter4DComponent)
Layout1: TLayout;
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
function Render : TFMXObject;
end;
var
PageIndex: TPageIndex;
implementation
uses
Router4D,
Router4DelphiDemo.Views.Layouts.Main;
{$R *.fmx}
function TPageIndex.Render: TFMXObject;
begin
Result := Layout1;
//TRouter4D.Render<TMainLayout>.GetElement(Layout1);
end;
end.

View File

@ -0,0 +1,18 @@
object ViewPrincipal: TViewPrincipal
Left = 0
Top = 0
Caption = 'Form2'
ClientHeight = 612
ClientWidth = 925
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
OnCreate = FormCreate
DesignerMasterStyle = 0
object Layout1: TLayout
Align = Contents
Size.Width = 925.000000000000000000
Size.Height = 612.000000000000000000
Size.PlatformDefault = False
end
end

View File

@ -0,0 +1,36 @@
unit Router4DelphiDemo.View.Principal;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts;
type
TViewPrincipal = class(TForm)
Layout1: TLayout;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ViewPrincipal: TViewPrincipal;
implementation
uses
Router4D,
Router4DelphiDemo.Views.Layouts.Main,
Router4DelphiDemo.View.Router;
{$R *.fmx}
procedure TViewPrincipal.FormCreate(Sender: TObject);
begin
TRouter4D.Render<TMainLayout>.SetElement(Layout1, Layout1);
end;
end.

View File

@ -0,0 +1,45 @@
unit Router4DelphiDemo.View.Router;
interface
type
TRouters = class
private
public
constructor Create;
destructor Destroy; override;
end;
var
Routers : TRouters;
implementation
uses
Router4D,
Router4DelphiDemo.View.Pages.Index,
Router4DelphiDemo.Views.Layouts.Main,
Router4DelphiDemo.View.Pages.Cadastros;
{ TRouters }
constructor TRouters.Create;
begin
TRouter4D.Switch.Router('Home', TPageIndex);
TRouter4D.Switch.Router('Cadastros', TPageCadastros);
TRouter4D.Switch.Router('main', TMainLayout);
end;
destructor TRouters.Destroy;
begin
inherited;
end;
initialization
Routers := TRouters.Create;
finalization
Routers.Free;
end.

View File

@ -0,0 +1,47 @@
object ComponentButton01: TComponentButton01
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 480
ClientWidth = 640
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
OnCreate = FormCreate
DesignerMasterStyle = 0
object Layout1: TLayout
Position.X = 232.000000000000000000
Position.Y = 120.000000000000000000
Size.Width = 121.000000000000000000
Size.Height = 81.000000000000000000
Size.PlatformDefault = False
object Line1: TLine
Align = Bottom
LineType = Bottom
Position.Y = 80.000000000000000000
Size.Width = 121.000000000000000000
Size.Height = 1.000000000000000000
Size.PlatformDefault = False
Stroke.Thickness = 5.000000000000000000
end
object Label1: TLabel
Align = Contents
StyledSettings = [Family, Style, FontColor]
Size.Width = 121.000000000000000000
Size.Height = 81.000000000000000000
Size.PlatformDefault = False
TextSettings.Font.Size = 20.000000000000000000
TextSettings.HorzAlign = Center
Text = 'Button'
end
object SpeedButton1: TSpeedButton
Align = Contents
Opacity = 0.000000000000000000
Size.Width = 121.000000000000000000
Size.Height = 81.000000000000000000
Size.PlatformDefault = False
Text = 'SpeedButton1'
OnClick = SpeedButton1Click
end
end
end

View File

@ -0,0 +1,85 @@
unit SimpleDemo.View.Components.Button01;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects, FMX.Layouts,
Router4D.Interfaces,
Router4D.Props;
type
TComponentButton01 = class(TForm, iRouter4DComponent)
Layout1: TLayout;
Line1: TLine;
Label1: TLabel;
SpeedButton1: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function Render : TFMXObject;
procedure UnRender;
[Subscribe]
procedure Props ( aValue : TProps);
function createButton(aLabel : String) : TFMXObject;
end;
var
ComponentButton01: TComponentButton01;
implementation
{$R *.fmx}
{ TComponentButton01 }
function TComponentButton01.createButton(aLabel: String): TFMXObject;
begin
Result := Layout1;
Label1.Text := aLabel;
Layout1.Align := TAlignLayout.Left;
Line1.Visible := False;
Self.TagString := aLabel;
end;
procedure TComponentButton01.FormCreate(Sender: TObject);
begin
GlobalEventBus.RegisterSubscriber(Self);
end;
procedure TComponentButton01.Props(aValue: TProps);
begin
Line1.Visible := False;
if (aValue.PropString = Label1.Text) and
(aValue.Key = 'Button01') then
Line1.Visible := True;
aValue.Free;
end;
function TComponentButton01.Render: TFMXObject;
begin
Result := Layout1;
end;
procedure TComponentButton01.SpeedButton1Click(Sender: TObject);
begin
Line1.Visible := True;
GlobalEventBus.Post(
TProps.Create
.PropString(Label1.Text)
.Key('Button01')
);
end;
procedure TComponentButton01.UnRender;
begin
//
end;
end.

View File

@ -0,0 +1,27 @@
object SubCadastros: TSubCadastros
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 480
ClientWidth = 640
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object Layout1: TLayout
Align = Client
Size.Width = 640.000000000000000000
Size.Height = 480.000000000000000000
Size.PlatformDefault = False
object Label1: TLabel
Align = Contents
StyledSettings = [Family, Style, FontColor]
Size.Width = 640.000000000000000000
Size.Height = 480.000000000000000000
Size.PlatformDefault = False
TextSettings.Font.Size = 30.000000000000000000
TextSettings.HorzAlign = Center
Text = 'Sub-Cadastros'
end
end
end

View File

@ -0,0 +1,45 @@
unit SimpleDemo.View.Page.Cadastros.Sub;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.Layouts,
Router4D.Interfaces;
type
TSubCadastros = class(TForm, iRouter4DComponent)
Layout1: TLayout;
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
function Render : TFMXObject;
procedure UnRender;
end;
var
SubCadastros: TSubCadastros;
implementation
uses
Router4D.History;
{$R *.fmx}
{ TSubCadastros }
function TSubCadastros.Render: TFMXObject;
begin
Result := Layout1;
end;
procedure TSubCadastros.UnRender;
begin
//
end;
end.

View File

@ -0,0 +1,74 @@
object PageCadastros: TPageCadastros
Left = 0
Top = 0
Caption = 'Form3'
ClientHeight = 480
ClientWidth = 640
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
OnCreate = FormCreate
DesignerMasterStyle = 0
object Layout1: TLayout
Align = Client
Size.Width = 640.000000000000000000
Size.Height = 480.000000000000000000
Size.PlatformDefault = False
object Layout2: TLayout
Align = Left
Size.Width = 177.000000000000000000
Size.Height = 480.000000000000000000
Size.PlatformDefault = False
Visible = False
object Rectangle1: TRectangle
Align = Contents
Fill.Color = xFF36414A
Size.Width = 177.000000000000000000
Size.Height = 480.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
end
object Layout3: TLayout
Align = Client
Size.Width = 640.000000000000000000
Size.Height = 399.000000000000000000
Size.PlatformDefault = False
object Label1: TLabel
Align = Contents
StyledSettings = [Family, Style, FontColor]
Size.Width = 640.000000000000000000
Size.Height = 399.000000000000000000
Size.PlatformDefault = False
TextSettings.Font.Size = 30.000000000000000000
TextSettings.HorzAlign = Center
Text = 'Cadastros'
end
object Button1: TButton
Anchors = []
Position.X = 243.682922363281300000
Position.Y = 215.990631103515600000
Size.Width = 145.000000000000000000
Size.Height = 41.000000000000000000
Size.PlatformDefault = False
Text = 'Voltar para Home'
OnClick = Button1Click
end
object Edit1: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
Anchors = []
Position.X = 243.682922363281300000
Position.Y = 257.240631103515600000
Size.Width = 145.000000000000000000
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
end
end
object Layout4: TLayout
Align = Top
Size.Width = 640.000000000000000000
Size.Height = 81.000000000000000000
Size.PlatformDefault = False
end
end
end

View File

@ -0,0 +1,114 @@
unit SimpleDemo.View.Page.Cadastros;
interface
uses
System.SysUtils,
System.Types,
System.UITypes,
System.Classes,
System.Variants,
FMX.Types,
FMX.Controls,
FMX.Forms,
FMX.Graphics,
FMX.Dialogs,
FMX.Controls.Presentation,
FMX.StdCtrls,
FMX.Layouts,
Router4D.Interfaces,
Router4D.Props, FMX.Edit, FMX.Objects;
type
TPageCadastros = class(TForm, iRouter4DComponent)
Layout1: TLayout;
Label1: TLabel;
Button1: TButton;
Edit1: TEdit;
Layout2: TLayout;
Layout3: TLayout;
Rectangle1: TRectangle;
Layout4: TLayout;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure CreateMenuSuperior;
procedure CreateRouters;
{ Private declarations }
public
{ Public declarations }
function Render : TFMXObject;
procedure UnRender;
[Subscribe]
procedure Props ( aValue : TProps);
end;
var
PageCadastros: TPageCadastros;
implementation
uses
Router4D, SimpleDemo.View.Page.Cadastros.Sub, SimpleDemo.View.Page.Principal,
SimpleDemo.View.Components.Button01;
{$R *.fmx}
{ TPageCadastros }
procedure TPageCadastros.Button1Click(Sender: TObject);
begin
TRouter4D.Link.&To('Inicio');
end;
procedure TPageCadastros.FormCreate(Sender: TObject);
begin
CreateRouters;
CreateMenuSuperior;
end;
procedure TPageCadastros.Props(aValue: TProps);
begin
if (aValue.PropString <> '') and (aValue.Key = 'TelaCadastro') then
Label1.Text := aValue.PropString;
aValue.Free;
end;
procedure TPageCadastros.CreateRouters;
begin
TRouter4D.Switch.Router('Clientes', TPagePrincipal, 'cadastros');
TRouter4D.Switch.Router('Fornecedores', TSubCadastros, 'cadastros');
TRouter4D.Switch.Router('Produtos', TSubCadastros, 'cadastros');
end;
procedure TPageCadastros.CreateMenuSuperior;
begin
Layout4.AddObject(
TComponentButton01.Create(Self)
.createButton('Clientes')
);
Layout4.AddObject(
TComponentButton01.Create(Self)
.createButton('Produtos')
);
Layout4.AddObject(
TComponentButton01.Create(Self)
.createButton('Fornecedores')
);
end;
function TPageCadastros.Render: TFMXObject;
begin
Label1.Text := 'Cadastros';
Result := Layout1;
end;
procedure TPageCadastros.UnRender;
begin
//
end;
end.

View File

@ -0,0 +1,47 @@
object PagePrincipal: TPagePrincipal
Left = 0
Top = 0
Caption = 'Form3'
ClientHeight = 480
ClientWidth = 640
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object Layout1: TLayout
Align = Client
Size.Width = 640.000000000000000000
Size.Height = 480.000000000000000000
Size.PlatformDefault = False
object Label1: TLabel
Align = Client
StyledSettings = [Family, Style, FontColor]
Size.Width = 640.000000000000000000
Size.Height = 480.000000000000000000
Size.PlatformDefault = False
TextSettings.Font.Size = 30.000000000000000000
TextSettings.HorzAlign = Center
Text = 'Home'
end
object Button1: TButton
Anchors = []
Position.X = 240.000000000000000000
Position.Y = 264.000000000000000000
Size.Width = 169.000000000000000000
Size.Height = 33.000000000000000000
Size.PlatformDefault = False
Text = 'Cadastros Simples'
OnClick = Button1Click
end
object Button2: TButton
Anchors = []
Position.X = 240.000000000000000000
Position.Y = 304.000000000000000000
Size.Width = 169.000000000000000000
Size.Height = 33.000000000000000000
Size.PlatformDefault = False
Text = 'Cadastros com Props'
OnClick = Button2Click
end
end
end

View File

@ -0,0 +1,69 @@
unit SimpleDemo.View.Page.Principal;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.Layouts,
Router4D.Interfaces;
type
TPagePrincipal = class(TForm, iRouter4DComponent)
Layout1: TLayout;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function Render : TFMXObject;
procedure UnRender;
end;
var
PagePrincipal: TPagePrincipal;
implementation
uses
Router4D,
Router4D.Props;
{$R *.fmx}
{ TPagePrincipal }
procedure TPagePrincipal.Button1Click(Sender: TObject);
begin
TRouter4D.Link.&To('Cadastros');
end;
procedure TPagePrincipal.Button2Click(Sender: TObject);
begin
TRouter4D.Link
.&To(
'Cadastros',
TProps
.Create
.PropString(
'Olá Router4D, Seu Cadastro Recebeu as Props'
)
.Key('TelaCadastro')
);
end;
function TPagePrincipal.Render: TFMXObject;
begin
Result := Layout1;
end;
procedure TPagePrincipal.UnRender;
begin
//
end;
end.

View File

@ -0,0 +1,71 @@
object Form2: TForm2
Left = 0
Top = 0
Caption = 'Form2'
ClientHeight = 586
ClientWidth = 875
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
OnShow = FormShow
DesignerMasterStyle = 0
object Layout1: TLayout
Align = Client
Size.Width = 875.000000000000000000
Size.Height = 586.000000000000000000
Size.PlatformDefault = False
object Layout2: TLayout
Align = Top
Size.Width = 875.000000000000000000
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
object Rectangle1: TRectangle
Align = Contents
Fill.Color = xFF36414A
Size.Width = 875.000000000000000000
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
object Label1: TLabel
Align = Contents
StyledSettings = [Family, Style]
Margins.Right = 10.000000000000000000
Size.Width = 865.000000000000000000
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
TextSettings.Font.Size = 15.000000000000000000
TextSettings.FontColor = claWhite
TextSettings.HorzAlign = Trailing
Text = 'Router4D - SimpleDemo'
end
end
object Layout4: TLayout
Align = Client
Size.Width = 705.000000000000000000
Size.Height = 536.000000000000000000
Size.PlatformDefault = False
end
object Layout3: TLayout
Align = Left
Position.Y = 50.000000000000000000
Size.Width = 170.000000000000000000
Size.Height = 536.000000000000000000
Size.PlatformDefault = False
object Rectangle2: TRectangle
Align = Contents
Fill.Color = xFF2D2F32
Size.Width = 170.000000000000000000
Size.Height = 536.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
object Layout5: TLayout
Align = Client
Size.Width = 170.000000000000000000
Size.Height = 536.000000000000000000
Size.PlatformDefault = False
end
end
end
end

View File

@ -0,0 +1,79 @@
unit SimpleDemo.View.Principal;
interface
uses
System.SysUtils,
System.Types,
System.UITypes,
System.Classes,
System.Variants,
FMX.Types,
FMX.Controls,
FMX.Forms,
FMX.Graphics,
FMX.Dialogs,
FMX.Controls.Presentation,
FMX.StdCtrls,
FMX.ListBox,
FMX.Layouts,
FMX.Objects, FMX.Edit, FMX.SearchBox, FMX.MultiView;
type
TForm2 = class(TForm)
Layout1: TLayout;
Layout2: TLayout;
Layout3: TLayout;
Layout4: TLayout;
Rectangle1: TRectangle;
Rectangle2: TRectangle;
Label1: TLabel;
Layout5: TLayout;
procedure FormShow(Sender: TObject);
private
procedure RegisterRouters;
procedure createSideBar;
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses
Router4D,
SimpleDemo.View.Page.Cadastros,
SimpleDemo.View.Page.Principal;
{$R *.fmx}
procedure TForm2.FormShow(Sender: TObject);
begin
RegisterRouters;
TRouter4D.Render<TPagePrincipal>.SetElement(Layout4, Layout1);
end;
procedure TForm2.RegisterRouters;
begin
TRouter4D.Switch.Router('Inicio', TPagePrincipal);
TRouter4D.Switch.Router('Cadastros', TPageCadastros);
TRouter4D.Switch.Router('Configuracoes', TPageCadastros);
createSideBar;
end;
procedure TForm2.createSideBar;
begin
TRouter4D
.SideBar
.MainContainer(Layout5)
.LinkContainer(Layout4)
.FontSize(15)
.FontColor(4294967295)
.ItemHeigth(60)
.RenderToListBox;
end;
end.

View File

@ -0,0 +1,19 @@
program SimpleDemo;
uses
System.StartUpCopy,
FMX.Forms,
SimpleDemo.View.Principal in 'SimpleDemo.View.Principal.pas' {Form2},
SimpleDemo.View.Page.Principal in 'SimpleDemo.View.Page.Principal.pas' {PagePrincipal},
SimpleDemo.View.Page.Cadastros in 'SimpleDemo.View.Page.Cadastros.pas' {PageCadastros},
SimpleDemo.View.Page.Cadastros.Sub in 'SimpleDemo.View.Page.Cadastros.Sub.pas' {SubCadastros},
SimpleDemo.View.Components.Button01 in 'SimpleDemo.View.Components.Button01.pas' {ComponentButton01};
{$R *.res}
begin
ReportMemoryLeaksOnShutdown := True;
Application.Initialize;
Application.CreateForm(TForm2, Form2);
Application.Run;
end.

View File

@ -0,0 +1,904 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{3AD0DA23-7F3C-401B-92FF-B74A312EBB37}</ProjectGuid>
<ProjectVersion>19.0</ProjectVersion>
<FrameworkType>FMX</FrameworkType>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>32787</TargetedPlatforms>
<AppType>Application</AppType>
<MainSource>SimpleDemo.dpr</MainSource>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
<Base_Android>true</Base_Android>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
<Base_Android64>true</Base_Android64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
<Base_Win64>true</Base_Win64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
<Cfg_1_Win32>true</Cfg_1_Win32>
<CfgParent>Cfg_1</CfgParent>
<Cfg_1>true</Cfg_1>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
<Cfg_1_Win64>true</Cfg_1_Win64>
<CfgParent>Cfg_1</CfgParent>
<Cfg_1>true</Cfg_1>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
<Cfg_2_Win32>true</Cfg_2_Win32>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win64)'!=''">
<Cfg_2_Win64>true</Cfg_2_Win64>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
<DCC_E>false</DCC_E>
<DCC_N>false</DCC_N>
<DCC_S>false</DCC_S>
<DCC_F>false</DCC_F>
<DCC_K>false</DCC_K>
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
<AUP_ACCESS_COARSE_LOCATION>true</AUP_ACCESS_COARSE_LOCATION>
<AUP_ACCESS_FINE_LOCATION>true</AUP_ACCESS_FINE_LOCATION>
<AUP_CALL_PHONE>true</AUP_CALL_PHONE>
<AUP_CAMERA>true</AUP_CAMERA>
<AUP_INTERNET>true</AUP_INTERNET>
<AUP_READ_EXTERNAL_STORAGE>true</AUP_READ_EXTERNAL_STORAGE>
<AUP_WRITE_EXTERNAL_STORAGE>true</AUP_WRITE_EXTERNAL_STORAGE>
<AUP_READ_PHONE_STATE>true</AUP_READ_PHONE_STATE>
<Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
<Icns_MainIcns>$(BDS)\bin\delphi_PROJECTICNS.icns</Icns_MainIcns>
<SanitizedProjectName>SimpleDemo</SanitizedProjectName>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Android)'!=''">
<DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<Android_LauncherIcon36>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png</Android_LauncherIcon36>
<Android_LauncherIcon48>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png</Android_LauncherIcon48>
<Android_LauncherIcon72>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png</Android_LauncherIcon72>
<Android_LauncherIcon96>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png</Android_LauncherIcon96>
<Android_LauncherIcon144>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png</Android_LauncherIcon144>
<Android_SplashImage426>$(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png</Android_SplashImage426>
<Android_SplashImage470>$(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png</Android_SplashImage470>
<Android_SplashImage640>$(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png</Android_SplashImage640>
<Android_SplashImage960>$(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png</Android_SplashImage960>
<Android_NotificationIcon24>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png</Android_NotificationIcon24>
<Android_NotificationIcon36>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png</Android_NotificationIcon36>
<Android_NotificationIcon48>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png</Android_NotificationIcon48>
<Android_NotificationIcon72>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png</Android_NotificationIcon72>
<Android_NotificationIcon96>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png</Android_NotificationIcon96>
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar</EnabledSysJars>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Android64)'!=''">
<DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<Android_LauncherIcon36>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png</Android_LauncherIcon36>
<Android_LauncherIcon48>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png</Android_LauncherIcon48>
<Android_LauncherIcon72>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png</Android_LauncherIcon72>
<Android_LauncherIcon96>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png</Android_LauncherIcon96>
<Android_LauncherIcon144>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png</Android_LauncherIcon144>
<Android_SplashImage426>$(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png</Android_SplashImage426>
<Android_SplashImage470>$(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png</Android_SplashImage470>
<Android_SplashImage640>$(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png</Android_SplashImage640>
<Android_SplashImage960>$(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png</Android_SplashImage960>
<Android_NotificationIcon24>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png</Android_NotificationIcon24>
<Android_NotificationIcon36>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png</Android_NotificationIcon36>
<Android_NotificationIcon48>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png</Android_NotificationIcon48>
<Android_NotificationIcon72>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png</Android_NotificationIcon72>
<Android_NotificationIcon96>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png</Android_NotificationIcon96>
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar</EnabledSysJars>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_UsePackage>DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;bindcompvclsmp;emsclientfiredac;tethering;svnui;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;svn;DBXOracleDriver;inetdb;emsedge;fmx;FireDACIBDriver;fmxdae;vcledge;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;IWBootstrapD104;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;Intraweb_15_D10_4;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;TBGWebCharts;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;IWBootstrap4D104;DBXSybaseASADriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<VerInfo_Locale>1033</VerInfo_Locale>
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
<UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
<UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win64)'!=''">
<DCC_UsePackage>DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;bindcompvclsmp;emsclientfiredac;tethering;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;DBXOracleDriver;inetdb;emsedge;fmx;FireDACIBDriver;fmxdae;vcledge;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<VerInfo_Locale>1033</VerInfo_Locale>
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
<UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
<UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
<DCC_DebugDCUs>true</DCC_DebugDCUs>
<DCC_Optimize>false</DCC_Optimize>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
<DCC_RemoteDebug>true</DCC_RemoteDebug>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
<DCC_RemoteDebug>false</DCC_RemoteDebug>
<AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
<AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Locale>1033</VerInfo_Locale>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
<AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
<AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
<DCC_DebugInformation>0</DCC_DebugInformation>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
<AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
<AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
<AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
<AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="SimpleDemo.View.Principal.pas">
<Form>Form2</Form>
<FormType>fmx</FormType>
</DCCReference>
<DCCReference Include="SimpleDemo.View.Page.Principal.pas">
<Form>PagePrincipal</Form>
<FormType>fmx</FormType>
</DCCReference>
<DCCReference Include="SimpleDemo.View.Page.Cadastros.pas">
<Form>PageCadastros</Form>
<FormType>fmx</FormType>
</DCCReference>
<DCCReference Include="SimpleDemo.View.Page.Cadastros.Sub.pas">
<Form>SubCadastros</Form>
<FormType>fmx</FormType>
</DCCReference>
<DCCReference Include="SimpleDemo.View.Components.Button01.pas">
<Form>ComponentButton01</Form>
<FormType>fmx</FormType>
</DCCReference>
<BuildConfiguration Include="Release">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>Application</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality>
<Source>
<Source Name="MainSource">SimpleDemo.dpr</Source>
</Source>
<Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dclofficexp270.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
</Excluded_Packages>
</Delphi.Personality>
<Platforms>
<Platform value="Android">True</Platform>
<Platform value="Android64">True</Platform>
<Platform value="Win32">True</Platform>
<Platform value="Win64">True</Platform>
</Platforms>
<Deployment Version="3">
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
<Platform Name="OSX32">
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
<Platform Name="iOSSimulator">
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
<Platform Name="iOSSimulator">
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployFile LocalName="Win32\Debug\SimpleDemo.exe" Configuration="Debug" Class="ProjectOutput">
<Platform Name="Win32">
<RemoteName>SimpleDemo.exe</RemoteName>
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployClass Name="AdditionalDebugSymbols">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidClassesDexFile">
<Platform Name="Android">
<RemoteDir>classes</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>classes</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidFileProvider">
<Platform Name="Android">
<RemoteDir>res\xml</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\xml</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidGDBServer">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidLibnativeArmeabiFile">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>library\lib\armeabi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidLibnativeArmeabiv7aFile">
<Platform Name="Android64">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidLibnativeMipsFile">
<Platform Name="Android">
<RemoteDir>library\lib\mips</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>library\lib\mips</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidServiceOutput">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>library\lib\arm64-v8a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidServiceOutput_Android32">
<Platform Name="Android64">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashImageDef">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashStyles">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashStylesV21">
<Platform Name="Android">
<RemoteDir>res\values-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_Colors">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_DefaultAppIcon">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon144">
<Platform Name="Android">
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon36">
<Platform Name="Android">
<RemoteDir>res\drawable-ldpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-ldpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon48">
<Platform Name="Android">
<RemoteDir>res\drawable-mdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-mdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon72">
<Platform Name="Android">
<RemoteDir>res\drawable-hdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-hdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon96">
<Platform Name="Android">
<RemoteDir>res\drawable-xhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon24">
<Platform Name="Android">
<RemoteDir>res\drawable-mdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-mdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon36">
<Platform Name="Android">
<RemoteDir>res\drawable-hdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-hdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon48">
<Platform Name="Android">
<RemoteDir>res\drawable-xhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon72">
<Platform Name="Android">
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon96">
<Platform Name="Android">
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage426">
<Platform Name="Android">
<RemoteDir>res\drawable-small</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-small</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage470">
<Platform Name="Android">
<RemoteDir>res\drawable-normal</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-normal</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage640">
<Platform Name="Android">
<RemoteDir>res\drawable-large</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-large</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage960">
<Platform Name="Android">
<RemoteDir>res\drawable-xlarge</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xlarge</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_Strings">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DebugSymbols">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DependencyFramework">
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.framework</Extensions>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.framework</Extensions>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DependencyModule">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.dll;.bpl</Extensions>
</Platform>
</DeployClass>
<DeployClass Required="true" Name="DependencyPackage">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.bpl</Extensions>
</Platform>
</DeployClass>
<DeployClass Name="File">
<Platform Name="Android">
<Operation>0</Operation>
</Platform>
<Platform Name="Android64">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>0</Operation>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\Resources\StartUp\</RemoteDir>
<Operation>0</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\Resources\StartUp\</RemoteDir>
<Operation>0</Operation>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch2x">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_LaunchDark2x">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch2x">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch3x">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_LaunchDark2x">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_LaunchDark3x">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectAndroidManifest">
<Platform Name="Android">
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSDeviceDebug">
<Platform Name="iOSDevice32">
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSDeviceResourceRules">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSEntitlements">
<Platform Name="iOSDevice32">
<RemoteDir>..\</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<RemoteDir>..\</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSInfoPList">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSLaunchScreen">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).launchscreen</RemoteDir>
<Operation>64</Operation>
</Platform>
<Platform Name="iOSSimulator">
<RemoteDir>..\$(PROJECTNAME).launchscreen</RemoteDir>
<Operation>64</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSResource">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXDebug">
<Platform Name="OSX64">
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXEntitlements">
<Platform Name="OSX32">
<RemoteDir>..\</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>..\</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXInfoPList">
<Platform Name="OSX32">
<RemoteDir>Contents</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXResource">
<Platform Name="OSX32">
<RemoteDir>Contents\Resources</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\Resources</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Required="true" Name="ProjectOutput">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>library\lib\arm64-v8a</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="Linux64">
<Operation>1</Operation>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOutput_Android32">
<Platform Name="Android64">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectUWPManifest">
<Platform Name="Win32">
<Operation>1</Operation>
</Platform>
<Platform Name="Win64">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="UWP_DelphiLogo150">
<Platform Name="Win32">
<RemoteDir>Assets</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win64">
<RemoteDir>Assets</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="UWP_DelphiLogo44">
<Platform Name="Win32">
<RemoteDir>Assets</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win64">
<RemoteDir>Assets</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
</Deployment>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
<Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
</Project>

Binary file not shown.

41
Samples/VCL/Main.dfm Normal file
View File

@ -0,0 +1,41 @@
object fMain: TfMain
Left = 0
Top = 0
Caption = 'fMain'
ClientHeight = 678
ClientWidth = 1178
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object pnlBackground: TPanel
Left = 0
Top = 0
Width = 1178
Height = 678
Align = alClient
TabOrder = 0
object pnlMain: TPanel
Left = 1
Top = 1
Width = 192
Height = 676
Align = alLeft
TabOrder = 0
end
object pnlEmbed: TPanel
Left = 193
Top = 1
Width = 984
Height = 676
Align = alClient
TabOrder = 1
end
end
end

57
Samples/VCL/Main.pas Normal file
View File

@ -0,0 +1,57 @@
unit Main;
interface
uses
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Variants,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.ExtCtrls,
Router4D,
View.Page.Main.Cadastro,
Vcl.StdCtrls;
type
TfMain = class(TForm)
pnlBackground: TPanel;
pnlMain: TPanel;
pnlEmbed: TPanel;
procedure FormCreate(Sender: TObject);
private
procedure RegisterRouters;
public
{ Public declarations }
end;
var
fMain: TfMain;
implementation
{$R *.dfm}
uses
View.Page.Customer,
View.Page.Product;
procedure TfMain.FormCreate(Sender: TObject);
begin
RegisterRouters;
TRouter4D.Render<TfViewPageMainCadastro>.SetElement(pnlEmbed, pnlBackground);
end;
procedure TfMain.RegisterRouters;
begin
TRouter4D.Switch.Router('Start', TfViewPageMainCadastro);
TRouter4D.Switch.Router('Product', TfViewPageProduct);
TRouter4D.Switch.Router('Customer', TfViewPageCustomer);
end;
end.

19
Samples/VCL/Router.dpr Normal file
View File

@ -0,0 +1,19 @@
program Router;
uses
Vcl.Forms,
Main in 'Main.pas' {fMain},
View.Page.Main.Cadastro in 'pages\View.Page.Main.Cadastro.pas' {fViewPageMainCadastro},
View.Page.Template in 'pages\View.Page.Template.pas' {fViewPageTemplate},
View.Page.Product in 'pages\View.Page.Product.pas' {fViewPageProduct},
View.Page.Customer in 'pages\View.Page.Customer.pas' {fViewPageCustomer};
{$R *.res}
begin
ReportMemoryLeaksOnShutdown := True;
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TfMain, fMain);
Application.Run;
end.

986
Samples/VCL/Router.dproj Normal file
View File

@ -0,0 +1,986 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{9FEAC6BC-4355-42BF-B09D-4FDF02CFA779}</ProjectGuid>
<ProjectVersion>18.8</ProjectVersion>
<FrameworkType>VCL</FrameworkType>
<MainSource>Router.dpr</MainSource>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>1</TargetedPlatforms>
<AppType>Application</AppType>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
<Base_Win64>true</Base_Win64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
<Cfg_1_Win32>true</Cfg_1_Win32>
<CfgParent>Cfg_1</CfgParent>
<Cfg_1>true</Cfg_1>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
<Cfg_2_Win32>true</Cfg_2_Win32>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
<DCC_E>false</DCC_E>
<DCC_N>false</DCC_N>
<DCC_S>false</DCC_S>
<DCC_F>false</DCC_F>
<DCC_K>false</DCC_K>
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
<Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
<UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
<UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
<SanitizedProjectName>Router</SanitizedProjectName>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_UsePackage>DBXSqliteDriver;IndyIPCommon;RESTComponents;bindcompdbx;DBXInterBaseDriver;vcl;IndyIPServer;vclactnband;StyleControls_dxe103Rio;vclFireDAC;IndySystem;AqEdit;AqButton;ZComponent;ZCore;tethering;svnui;AqEnterAsTab;dsnapcon;FireDACADSDriver;FireDACMSAccDriver;fmxFireDAC;vclimg;ZDbc;TeeDB;FireDAC;vcltouch;vcldb;bindcompfmx;svn;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;inetdb;FMXTee;soaprtl;DbxCommonDriver;FmxTeeUI;ibxpress;fmx;FireDACIBDriver;fmxdae;xmlrtl;soapmidas;ibxbindings;fmxobj;vclwinx;vclib;rtl;Tee;DbxClientDriver;CustomIPTransport;vcldsnap;dbexpress;IndyCore;vclx;ZParseSql;bindcomp;appanalytics;dsnap;ZPlain;FireDACCommon;IndyIPClient;bindcompvcl;RESTBackendComponents;TeeUI;Weather;VCLRESTComponents;soapserver;dbxcds;VclSmp;adortl;vclie;bindengine;DBXMySQLDriver;CloudService;dsnapxml;FireDACMySQLDriver;dbrtl;IndyProtocols;inetdbxpress;AqComboBox;FireDACCommonODBC;FireDACCommonDriver;inet;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<VerInfo_Locale>1033</VerInfo_Locale>
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win64)'!=''">
<DCC_UsePackage>DBXSqliteDriver;IndyIPCommon;RESTComponents;bindcompdbx;DBXInterBaseDriver;vcl;IndyIPServer;vclactnband;StyleControls_dxe103Rio;vclFireDAC;IndySystem;ZComponent;ZCore;tethering;dsnapcon;FireDACADSDriver;FireDACMSAccDriver;fmxFireDAC;vclimg;ZDbc;TeeDB;FireDAC;vcltouch;vcldb;bindcompfmx;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;inetdb;FMXTee;soaprtl;DbxCommonDriver;FmxTeeUI;ibxpress;fmx;FireDACIBDriver;fmxdae;xmlrtl;soapmidas;ibxbindings;fmxobj;vclwinx;vclib;rtl;Tee;DbxClientDriver;CustomIPTransport;vcldsnap;dbexpress;IndyCore;vclx;ZParseSql;bindcomp;appanalytics;dsnap;ZPlain;FireDACCommon;IndyIPClient;bindcompvcl;RESTBackendComponents;TeeUI;VCLRESTComponents;soapserver;dbxcds;VclSmp;adortl;vclie;bindengine;DBXMySQLDriver;CloudService;dsnapxml;FireDACMySQLDriver;dbrtl;IndyProtocols;inetdbxpress;FireDACCommonODBC;FireDACCommonDriver;inet;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
<DCC_DebugDCUs>true</DCC_DebugDCUs>
<DCC_Optimize>false</DCC_Optimize>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
<DCC_RemoteDebug>true</DCC_RemoteDebug>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
<DCC_RemoteDebug>false</DCC_RemoteDebug>
<AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
<AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
<DCC_DebugInformation>0</DCC_DebugInformation>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
<AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
<AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="Main.pas">
<Form>fMain</Form>
<FormType>dfm</FormType>
</DCCReference>
<DCCReference Include="pages\View.Page.Main.Cadastro.pas">
<Form>fViewPageMainCadastro</Form>
<FormType>dfm</FormType>
</DCCReference>
<DCCReference Include="pages\View.Page.Template.pas">
<Form>fViewPageTemplate</Form>
<FormType>dfm</FormType>
</DCCReference>
<DCCReference Include="pages\View.Page.Product.pas">
<Form>fViewPageProduct</Form>
<FormType>dfm</FormType>
</DCCReference>
<DCCReference Include="pages\View.Page.Customer.pas">
<Form>fViewPageCustomer</Form>
<FormType>dfm</FormType>
</DCCReference>
<BuildConfiguration Include="Release">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>Application</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality>
<Source>
<Source Name="MainSource">Router.dpr</Source>
</Source>
</Delphi.Personality>
<Deployment Version="3">
<DeployFile LocalName="Win32\Debug\Router.exe" Configuration="Debug" Class="ProjectOutput">
<Platform Name="Win32">
<RemoteName>Router.exe</RemoteName>
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployClass Name="AdditionalDebugSymbols">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidClassesDexFile">
<Platform Name="Android">
<RemoteDir>classes</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>classes</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidFileProvider">
<Platform Name="Android">
<RemoteDir>res\xml</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\xml</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidGDBServer">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidLibnativeArmeabiFile">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>library\lib\armeabi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidLibnativeArmeabiv7aFile">
<Platform Name="Android64">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidLibnativeMipsFile">
<Platform Name="Android">
<RemoteDir>library\lib\mips</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>library\lib\mips</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidServiceOutput">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>library\lib\arm64-v8a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidServiceOutput_Android32">
<Platform Name="Android64">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashImageDef">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashStyles">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashStylesV21">
<Platform Name="Android">
<RemoteDir>res\values-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values-v21</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_Colors">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_DefaultAppIcon">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon144">
<Platform Name="Android">
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon36">
<Platform Name="Android">
<RemoteDir>res\drawable-ldpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-ldpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon48">
<Platform Name="Android">
<RemoteDir>res\drawable-mdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-mdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon72">
<Platform Name="Android">
<RemoteDir>res\drawable-hdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-hdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon96">
<Platform Name="Android">
<RemoteDir>res\drawable-xhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon24">
<Platform Name="Android">
<RemoteDir>res\drawable-mdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-mdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon36">
<Platform Name="Android">
<RemoteDir>res\drawable-hdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-hdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon48">
<Platform Name="Android">
<RemoteDir>res\drawable-xhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon72">
<Platform Name="Android">
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_NotificationIcon96">
<Platform Name="Android">
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage426">
<Platform Name="Android">
<RemoteDir>res\drawable-small</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-small</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage470">
<Platform Name="Android">
<RemoteDir>res\drawable-normal</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-normal</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage640">
<Platform Name="Android">
<RemoteDir>res\drawable-large</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-large</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage960">
<Platform Name="Android">
<RemoteDir>res\drawable-xlarge</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xlarge</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_Strings">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DebugSymbols">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DependencyFramework">
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.framework</Extensions>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.framework</Extensions>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DependencyModule">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.dll;.bpl</Extensions>
</Platform>
</DeployClass>
<DeployClass Required="true" Name="DependencyPackage">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.bpl</Extensions>
</Platform>
</DeployClass>
<DeployClass Name="File">
<Platform Name="Android">
<Operation>0</Operation>
</Platform>
<Platform Name="Android64">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>0</Operation>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\Resources\StartUp\</RemoteDir>
<Operation>0</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\Resources\StartUp\</RemoteDir>
<Operation>0</Operation>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch1024x768">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch1536x2048">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch1668">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch1668x2388">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch2048x1536">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch2048x2732">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch2224">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch2388x1668">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch2732x2048">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch768x1024">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch1125">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch1136x640">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch1242">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch1242x2688">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch1334">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch1792">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch2208">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch2436">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch2688x1242">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch320">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch640">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch640x1136">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch750">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch828">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectAndroidManifest">
<Platform Name="Android">
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSDeviceDebug">
<Platform Name="iOSDevice32">
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSDeviceResourceRules">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSEntitlements">
<Platform Name="iOSDevice32">
<RemoteDir>..\</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<RemoteDir>..\</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSInfoPList">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSResource">
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXDebug">
<Platform Name="OSX64">
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXEntitlements">
<Platform Name="OSX32">
<RemoteDir>..\</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>..\</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXInfoPList">
<Platform Name="OSX32">
<RemoteDir>Contents</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXResource">
<Platform Name="OSX32">
<RemoteDir>Contents\Resources</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\Resources</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Required="true" Name="ProjectOutput">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>library\lib\arm64-v8a</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="Linux64">
<Operation>1</Operation>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="OSX64">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOutput_Android32">
<Platform Name="Android64">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectUWPManifest">
<Platform Name="Win32">
<Operation>1</Operation>
</Platform>
<Platform Name="Win64">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="UWP_DelphiLogo150">
<Platform Name="Win32">
<RemoteDir>Assets</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win64">
<RemoteDir>Assets</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="UWP_DelphiLogo44">
<Platform Name="Win32">
<RemoteDir>Assets</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Win64">
<RemoteDir>Assets</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
</Deployment>
<Platforms>
<Platform value="Win32">True</Platform>
<Platform value="Win64">False</Platform>
</Platforms>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
<Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
</Project>

BIN
Samples/VCL/Router.res Normal file

Binary file not shown.

View File

@ -0,0 +1,26 @@
inherited fViewPageCustomer: TfViewPageCustomer
Caption = 'fViewPageCustomer'
PixelsPerInch = 96
TextHeight = 13
inherited pnlBackground: TPanel
ExplicitWidth = 715
ExplicitHeight = 463
inherited lblTitle: TLabel
Width = 242
Caption = 'Cadastro de Clientes'
ExplicitWidth = 242
end
inherited btnBack: TButton
TabOrder = 1
ExplicitTop = 415
end
object edt1: TEdit
Left = 16
Top = 120
Width = 121
Height = 21
TabOrder = 0
Text = 'edt1'
end
end
end

View File

@ -0,0 +1,36 @@
unit View.Page.Customer;
interface
uses
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Variants,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
View.Page.Template,
Vcl.ExtCtrls,
Vcl.StdCtrls;
type
TfViewPageCustomer = class(TfViewPageTemplate)
edt1: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;
var
fViewPageCustomer: TfViewPageCustomer;
implementation
{$R *.dfm}
end.

View File

@ -0,0 +1,62 @@
object fViewPageMainCadastro: TfViewPageMainCadastro
Left = 0
Top = 0
Align = alClient
BorderStyle = bsNone
Caption = 'fViewPageMainCadastro'
ClientHeight = 484
ClientWidth = 799
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object pnlAll: TPanel
Left = 0
Top = 0
Width = 799
Height = 484
Align = alClient
TabOrder = 0
object btnProduct: TButton
Left = 24
Top = 32
Width = 153
Height = 25
Caption = 'Product'
TabOrder = 0
OnClick = btnProductClick
end
object btnProductProp: TButton
Left = 24
Top = 63
Width = 153
Height = 25
Caption = 'Product With Prop'
TabOrder = 1
OnClick = btnProductPropClick
end
object btnCustomer: TButton
Left = 24
Top = 104
Width = 153
Height = 25
Caption = 'Customer'
TabOrder = 2
OnClick = btnCustomerClick
end
object btnCustomerWithProps: TButton
Left = 24
Top = 135
Width = 153
Height = 25
Caption = 'Customer With Prop'
TabOrder = 3
OnClick = btnCustomerWithPropsClick
end
end
end

View File

@ -0,0 +1,93 @@
unit View.Page.Main.Cadastro;
interface
uses
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Variants,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.ExtCtrls,
Router4D.Interfaces,
Vcl.StdCtrls, Router4D, Router4D.Props;
type
TfViewPageMainCadastro = class(TForm, iRouter4DComponent)
pnlAll: TPanel;
btnProduct: TButton;
btnProductProp: TButton;
btnCustomer: TButton;
btnCustomerWithProps: TButton;
procedure btnProductClick(Sender: TObject);
procedure btnProductPropClick(Sender: TObject);
procedure btnCustomerClick(Sender: TObject);
procedure btnCustomerWithPropsClick(Sender: TObject);
private
function Render: TForm;
procedure UnRender;
public
{ Public declarations }
end;
var
fViewPageMainCadastro: TfViewPageMainCadastro;
implementation
{$R *.dfm}
procedure TfViewPageMainCadastro.btnCustomerClick(Sender: TObject);
begin
TRouter4D.Link.&To('Customer');
end;
procedure TfViewPageMainCadastro.btnCustomerWithPropsClick(Sender: TObject);
begin
TRouter4D.Link
.&To(
'Customer',
TProps
.Create
.PropString(
'Olá Customer, Seu Cadastro Recebeu as Props'
)
.Key('TelaCadastro')
);
end;
procedure TfViewPageMainCadastro.btnProductClick(Sender: TObject);
begin
TRouter4D.Link.&To('Product');
end;
procedure TfViewPageMainCadastro.btnProductPropClick(Sender: TObject);
begin
TRouter4D.Link
.&To(
'Product',
TProps
.Create
.PropString(
'Olá Product, Seu Cadastro Recebeu as Props'
)
.Key('TelaCadastro')
);
end;
function TfViewPageMainCadastro.Render: TForm;
begin
Result := Self;
end;
procedure TfViewPageMainCadastro.UnRender;
begin
end;
end.

View File

@ -0,0 +1,12 @@
inherited fViewPageProduct: TfViewPageProduct
Caption = 'fViewPageProduct'
PixelsPerInch = 96
TextHeight = 13
inherited pnlBackground: TPanel
ExplicitWidth = 715
ExplicitHeight = 463
inherited btnBack: TButton
ExplicitTop = 415
end
end
end

View File

@ -0,0 +1,35 @@
unit View.Page.Product;
interface
uses
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Variants,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
View.Page.Template,
Vcl.ExtCtrls,
Vcl.StdCtrls;
type
TfViewPageProduct = class(TfViewPageTemplate)
private
{ Private declarations }
public
{ Public declarations }
end;
var
fViewPageProduct: TfViewPageProduct;
implementation
{$R *.dfm}
end.

View File

@ -0,0 +1,65 @@
object fViewPageTemplate: TfViewPageTemplate
Left = 0
Top = 0
Align = alClient
BorderStyle = bsNone
Caption = 'fViewPageTemplate'
ClientHeight = 463
ClientWidth = 715
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object pnlBackground: TPanel
Left = 0
Top = 0
Width = 715
Height = 463
Align = alClient
TabOrder = 0
DesignSize = (
715
463)
object lblTitle: TLabel
Left = 16
Top = 24
Width = 142
Height = 33
Caption = 'Cadastro de'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -27
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object lblSubtitle: TLabel
Left = 16
Top = 67
Width = 70
Height = 19
Caption = 'lblSubtitle'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -16
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object btnBack: TButton
Left = 16
Top = 415
Width = 75
Height = 25
Anchors = [akLeft, akBottom]
Caption = 'Voltar'
TabOrder = 0
OnClick = btnBackClick
end
end
end

View File

@ -0,0 +1,68 @@
unit View.Page.Template;
interface
uses
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Variants,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Router4D.Interfaces,
Vcl.ExtCtrls,
Vcl.StdCtrls,
Router4D.Props,
Router4D;
type
TfViewPageTemplate = class(TForm, IRouter4DComponent)
pnlBackground: TPanel;
btnBack: TButton;
lblTitle: TLabel;
lblSubtitle: TLabel;
procedure btnBackClick(Sender: TObject);
private
function Render: TForm;
procedure UnRender;
public
[Subscribe]
procedure Props(AValue: TProps);
end;
var
fViewPageTemplate: TfViewPageTemplate;
implementation
{$R *.dfm}
{ TfViewPageTemplate }
procedure TfViewPageTemplate.btnBackClick(Sender: TObject);
begin
TRouter4D.Link.&To('Start');
end;
procedure TfViewPageTemplate.Props(AValue: TProps);
begin
lblSubtitle.Caption := AValue.PropString;
AValue.Free;
end;
function TfViewPageTemplate.Render: TForm;
begin
Result := Self;
end;
procedure TfViewPageTemplate.UnRender;
begin
end;
end.

37
src/Router4D.Helper.pas Normal file
View File

@ -0,0 +1,37 @@
unit Router4D.Helper;
interface
uses
System.Classes,
Vcl.ExtCtrls,
Vcl.Forms,
Vcl.Controls;
type
TRouter4DHelper = class helper for TPanel
public
procedure RemoveObject; overload;
procedure AddObject(AValue: TForm);
end;
implementation
procedure TRouter4DHelper.AddObject(AValue: TForm);
begin
AValue.Parent := Self;
AValue.Show;
end;
procedure TRouter4DHelper.RemoveObject;
var
lIndex: Integer;
begin
for lIndex := Self.ControlCount - 1 downto 0 do
begin
if (Self.Controls[lIndex] is TForm) then
(Self.Controls[lIndex] as TForm).Close;
end;
end;
end.

View File

@ -1,14 +1,21 @@
unit Router4D.History; unit Router4D.History;
{$I Router4D.inc}
interface interface
uses uses
Classes, Classes,
SysUtils, SysUtils,
{$IFDEF HAS_FMX}
FMX.Forms, FMX.Forms,
FMX.Types,
{$ELSE}
Vcl.Forms,
Vcl.ExtCtrls,
{$ENDIF}
System.Generics.Collections, System.Generics.Collections,
Router4D.Interfaces, Router4D.Interfaces,
FMX.Types,
Router4D.Props; Router4D.Props;
type type
@ -22,29 +29,50 @@ type
TRouter4DHistory = class TRouter4DHistory = class
private private
FListCache : TObjectDictionary<String, TObject>; FListCache : TObjectDictionary<String, TObject>;
{$IFDEF HAS_FMX}
FListCacheContainer : TObjectDictionary<String, TFMXObject>; FListCacheContainer : TObjectDictionary<String, TFMXObject>;
FListCache2 : TDictionary<String, TCachePersistent>;
FMainRouter : TFMXObject; FMainRouter : TFMXObject;
FIndexRouter : TFMXObject; FIndexRouter : TFMXObject;
{$ELSE}
FListCacheContainer : TObjectDictionary<String, TPanel>;
FMainRouter : TPanel;
FIndexRouter : TPanel;
{$ENDIF}
FListCache2 : TDictionary<String, TCachePersistent>;
FInstanteObject : iRouter4DComponent; FInstanteObject : iRouter4DComponent;
FListCacheOrder : TList<String>;
FIndexCache : Integer;
procedure CreateInstancePersistent( aPath : String); procedure CreateInstancePersistent( aPath : String);
procedure CacheKeyNotify(Sender: TObject; const Key: string; Action: TCollectionNotification);
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
{$IFDEF HAS_FMX}
function MainRouter ( aValue : TFMXObject ) : TRouter4DHistory; overload; function MainRouter ( aValue : TFMXObject ) : TRouter4DHistory; overload;
function MainRouter : TFMXObject; overload; function MainRouter : TFMXObject; overload;
function IndexRouter ( aValue : TFMXObject ) : TRouter4DHistory; overload; function IndexRouter ( aValue : TFMXObject ) : TRouter4DHistory; overload;
function IndexRouter : TFMXObject; overload; function IndexRouter : TFMXObject; overload;
function AddHistoryConteiner ( aKey : String; aObject : TFMXObject) : TRouter4DHistory; overload;
function GetHistoryContainer ( aKey : String ) : TFMXObject;
{$ELSE}
function MainRouter ( aValue : TPanel ) : TRouter4DHistory; overload;
function MainRouter : TPanel; overload;
function IndexRouter ( aValue : TPanel ) : TRouter4DHistory; overload;
function IndexRouter : TPanel; overload;
function AddHistoryConteiner ( aKey : String; aObject : TPanel) : TRouter4DHistory; overload;
function GetHistoryContainer ( aKey : String ) : TPanel;
{$ENDIF}
function AddHistory ( aKey : String; aObject : TObject ) : iRouter4DComponent; overload; function AddHistory ( aKey : String; aObject : TObject ) : iRouter4DComponent; overload;
function AddHistory ( aKey : String; aObject : TPersistentClass ) : iRouter4DComponent; overload; function AddHistory ( aKey : String; aObject : TPersistentClass ) : iRouter4DComponent; overload;
function AddHistory ( aKey : String; aObject : TPersistentClass; aSBKey : String; isVisible : Boolean ) : iRouter4DComponent; overload; function AddHistory ( aKey : String; aObject : TPersistentClass; aSBKey : String; isVisible : Boolean ) : iRouter4DComponent; overload;
function AddHistoryConteiner ( aKey : String; aObject : TFMXObject) : TRouter4DHistory; overload;
function GetHistoryContainer ( aKey : String ) : TFMXObject;
function RemoveHistory ( aKey : String ) : TRouter4DHistory; function RemoveHistory ( aKey : String ) : TRouter4DHistory;
function GetHistory ( aKey : String ) : iRouter4DComponent; function GetHistory ( aKey : String ) : iRouter4DComponent;
function RoutersList : TDictionary<String, TObject>; function RoutersList : TDictionary<String, TObject>;
function RoutersListPersistent : TDictionary<String, TCachePersistent>; function RoutersListPersistent : TDictionary<String, TCachePersistent>;
function InstanteObject : iRouter4DComponent; function InstanteObject : iRouter4DComponent;
function GoBack : String;
function BreadCrumb(aDelimiter: char = '/') : String;
function IndexCache : Integer;
end; end;
var var
@ -54,6 +82,111 @@ implementation
{ TRouter4DHistory } { TRouter4DHistory }
{$IFDEF HAS_FMX}
function TRouter4DHistory.MainRouter(aValue: TFMXObject): TRouter4DHistory;
begin
Result := Self;
FMainRouter := aValue;
end;
function TRouter4DHistory.MainRouter: TFMXObject;
begin
Result := FMainRouter;
end;
function TRouter4DHistory.IndexRouter(aValue: TFMXObject): TRouter4DHistory;
begin
Result := Self;
FIndexRouter := aValue;
end;
function TRouter4DHistory.IndexRouter: TFMXObject;
begin
Result := FIndexRouter;
end;
function TRouter4DHistory.AddHistoryConteiner( aKey : String; aObject : TFMXObject) : TRouter4DHistory;
var
auxObject : TFMXObject;
begin
Result := Self;
if not FListCacheContainer.TryGetValue(aKey, auxObject) then
FListCacheContainer.TryAdd(aKey, aObject);
end;
function TRouter4DHistory.GetHistoryContainer(aKey: String): TFMXObject;
begin
FListCacheContainer.TryGetValue(aKey, Result);
end;
{$ELSE}
function TRouter4DHistory.MainRouter(aValue: TPanel): TRouter4DHistory;
begin
Result := Self;
FMainRouter := aValue;
end;
function TRouter4DHistory.MainRouter: TPanel;
begin
Result := FMainRouter;
end;
function TRouter4DHistory.IndexRouter(aValue: TPanel): TRouter4DHistory;
begin
Result := Self;
FIndexRouter := aValue;
end;
function TRouter4DHistory.IndexRouter: TPanel;
begin
Result := FIndexRouter;
end;
function TRouter4DHistory.AddHistoryConteiner( aKey : String; aObject : TPanel) : TRouter4DHistory;
var
auxObject : TPanel;
begin
Result := Self;
if not FListCacheContainer.TryGetValue(aKey, auxObject) then
FListCacheContainer.TryAdd(aKey, aObject);
end;
function TRouter4DHistory.GetHistoryContainer(aKey: String): TPanel;
begin
FListCacheContainer.TryGetValue(aKey, Result);
end;
{$ENDIF}
function TRouter4DHistory.IndexCache: Integer;
begin
Result := Self.FIndexCache;
end;
function TRouter4DHistory.BreadCrumb(aDelimiter: char): String;
var
i : integer;
begin
Result := '';
if Self.FIndexCache = -1 then
Exit;
Result := Self.FListCacheOrder[Self.FIndexCache];
for i := Self.FIndexCache-1 downto 0 do
begin
Result := Self.FListCacheOrder[i] + ADelimiter + Result;
end;
end;
function TRouter4DHistory.GoBack: String;
begin
if Self.FIndexCache > 0 then
Dec(Self.FIndexCache);
Result := Self.FListCacheOrder[Self.FIndexCache];
end;
function TRouter4DHistory.AddHistory( aKey : String; aObject : TObject ) : iRouter4DComponent; function TRouter4DHistory.AddHistory( aKey : String; aObject : TObject ) : iRouter4DComponent;
var var
mKey : String; mKey : String;
@ -79,9 +212,6 @@ function TRouter4DHistory.AddHistory(aKey: String;
var var
CachePersistent : TCachePersistent; CachePersistent : TCachePersistent;
begin begin
//if not Supports(aObject, iRouter4DComponent, Result) then
//raise Exception.Create('Form not Implement iRouter4DelphiComponent Interface');
CachePersistent.FPatch := aKey; CachePersistent.FPatch := aKey;
CachePersistent.FisVisible := True; CachePersistent.FisVisible := True;
CachePersistent.FPersistentClass := aObject; CachePersistent.FPersistentClass := aObject;
@ -103,20 +233,36 @@ begin
try FListCache2.TryAdd(aKey, CachePersistent); except end; try FListCache2.TryAdd(aKey, CachePersistent); except end;
end; end;
function TRouter4DHistory.AddHistoryConteiner( aKey : String; aObject : TFMXObject) : TRouter4DHistory; procedure TRouter4DHistory.CacheKeyNotify(Sender: TObject; const Key: string;
var Action: TCollectionNotification);
auxObject : TFMXObject;
begin begin
Result := Self; inherited;
if not FListCacheContainer.TryGetValue(aKey, auxObject) then
FListCacheContainer.TryAdd(aKey, aObject); case Action of
cnAdded:
begin
Self.FListCacheOrder.Add(Key);
Self.FIndexCache := Self.FListCacheOrder.Count-1;
end;
cnRemoved:
begin
Self.FListCacheOrder.Remove(Key);
Self.FIndexCache := Self.FListCacheOrder.Count-1;
end;
end;
end; end;
constructor TRouter4DHistory.Create; constructor TRouter4DHistory.Create;
begin begin
FListCache := TObjectDictionary<String, TObject>.Create; FListCache := TObjectDictionary<String, TObject>.Create;
FListCache2 := TDictionary<String, TCachePersistent>.Create; FListCache2 := TDictionary<String, TCachePersistent>.Create;
{$IFDEF HAS_FMX}
FListCacheContainer := TObjectDictionary<String, TFMXObject>.Create; FListCacheContainer := TObjectDictionary<String, TFMXObject>.Create;
{$ELSE}
FListCacheContainer := TObjectDictionary<String, TPanel>.Create;
{$ENDIF}
end; end;
procedure TRouter4DHistory.CreateInstancePersistent( aPath : String); procedure TRouter4DHistory.CreateInstancePersistent( aPath : String);
@ -160,32 +306,11 @@ begin
FInstanteObject := Result; FInstanteObject := Result;
end; end;
function TRouter4DHistory.GetHistoryContainer(aKey: String): TFMXObject;
begin
FListCacheContainer.TryGetValue(aKey, Result);
end;
function TRouter4DHistory.IndexRouter: TFMXObject;
begin
Result := FIndexRouter;
end;
function TRouter4DHistory.InstanteObject: iRouter4DComponent; function TRouter4DHistory.InstanteObject: iRouter4DComponent;
begin begin
Result := FInstanteObject; Result := FInstanteObject;
end; end;
function TRouter4DHistory.IndexRouter(aValue: TFMXObject): TRouter4DHistory;
begin
Result := Self;
FIndexRouter := aValue;
end;
function TRouter4DHistory.MainRouter: TFMXObject;
begin
Result := FMainRouter;
end;
function TRouter4DHistory.RemoveHistory(aKey: String): TRouter4DHistory; function TRouter4DHistory.RemoveHistory(aKey: String): TRouter4DHistory;
begin begin
Result := Self; Result := Self;
@ -202,12 +327,6 @@ begin
Result := FListCache2; Result := FListCache2;
end; end;
function TRouter4DHistory.MainRouter(aValue: TFMXObject): TRouter4DHistory;
begin
Result := Self;
FMainRouter := aValue;
end;
initialization initialization
Router4DHistory := TRouter4DHistory.Create; Router4DHistory := TRouter4DHistory.Create;

View File

@ -1,5 +1,7 @@
unit Router4D.Interfaces; unit Router4D.Interfaces;
{$I Router4D.inc}
interface interface
uses uses
@ -7,7 +9,12 @@ uses
System.Generics.Collections, System.Generics.Collections,
System.UITypes, System.UITypes,
SysUtils, SysUtils,
{$IFDEF HAS_FMX}
FMX.Types, FMX.Types,
{$ELSE}
Vcl.ExtCtrls,
Vcl.Forms,
{$ENDIF}
Router4D.Props; Router4D.Props;
type type
@ -18,7 +25,11 @@ type
iRouter4DComponent = interface iRouter4DComponent = interface
['{C605AEFB-36DC-4952-A3D9-BA372B998BC3}'] ['{C605AEFB-36DC-4952-A3D9-BA372B998BC3}']
{$IFDEF HAS_FMX}
function Render : TFMXObject; function Render : TFMXObject;
{$ElSE}
function Render : TForm;
{$ENDIF}
procedure UnRender; procedure UnRender;
end; end;
@ -29,17 +40,26 @@ type
iRouter4DLink = interface iRouter4DLink = interface
['{3C80F86A-D6B8-470C-A30E-A82E620F6F1D}'] ['{3C80F86A-D6B8-470C-A30E-A82E620F6F1D}']
{$IFDEF HAS_FMX}
function &To ( aPatch : String; aComponent : TFMXObject ) : iRouter4DLink; overload; function &To ( aPatch : String; aComponent : TFMXObject ) : iRouter4DLink; overload;
function Animation ( aAnimation : TProc<TFMXObject> ) : iRouter4DLink;
{$ELSE}
function &To ( aPatch : String; aComponent : TPanel ) : iRouter4DLink; overload;
function Animation ( aAnimation : TProc<TPanel> ) : iRouter4DLink;
{$ENDIF}
function &To ( aPatch : String) : iRouter4DLink; overload; function &To ( aPatch : String) : iRouter4DLink; overload;
function &To ( aPatch : String; aProps : TProps; aKey : String = '') : iRouter4DLink; overload; function &To ( aPatch : String; aProps : TProps; aKey : String = '') : iRouter4DLink; overload;
function &To ( aPatch : String; aNameContainer : String) : iRouter4DLink; overload; function &To ( aPatch : String; aNameContainer : String) : iRouter4DLink; overload;
function Animation ( aAnimation : TProc<TFMXObject> ) : iRouter4DLink;
function IndexLink ( aPatch : String ) : iRouter4DLink; function IndexLink ( aPatch : String ) : iRouter4DLink;
end; end;
iRouter4DRender = interface iRouter4DRender = interface
['{2BD026ED-3A92-44E9-8CD4-38E80CB2F000}'] ['{2BD026ED-3A92-44E9-8CD4-38E80CB2F000}']
{$IFDEF HAS_FMX}
function SetElement ( aComponent : TFMXObject; aIndexComponent : TFMXObject = nil ) : iRouter4DRender; function SetElement ( aComponent : TFMXObject; aIndexComponent : TFMXObject = nil ) : iRouter4DRender;
{$ELSE}
function SetElement ( aComponent : TPanel; aIndexComponent : TPanel = nil ) : iRouter4DRender;
{$ENDIF}
end; end;
iRouter4DSwitch = interface iRouter4DSwitch = interface
@ -51,15 +71,23 @@ type
iRouter4DSidebar = interface iRouter4DSidebar = interface
['{B4E8C229-A801-4FCA-AF7B-DEF8D0EE5DFE}'] ['{B4E8C229-A801-4FCA-AF7B-DEF8D0EE5DFE}']
function Name ( aValue : String ) : iRouter4DSidebar; overload; function Name ( aValue : String ) : iRouter4DSidebar; overload;
{$IFDEF HAS_FMX}
function MainContainer ( aValue : TFMXObject ) : iRouter4DSidebar; overload; function MainContainer ( aValue : TFMXObject ) : iRouter4DSidebar; overload;
function Name : String; overload;
function MainContainer : TFMXObject; overload; function MainContainer : TFMXObject; overload;
function LinkContainer ( aValue : TFMXObject ) : iRouter4DSidebar;
function Animation ( aAnimation : TProc<TFMXObject> ) : iRouter4DSidebar;
function RenderToListBox : iRouter4DSidebar;
{$ELSE}
function MainContainer ( aValue : TPanel ) : iRouter4DSidebar; overload;
function MainContainer : TPanel; overload;
function LinkContainer ( aValue : TPanel ) : iRouter4DSidebar;
function Animation ( aAnimation : TProc<TPanel> ) : iRouter4DSidebar;
{$ENDIF}
function Name : String; overload;
function FontSize ( aValue : Integer ) : iRouter4DSidebar; function FontSize ( aValue : Integer ) : iRouter4DSidebar;
function FontColor ( aValue : TAlphaColor ) : iRouter4DSidebar; function FontColor ( aValue : TAlphaColor ) : iRouter4DSidebar;
function ItemHeigth ( aValue : Integer ) : iRouter4DSidebar; function ItemHeigth ( aValue : Integer ) : iRouter4DSidebar;
function LinkContainer ( aValue : TFMXObject ) : iRouter4DSidebar;
function RenderToListBox : iRouter4DSidebar;
function Animation ( aAnimation : TProc<TFMXObject> ) : iRouter4DSidebar;
end; end;
implementation implementation

View File

@ -1,10 +1,17 @@
unit Router4D.Link; unit Router4D.Link;
{$I Router4D.inc}
interface interface
uses uses
{$IFDEF HAS_FMX}
FMX.Types, FMX.Types,
FMX.Layouts, FMX.Layouts,
{$ELSE}
Vcl.ExtCtrls,
Router4D.Helper,
{$ENDIF}
SysUtils, SysUtils,
Router4D.Interfaces, Router4D.Interfaces,
Router4D.Props; Router4D.Props;
@ -12,13 +19,22 @@ uses
type type
TRouter4DLink = class(TInterfacedObject, iRouter4DLink) TRouter4DLink = class(TInterfacedObject, iRouter4DLink)
private private
{$IFDEF HAS_FMX}
FAnimation : TProc<TFMXObject>; FAnimation : TProc<TFMXObject>;
{$ELSE}
FAnimation : TProc<TPanel>;
{$ENDIF}
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
class function New : iRouter4DLink; class function New : iRouter4DLink;
{$IFDEF HAS_FMX}
function Animation ( aAnimation : TProc<TFMXObject> ) : iRouter4DLink; function Animation ( aAnimation : TProc<TFMXObject> ) : iRouter4DLink;
function &To ( aPatch : String; aComponent : TFMXObject ) : iRouter4DLink; overload; function &To ( aPatch : String; aComponent : TFMXObject ) : iRouter4DLink; overload;
{$ELSE}
function Animation ( aAnimation : TProc<TPanel> ) : iRouter4DLink;
function &To ( aPatch : String; aComponent : TPanel ) : iRouter4DLink; overload;
{$ENDIF}
function &To ( aPatch : String) : iRouter4DLink; overload; function &To ( aPatch : String) : iRouter4DLink; overload;
function &To ( aPatch : String; aProps : TProps; aKey : String = '') : iRouter4DLink; overload; function &To ( aPatch : String; aProps : TProps; aKey : String = '') : iRouter4DLink; overload;
function &To ( aPatch : String; aNameContainer : String) : iRouter4DLink; overload; function &To ( aPatch : String; aNameContainer : String) : iRouter4DLink; overload;
@ -31,6 +47,13 @@ implementation
uses Router4D.History; uses Router4D.History;
{$IFDEF HAS_FMX}
function TRouter4DLink.Animation(aAnimation: TProc<TFMXObject>): iRouter4DLink;
begin
Result := Self;
FAnimation := aAnimation;
end;
function TRouter4DLink.&To( aPatch : String; aComponent : TFMXObject ) : iRouter4DLink; function TRouter4DLink.&To( aPatch : String; aComponent : TFMXObject ) : iRouter4DLink;
begin begin
Result := Self; Result := Self;
@ -43,15 +66,43 @@ begin
.Render .Render
); );
end; end;
{$ELSE}
function TRouter4DLink.Animation(aAnimation: TProc<TPanel>): iRouter4DLink;
begin
Result := Self;
FAnimation := aAnimation;
end;
function TRouter4DLink.&To( aPatch : String; aComponent : TPanel ) : iRouter4DLink;
begin
Result := Self;
aComponent.RemoveObject;
Router4DHistory.InstanteObject.UnRender;
aComponent
.AddObject(
Router4DHistory
.GetHistory(aPatch)
.Render
);
end;
{$ENDIF}
function TRouter4DLink.&To(aPatch, aNameContainer: String): iRouter4DLink; function TRouter4DLink.&To(aPatch, aNameContainer: String): iRouter4DLink;
var var
{$IFDEF HAS_FMX}
aContainer : TFMXObject; aContainer : TFMXObject;
{$ELSE}
aContainer : TPanel;
{$ENDIF}
begin begin
Result := Self; Result := Self;
Router4DHistory.InstanteObject.UnRender; Router4DHistory.InstanteObject.UnRender;
aContainer := Router4DHistory.GetHistoryContainer(aNameContainer); aContainer := Router4DHistory.GetHistoryContainer(aNameContainer);
{$IFDEF HAS_FMX}
aContainer.RemoveObject(0); aContainer.RemoveObject(0);
{$ELSE}
aContainer.RemoveObject;
{$ENDIF}
aContainer aContainer
.AddObject( .AddObject(
@ -65,12 +116,6 @@ begin
end; end;
function TRouter4DLink.Animation(aAnimation: TProc<TFMXObject>): iRouter4DLink;
begin
Result := Self;
FAnimation := aAnimation;
end;
constructor TRouter4DLink.Create; constructor TRouter4DLink.Create;
begin begin
@ -85,7 +130,11 @@ end;
function TRouter4DLink.IndexLink(aPatch: String): iRouter4DLink; function TRouter4DLink.IndexLink(aPatch: String): iRouter4DLink;
begin begin
Result := Self; Result := Self;
{$IFDEF HAS_FMX}
Router4DHistory.IndexRouter.RemoveObject(0); Router4DHistory.IndexRouter.RemoveObject(0);
{$ELSE}
Router4DHistory.IndexRouter.RemoveObject;
{$ENDIF}
Router4DHistory.InstanteObject.UnRender; Router4DHistory.InstanteObject.UnRender;
Router4DHistory Router4DHistory
.IndexRouter .IndexRouter
@ -103,7 +152,11 @@ end;
function TRouter4DLink.&To(aPatch: String) : iRouter4DLink; function TRouter4DLink.&To(aPatch: String) : iRouter4DLink;
begin begin
Result := Self; Result := Self;
{$IFDEF HAS_FMX}
Router4DHistory.MainRouter.RemoveObject(0); Router4DHistory.MainRouter.RemoveObject(0);
{$ELSE}
Router4DHistory.MainRouter.RemoveObject;
{$ENDIF}
Router4DHistory.InstanteObject.UnRender; Router4DHistory.InstanteObject.UnRender;
Router4DHistory Router4DHistory
.MainRouter .MainRouter
@ -121,7 +174,11 @@ end;
function TRouter4DLink.&To(aPatch: String; aProps: TProps; aKey : String = '') : iRouter4DLink; function TRouter4DLink.&To(aPatch: String; aProps: TProps; aKey : String = '') : iRouter4DLink;
begin begin
Result := Self; Result := Self;
{$IFDEF HAS_FMX}
Router4DHistory.MainRouter.RemoveObject(0); Router4DHistory.MainRouter.RemoveObject(0);
{$ELSE}
Router4DHistory.MainRouter.RemoveObject;
{$ENDIF}
Router4DHistory.InstanteObject.UnRender; Router4DHistory.InstanteObject.UnRender;
Router4DHistory Router4DHistory
.MainRouter .MainRouter

View File

@ -16,6 +16,8 @@
unit Router4D.Props; unit Router4D.Props;
{$I Router4D.inc}
interface interface
uses uses

View File

@ -1,10 +1,17 @@
unit Router4D.Render; unit Router4D.Render;
{$I Router4D.inc}
interface interface
uses uses
Router4D.Interfaces, {$IFDEF HAS_FMX}
FMX.Types; FMX.Types,
{$ELSE}
Vcl.ExtCtrls,
Router4D.Helper,
{$ENDIF}
Router4D.Interfaces;
type type
TRouter4DRender = class(TInterfacedObject, iRouter4DRender) TRouter4DRender = class(TInterfacedObject, iRouter4DRender)
@ -15,7 +22,11 @@ type
constructor Create(Parent : iRouter4DComponent); constructor Create(Parent : iRouter4DComponent);
destructor Destroy; override; destructor Destroy; override;
class function New(Parent : iRouter4DComponent) : iRouter4DRender; class function New(Parent : iRouter4DComponent) : iRouter4DRender;
{$IFDEF HAS_FMX}
function SetElement ( aComponent : TFMXObject; aIndexComponent : TFMXObject = nil ) : iRouter4DRender; function SetElement ( aComponent : TFMXObject; aIndexComponent : TFMXObject = nil ) : iRouter4DRender;
{$ELSE}
function SetElement ( aComponent : TPanel; aIndexComponent : TPanel = nil ) : iRouter4DRender;
{$ENDIF}
end; end;
implementation implementation
@ -36,6 +47,7 @@ begin
inherited; inherited;
end; end;
{$IFDEF HAS_FMX}
function TRouter4DRender.SetElement( aComponent : TFMXObject; aIndexComponent : TFMXObject = nil ) : iRouter4DRender; function TRouter4DRender.SetElement( aComponent : TFMXObject; aIndexComponent : TFMXObject = nil ) : iRouter4DRender;
begin begin
Result := Self; Result := Self;
@ -49,8 +61,23 @@ begin
aComponent.RemoveObject(0); aComponent.RemoveObject(0);
aComponent.AddObject(FParent.Render); aComponent.AddObject(FParent.Render);
end; end;
end; end;
{$ELSE}
function TRouter4DRender.SetElement( aComponent : TPanel; aIndexComponent : TPanel = nil ) : iRouter4DRender;
begin
Result := Self;
Router4DHistory.MainRouter(aComponent);
if aIndexComponent <> nil then
Router4DHistory.IndexRouter(aIndexComponent);
if Assigned(FParent) then
begin
aComponent.RemoveObject;
aComponent.AddObject(FParent.Render);
end;
end;
{$ENDIF}
class function TRouter4DRender.New( class function TRouter4DRender.New(
Parent: iRouter4DComponent): iRouter4DRender; Parent: iRouter4DComponent): iRouter4DRender;

View File

@ -6,41 +6,41 @@ uses
Classes, Classes,
SysUtils, SysUtils,
FMX.Types, FMX.Types,
FMX.ListBox,
FMX.SearchBox,
FMX.Layouts,
Router4D.Interfaces, Router4D.Interfaces,
System.UITypes; System.UITypes;
type type
TRouter4DSidebar = class(TInterfacedObject, iRouter4DSidebar) TRouter4DSidebar = class(TInterfacedObject, iRouter4DSidebar)
private private
FName : String; FName : String;
FMainContainer : TFMXObject; FMainContainer : TFMXObject;
FLinkContainer : TFMXObject;
FAnimation : TProc<TFMXObject>;
FFontSize : Integer; FFontSize : Integer;
FFontColor : TAlphaColor; FFontColor : TAlphaColor;
FItemHeigth : Integer; FItemHeigth : Integer;
FLinkContainer : TFMXObject;
FAnimation : TProc<TFMXObject>;
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
class function New : iRouter4DSidebar; class function New : iRouter4DSidebar;
function Animation ( aAnimation : TProc<TFMXObject> ) : iRouter4DSidebar; function Animation ( aAnimation : TProc<TFMXObject> ) : iRouter4DSidebar;
function Name ( aValue : String ) : iRouter4DSidebar; overload;
function MainContainer ( aValue : TFMXObject ) : iRouter4DSidebar; overload; function MainContainer ( aValue : TFMXObject ) : iRouter4DSidebar; overload;
function Name : String; overload;
function MainContainer : TFMXObject; overload; function MainContainer : TFMXObject; overload;
function LinkContainer ( aValue : TFMXObject ) : iRouter4DSidebar;
function RenderToListBox : iRouter4DSidebar;
function Name ( aValue : String ) : iRouter4DSidebar; overload;
function Name : String; overload;
function FontSize ( aValue : Integer ) : iRouter4DSidebar; function FontSize ( aValue : Integer ) : iRouter4DSidebar;
function FontColor ( aValue : TAlphaColor ) : iRouter4DSidebar; function FontColor ( aValue : TAlphaColor ) : iRouter4DSidebar;
function ItemHeigth ( aValue : Integer ) : iRouter4DSidebar; function ItemHeigth ( aValue : Integer ) : iRouter4DSidebar;
function LinkContainer ( aValue : TFMXObject ) : iRouter4DSidebar;
function RenderToListBox : iRouter4DSidebar;
end; end;
implementation implementation
uses uses
FMX.ListBox,
FMX.SearchBox,
FMX.Layouts,
Router4D, Router4D,
Router4D.History, Router4D.History,
Router4D.Utils; Router4D.Utils;
@ -54,36 +54,6 @@ begin
FAnimation := aAnimation; FAnimation := aAnimation;
end; end;
constructor TRouter4DSidebar.Create;
begin
FName := 'SBIndex';
FLinkContainer := Router4DHistory.MainRouter;
end;
destructor TRouter4DSidebar.Destroy;
begin
inherited;
end;
function TRouter4DSidebar.FontColor(aValue: TAlphaColor): iRouter4DSidebar;
begin
Result := Self;
FFontColor := aValue;
end;
function TRouter4DSidebar.FontSize(aValue: Integer): iRouter4DSidebar;
begin
Result := Self;
FFontSize := aValue;
end;
function TRouter4DSidebar.ItemHeigth(aValue: Integer): iRouter4DSidebar;
begin
Result := Self;
FItemHeigth := aValue;
end;
function TRouter4DSidebar.LinkContainer(aValue: TFMXObject): iRouter4DSidebar; function TRouter4DSidebar.LinkContainer(aValue: TFMXObject): iRouter4DSidebar;
begin begin
Result := Self; Result := Self;
@ -101,38 +71,24 @@ begin
Result := FMainContainer; Result := FMainContainer;
end; end;
function TRouter4DSidebar.Name(aValue: String): iRouter4DSidebar;
begin
Result := Self;
FName := aValue;
end;
function TRouter4DSidebar.Name: String;
begin
Result := FName;
end;
class function TRouter4DSidebar.New: iRouter4DSidebar;
begin
Result := Self.Create;
end;
function TRouter4DSidebar.RenderToListBox: iRouter4DSidebar; function TRouter4DSidebar.RenderToListBox: iRouter4DSidebar;
var var
aListBox : TListBox; aListBox : TListBox;
aListBoxItem : TListBoxItem; aListBoxItem : TListBoxItem;
aItem : TCachePersistent;
AListBoxSearch : TSearchBox; AListBoxSearch : TSearchBox;
aItem : TCachePersistent;
begin begin
aListBox := TListBox.Create(FMainContainer); aListBox := TListBox.Create(FMainContainer);
aListBox.Align := TAlignLayout.Client; aListBox.Align := TAlignLayout.Client;
aListBox.ItemHeight := FItemHeigth;
aListBox.StyleLookup := 'transparentlistboxstyle'; aListBox.StyleLookup := 'transparentlistboxstyle';
aListBox.BeginUpdate; aListBox.BeginUpdate;
AListBoxSearch := TSearchBox.Create(aListBox); AListBoxSearch := TSearchBox.Create(aListBox);
AListBoxSearch.Height := FItemHeigth - 25; AListBoxSearch.Height := FItemHeigth - 25;
aListBox.ItemHeight := FItemHeigth;
aListBox.AddObject(AListBoxSearch); aListBox.AddObject(AListBoxSearch);
for aItem in Router4DHistory.RoutersListPersistent.Values do for aItem in Router4DHistory.RoutersListPersistent.Values do
@ -179,4 +135,50 @@ begin
FMainContainer.AddObject(aListBox); FMainContainer.AddObject(aListBox);
end; end;
constructor TRouter4DSidebar.Create;
begin
FName := 'SBIndex';
FLinkContainer := Router4DHistory.MainRouter;
end;
destructor TRouter4DSidebar.Destroy;
begin
inherited;
end;
function TRouter4DSidebar.FontColor(aValue: TAlphaColor): iRouter4DSidebar;
begin
Result := Self;
FFontColor := aValue;
end;
function TRouter4DSidebar.FontSize(aValue: Integer): iRouter4DSidebar;
begin
Result := Self;
FFontSize := aValue;
end;
function TRouter4DSidebar.ItemHeigth(aValue: Integer): iRouter4DSidebar;
begin
Result := Self;
FItemHeigth := aValue;
end;
function TRouter4DSidebar.Name(aValue: String): iRouter4DSidebar;
begin
Result := Self;
FName := aValue;
end;
function TRouter4DSidebar.Name: String;
begin
Result := FName;
end;
class function TRouter4DSidebar.New: iRouter4DSidebar;
begin
Result := Self.Create;
end;
end. end.

View File

@ -1,5 +1,7 @@
unit Router4D.Switch; unit Router4D.Switch;
{$I Router4D.inc}
interface interface
uses uses

View File

@ -1,5 +1,7 @@
unit Router4D.Utils; unit Router4D.Utils;
{$I Router4D.inc}
interface interface
uses uses

1
src/Router4D.inc Normal file
View File

@ -0,0 +1 @@
{$DEFINE HAS_FMX}

View File

@ -1,5 +1,7 @@
unit Router4D; unit Router4D;
{$I Router4D.inc}
interface interface
uses uses
@ -8,7 +10,11 @@ uses
System.Rtti, System.Rtti,
System.TypInfo, System.TypInfo,
SysUtils, SysUtils,
{$IFDEF HAS_FMX}
FMX.Types, FMX.Types,
{$ELSE}
Vcl.ExtCtrls,
{$ENDIF}
Router4D.Interfaces, Router4D.Interfaces,
Router4D.History, Router4D.History,
Router4D.Render, Router4D.Render,