From eba7ff021f2d8abfffe1a4bed2c08a79f93a70d2 Mon Sep 17 00:00:00 2001 From: Tim Sinaeve Date: Mon, 9 Nov 2015 17:53:28 +0100 Subject: [PATCH] - Minor improvements - Resolved some issues when compiling with XE5 --- Concepts.ComponentInspector.dfm | 44 ++ Concepts.ComponentInspector.pas | 301 ++++++++++ Concepts.Factories.pas | 19 +- Concepts.MainForm.dfm | 12 - Concepts.Registration.pas | 15 +- Concepts.XE5.dpr | 323 +++++++++++ Concepts.XE5.dproj | 947 ++++++++++++++++++++++++++++++++ Concepts.XE5.res | Bin 0 -> 163656 bytes Concepts.dpr | 2 +- Concepts.dproj | 52 +- Concepts.res | Bin 163656 -> 163348 bytes Libraries/TChromeTabs/README.md | 5 - Overrides.inc | 21 - README.md | 2 - 14 files changed, 1668 insertions(+), 75 deletions(-) create mode 100644 Concepts.ComponentInspector.dfm create mode 100644 Concepts.ComponentInspector.pas create mode 100644 Concepts.XE5.dpr create mode 100644 Concepts.XE5.dproj create mode 100644 Concepts.XE5.res delete mode 100644 Libraries/TChromeTabs/README.md delete mode 100644 Overrides.inc delete mode 100644 README.md diff --git a/Concepts.ComponentInspector.dfm b/Concepts.ComponentInspector.dfm new file mode 100644 index 00000000..05eea823 --- /dev/null +++ b/Concepts.ComponentInspector.dfm @@ -0,0 +1,44 @@ +object frmComponentInspector: TfrmComponentInspector + Left = 0 + Top = 0 + BorderStyle = bsSizeToolWin + ClientHeight = 647 + ClientWidth = 392 + Color = clBtnFace + DoubleBuffered = True + DragKind = dkDock + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poDesigned + ScreenSnap = True + OnActivate = FormActivate + OnClose = FormClose + OnResize = FormResize + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object pnlMain: TPanel + Left = 0 + Top = 0 + Width = 392 + Height = 647 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + object cbxInspector: TComboBox + AlignWithMargins = True + Left = 3 + Top = 3 + Width = 386 + Height = 21 + Margins.Bottom = 0 + Align = alTop + TabOrder = 0 + OnChange = cbxInspectorChange + end + end +end diff --git a/Concepts.ComponentInspector.pas b/Concepts.ComponentInspector.pas new file mode 100644 index 00000000..77492352 --- /dev/null +++ b/Concepts.ComponentInspector.pas @@ -0,0 +1,301 @@ +{ + Copyright (C) 2013-2015 Tim Sinaeve tim.sinaeve@gmail.com + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +} + +unit Concepts.ComponentInspector; + +interface + +uses + Winapi.Windows, Winapi.Messages, + System.SysUtils, System.Variants, System.Classes, System.Contnrs, + System.TypInfo, + Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.StdCtrls, + Vcl.ExtCtrls, + + DDuce.Components.PropertyInspector; + +type + TfrmComponentInspector = class(TForm) + pnlMain : TPanel; + cbxInspector : TComboBox; + + procedure cbxInspectorChange(Sender: TObject); + procedure FormResize(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure FormActivate(Sender: TObject); + procedure FormShow(Sender: TObject); + + private + FInspector: TPropertyInspector; + + procedure CMDialogKey(var Msg: TCMDialogKey); message CM_DIALOGKEY; + + public + constructor Create( + AOwner : TComponent; + AObject : TPersistent + ); reintroduce; + + procedure CreatePropertyInspector; + + procedure AddComponentToInspector(AComponent: TPersistent); virtual; + procedure FocusComponentInInspector(AComponent: TPersistent); virtual; + end; + +procedure InspectComponent(AComponent : TComponent); + +procedure InspectObject(AObject : TPersistent); + +procedure InspectComponents(AComponent : TComponent); overload; + +procedure InspectApplicationComponents; + +procedure InspectComponents(AComponents : array of TComponent); overload; + +procedure InspectComponents(AComponents : TComponentList); overload; + +implementation + +{$R *.dfm} + +{$REGION 'interfaced routines'} +procedure InspectComponent(AComponent : TComponent); +var + InspectorForm : TfrmComponentInspector; +begin + if Assigned(AComponent) then + begin + InspectorForm := TfrmComponentInspector.Create(Application, AComponent); + InspectorForm.Show; + end + else + raise Exception.Create('No component Assigned'); +end; + +procedure InspectObject(AObject : TPersistent); +var + InspectorForm : TfrmComponentInspector; +begin + if Assigned(AObject) then + begin + InspectorForm := TfrmComponentInspector.Create(Application, AObject); + InspectorForm.Show; + end + else + raise Exception.Create('No component Assigned'); +end; + +procedure InspectComponents(AComponents : array of TComponent); +var + InspectorForm : TfrmComponentInspector; + I : Integer; +begin + if Length(AComponents) > 0 then + begin + InspectorForm := TfrmComponentInspector.Create(Application, AComponents[0]); + for I := 1 to High(AComponents) do + InspectorForm.AddComponentToInspector(AComponents[I]); + InspectorForm.Show; + InspectorForm.FocusComponentInInspector(AComponents[0]); + end + else + raise Exception.Create('Component array is empty'); +end; + +procedure InspectComponents(AComponents : TComponentList); +var + InspectorForm : TfrmComponentInspector; + I : Integer; +begin + if Assigned(AComponents) then + begin + if AComponents.Count > 0 then + begin + InspectorForm := TfrmComponentInspector.Create(Application, AComponents[0]); + for I := 1 to AComponents.Count - 1 do + InspectorForm.AddComponentToInspector(AComponents[I]); + InspectorForm.Show; + InspectorForm.FocusComponentInInspector(AComponents[0]); + end + end + else + raise Exception.Create('Componentlist not assigned'); +end; + +procedure InspectComponents(AComponent : TComponent); +var + CL : TComponentList; + I : Integer; +begin + CL := TComponentList.Create(False); + try + for I := 0 to AComponent.ComponentCount - 1 do + CL.Add(AComponent.Components[I]); + InspectComponents(CL); + finally + CL.Free; + end; +end; + +procedure InspectApplicationComponents; +var + CL : TComponentList; + I, J : Integer; +begin + CL := TComponentList.Create(False); + try + for I := 0 to Screen.FormCount - 1 do + for J := 0 to Screen.Forms[I].ComponentCount - 1 do + CL.Add(Screen.Forms[I].Components[J]); + + for I := 0 to Screen.DataModuleCount - 1 do + for J := 0 to Screen.DataModules[I].ComponentCount - 1 do + CL.Add(Screen.DataModules[I].Components[J]); + + InspectComponents(CL); + finally + CL.Free; + end; +end; +{$ENDREGION} + +{$REGION 'construction and destruction'} +constructor TfrmComponentInspector.Create(AOwner: TComponent; AObject: TPersistent); +begin + inherited Create(AOwner); + CreatePropertyInspector; + AddComponentToInspector(AObject); + FocusComponentInInspector(AObject); +end; +{$ENDREGION} + +{$REGION 'message handlers'} +procedure TfrmComponentInspector.CMDialogKey(var Msg: TCMDialogKey); +begin + if Msg.CharCode = VK_ESCAPE then + begin + ModalResult := mrCancel; + Close; + end + else + inherited; +end; +{$ENDREGION} + +{$REGION 'private methods'} +procedure TfrmComponentInspector.CreatePropertyInspector; +begin + FInspector := TPropertyInspector.Create(Self); + with FInspector do + begin + Parent := pnlMain; + AlignWithMargins := True; + Left := 3; + Top := 30; + Width := 386; + Height := 614; + PropKinds := [pkProperties, pkReadOnly]; + Splitter := 197; + Align := alBottom; + Anchors := [akLeft, akTop, akRight, akBottom]; + ParentShowHint := False; + ShowHint := True; + TabOrder := 0; + end; +end; +{$ENDREGION} + +{$REGION 'public methods'} +procedure TfrmComponentInspector.AddComponentToInspector( + AComponent: TPersistent); +var + S : string; + sName : string; + CI : TCollectionItem; +begin + if AComponent is TComponent then + begin + sName := TComponent(AComponent).Name; + if sName = '' then + sName := 'unnamed'; + S := Format('%s - %s', [sName, AComponent.ClassName]); + cbxInspector.Items.AddObject(S, AComponent); + end + else + if AComponent is TCollection then + begin + for CI in TCollection(AComponent) do + begin + S := Format('%s[%d]', [CI.ClassName, + (CI as TCollectionItem).Index]); + cbxInspector.Items.AddObject(S, CI); + end; + end + else + begin + S := Format('%s', [AComponent.ClassName]); + cbxInspector.Items.AddObject(S, AComponent); + end; +end; + +procedure TfrmComponentInspector.FocusComponentInInspector( + AComponent: TPersistent); +begin + cbxInspector.ItemIndex := cbxInspector.Items.IndexOfObject(AComponent); + cbxInspectorChange(nil); +end; +{$ENDREGION} + +{$REGION 'event handlers'} +procedure TfrmComponentInspector.cbxInspectorChange(Sender: TObject); +begin + FInspector.BeginUpdate; + try + FInspector.Clear; + if (cbxInspector.ItemIndex >= 0) and + Assigned(cbxInspector.Items.Objects[cbxInspector.ItemIndex]) then + FInspector.Add(cbxInspector.Items.Objects[cbxInspector.ItemIndex] as + TPersistent); + finally + FInspector.EndUpdate; + end; +end; + +procedure TfrmComponentInspector.FormActivate(Sender: TObject); +begin + FInspector.UpdateItems; +end; + +procedure TfrmComponentInspector.FormClose(Sender: TObject; + var Action: TCloseAction); +begin + Action := caFree; +end; + +procedure TfrmComponentInspector.FormResize(Sender: TObject); +begin + FInspector.Splitter := FInspector.ClientWidth div 2; +end; + +procedure TfrmComponentInspector.FormShow(Sender: TObject); +begin + if FInspector.ObjectCount > 0 then + FocusComponentInInspector(FInspector.Objects[0]); + Height := Screen.WorkAreaHeight; +end; +{$ENDREGION} + +end. diff --git a/Concepts.Factories.pas b/Concepts.Factories.pas index d6673165..51a10388 100644 --- a/Concepts.Factories.pas +++ b/Concepts.Factories.pas @@ -121,7 +121,9 @@ TConceptFactories = record const AName : string = '' ): TDBGrid; static; - class function CreateRandomContact: TContact; static; + class function CreateRandomContact( + ASpecial: Boolean = False + ): TContact; static; end; implementation @@ -434,6 +436,8 @@ class function TConceptFactories.CreateTreeViewPresenter(AOwner: TComponent; begin TVP := TTreeViewPresenter.Create(AOwner); TVP.TreeView := AVST; + TVP.SyncMode := True; + TVP.ListMode := False; InitializePresenter(TVP, ASource, ATemplate, AFilter); Result := TVP; end; @@ -484,16 +488,18 @@ class procedure TConceptFactories.FillListWithContacts(AList: IObjectList; ACount: Integer); var I : Integer; + B : Boolean; begin Guard.CheckNotNull(AList, 'AList'); AList.Clear; + B := ACount < 40000; for I := 0 to ACount - 1 do begin - AList.Add(CreateRandomContact); + AList.Add(CreateRandomContact(B)); end; end; -class function TConceptFactories.CreateRandomContact: TContact; +class function TConceptFactories.CreateRandomContact(ASpecial: Boolean = False): TContact; var C: TContact; begin @@ -502,7 +508,10 @@ class function TConceptFactories.CreateRandomContact: TContact; begin FirstName := RandomData.FirstName; LastName := RandomData.LastName; - CompanyName := RandomData.CompanyName; + if ASpecial then + CompanyName := RandomData.AlliteratedCompanyName + else + CompanyName := RandomData.CompanyName; Email := RandomData.Email(FirstName, LastName); Address := RandomData.Address; Number := RandomData.Number(100); @@ -525,7 +534,9 @@ class procedure TConceptFactories.InitializePresenter( for P in C.GetType(ASource.ElementType).GetProperties do begin with APresenter.ColumnDefinitions.Add(P.Name) do + begin ValuePropertyName := P.Name; + end; end; end; APresenter.UseColumnDefinitions := True; diff --git a/Concepts.MainForm.dfm b/Concepts.MainForm.dfm index 8696b4c0..bf7a3c39 100644 --- a/Concepts.MainForm.dfm +++ b/Concepts.MainForm.dfm @@ -22,8 +22,6 @@ object frmMain: TfrmMain Align = alClient BevelOuter = bvNone TabOrder = 0 - ExplicitWidth = 1008 - ExplicitHeight = 583 object edtFilter: TEdit AlignWithMargins = True Left = 3 @@ -41,7 +39,6 @@ object frmMain: TfrmMain OnChange = edtFilterChange OnKeyDown = edtFilterKeyDown OnKeyUp = edtFilterKeyUp - ExplicitWidth = 1002 end end object sbrMain: TStatusBar @@ -51,8 +48,6 @@ object frmMain: TfrmMain Height = 19 Panels = <> SimplePanel = True - ExplicitTop = 617 - ExplicitWidth = 1008 end object pnlButtons: TGridPanel Left = 0 @@ -91,8 +86,6 @@ object frmMain: TfrmMain Value = 100.000000000000000000 end> TabOrder = 2 - ExplicitTop = 583 - ExplicitWidth = 1008 object btnExecute: TButton AlignWithMargins = True Left = 260 @@ -106,8 +99,6 @@ object frmMain: TfrmMain Images = dmResources.imlMain ParentDoubleBuffered = False TabOrder = 0 - ExplicitLeft = 349 - ExplicitWidth = 326 end object btnClose: TButton AlignWithMargins = True @@ -122,8 +113,6 @@ object frmMain: TfrmMain Images = dmResources.imlMain ParentDoubleBuffered = False TabOrder = 1 - ExplicitLeft = 681 - ExplicitWidth = 323 end object btnExecuteModal: TButton AlignWithMargins = True @@ -139,7 +128,6 @@ object frmMain: TfrmMain Images = dmResources.imlMain ParentDoubleBuffered = False TabOrder = 2 - ExplicitWidth = 339 end end object aclMain: TActionList diff --git a/Concepts.Registration.pas b/Concepts.Registration.pas index 55b05b47..d4b91792 100644 --- a/Concepts.Registration.pas +++ b/Concepts.Registration.pas @@ -62,6 +62,7 @@ implementation Concepts.Spring.ObjectDataSet.Form, Concepts.Spring.Logging.Form, Concepts.Spring.Types.Form, + Concepts.Spring.Utils.Form, {$ENDIF} {$IFDEF ASYNCCALLS} @@ -165,13 +166,13 @@ class procedure TConcepts.RegisterSpringConcepts; 'Spring types', FCategoryColor ); -// ConceptManager.Register( -// TfrmSpringUtils, -// 'Utils', -// 'Spring', -// 'Utillity classes and routines', -// FCategoryColor -// ); + ConceptManager.Register( + TfrmSpringUtils, + 'Utils', + 'Spring', + 'Utillity classes and routines', + FCategoryColor + ); {$ENDIF} end; diff --git a/Concepts.XE5.dpr b/Concepts.XE5.dpr new file mode 100644 index 00000000..bfc0498e --- /dev/null +++ b/Concepts.XE5.dpr @@ -0,0 +1,323 @@ +program Concepts.XE5; + +{$I Concepts.inc} + +uses + Forms, + Vcl.Themes, + Vcl.Styles, + System.ImageList in 'Types\System.ImageList.pas', + AsyncCalls in 'Libraries\AsyncCalls\AsyncCalls.pas', + BTMemoryModule in 'Libraries\BTMemoryModule\BTMemoryModule.pas', + ChromeTabs in 'Libraries\TChromeTabs\Lib\ChromeTabs.pas', + ChromeTabsClasses in 'Libraries\TChromeTabs\Lib\ChromeTabsClasses.pas', + ChromeTabsControls in 'Libraries\TChromeTabs\Lib\ChromeTabsControls.pas', + ChromeTabsGlassForm in 'Libraries\TChromeTabs\Lib\ChromeTabsGlassForm.pas', + ChromeTabsLog in 'Libraries\TChromeTabs\Lib\ChromeTabsLog.pas', + ChromeTabsThreadTimer in 'Libraries\TChromeTabs\Lib\ChromeTabsThreadTimer.pas', + ChromeTabsTypes in 'Libraries\TChromeTabs\Lib\ChromeTabsTypes.pas', + ChromeTabsUtils in 'Libraries\TChromeTabs\Lib\ChromeTabsUtils.pas', + Concepts.AsyncCalls.Form in 'Forms\Concepts.AsyncCalls.Form.pas' {frmAsyncCalls}, + Concepts.BTMemoryModule.Form in 'Forms\Concepts.BTMemoryModule.Form.pas' {frmBTMemoryModule}, + Concepts.ChromeTabs.Form in 'Forms\Concepts.ChromeTabs.Form.pas' {frmChromeTabs}, + Concepts.ComponentInspectorTemplate.Form in 'Forms\Concepts.ComponentInspectorTemplate.Form.pas' {frmPropertyInspector}, + Concepts.DevExpress.cxEditors.Form in 'Forms\Concepts.DevExpress.cxEditors.Form.pas' {frmcxEditors}, + Concepts.DevExpress.cxGridViewPresenter.Form in 'Forms\Concepts.DevExpress.cxGridViewPresenter.Form.pas' {frmcxGridViewPresenter}, + Concepts.DSharp.Bindings.Form in 'Forms\Concepts.DSharp.Bindings.Form.pas' {frmBindings}, + Concepts.DSharp.TreeViewPresenter.Form in 'Forms\Concepts.DSharp.TreeViewPresenter.Form.pas' {frmTreeViewPresenter}, + Concepts.Factories in 'Concepts.Factories.pas', + Concepts.MainForm in 'Concepts.MainForm.pas' {frmMain}, + Concepts.Manager in 'Concepts.Manager.pas', + Concepts.Registration in 'Concepts.Registration.pas', + Concepts.Resources in 'Concepts.Resources.pas' {dmResources: TDataModule}, + Concepts.RTTEye.Form in 'Forms\Concepts.RTTEye.Form.pas' {frmRTTEye}, + Concepts.RTTEye.Templates in 'Types\Concepts.RTTEye.Templates.pas', + Concepts.Spring.Collections.Form in 'Forms\Concepts.Spring.Collections.Form.pas' {frmCollections}, + Concepts.Spring.Interception.Form in 'Forms\Concepts.Spring.Interception.Form.pas' {frmSpringInterception}, + Concepts.Spring.LazyInstantiation.Form in 'Forms\Concepts.Spring.LazyInstantiation.Form.pas' {frmLazyInstantiation}, + Concepts.Spring.Logging.Form in 'Forms\Concepts.Spring.Logging.Form.pas' {frmSpringLogging}, + Concepts.Spring.MultiCastEvents.ChildForm in 'Forms\Concepts.Spring.MultiCastEvents.ChildForm.pas' {frmMulticastEventsChild}, + Concepts.Spring.MultiCastEvents.Data in 'Forms\Concepts.Spring.MultiCastEvents.Data.pas', + Concepts.Spring.MultiCastEvents.Form in 'Forms\Concepts.Spring.MultiCastEvents.Form.pas' {frmMulticastEvents}, + Concepts.Spring.ObjectDataSet.Form in 'Forms\Concepts.Spring.ObjectDataSet.Form.pas' {frmObjectDataSet}, + Concepts.Spring.Types.Form in 'Forms\Concepts.Spring.Types.Form.pas' {frmSpringTypes}, + Concepts.Spring.Utils.Form in 'Forms\Concepts.Spring.Utils.Form.pas' {frmSpringUtils}, + Concepts.SQLBuilder4D.Form in 'Forms\Concepts.SQLBuilder4D.Form.pas' {frmSQLBuilder4D}, + Concepts.System.AnonymousMethods.Form in 'Forms\Concepts.System.AnonymousMethods.Form.pas' {frmAnonymousMethods}, + Concepts.System.InterfaceImplementationByAggregation.Form in 'Forms\Concepts.System.InterfaceImplementationByAggregation.Form.pas' {frmIterFaceImplementationByAggregation}, + Concepts.System.Libraries.Form in 'Forms\Concepts.System.Libraries.Form.pas' {frmLibraries}, + Concepts.System.LiveBindings.Form in 'Forms\Concepts.System.LiveBindings.Form.pas' {frmLiveBindings}, + Concepts.System.RegularExpressions.Form in 'Forms\Concepts.System.RegularExpressions.Form.pas' {frmRegularExpressions}, + Concepts.System.RTTI.Form in 'Forms\Concepts.System.RTTI.Form.pas' {frmRTTI}, + Concepts.System.Threading.Form in 'Forms\Concepts.System.Threading.Form.pas' {frmThreading}, + Concepts.System.Threads.Form in 'Forms\Concepts.System.Threads.Form.pas' {frmThreads}, + Concepts.System.Variants.Form in 'Forms\Concepts.System.Variants.Form.pas' {frmVariants}, + Concepts.System.VirtualInterface.Form in 'Forms\Concepts.System.VirtualInterface.Form.pas' {frmVirtualInterfaceDemo}, + Concepts.System.VirtualMethodInterceptor.Form in 'Forms\Concepts.System.VirtualMethodInterceptor.Form.pas' {frmVirtualMethodInterceptor}, + Concepts.Types.Contact in 'Types\Concepts.Types.Contact.pas', + Concepts.Types.ValidationRules in 'Types\Concepts.Types.ValidationRules.pas', + Concepts.Utils in 'Concepts.Utils.pas', + Concepts.Vcl.GridPanels.Form in 'Forms\Concepts.Vcl.GridPanels.Form.pas' {frmGridPanels}, + Concepts.WinApi.LockPaint.Form in 'Forms\Concepts.WinApi.LockPaint.Form.pas' {frmLockPaint}, + DDuce.Components.DBGridView in 'Libraries\DDuce\Components\DDuce.Components.DBGridView.pas', + DDuce.Components.GridView in 'Libraries\DDuce\Components\DDuce.Components.GridView.pas', + DDuce.Components.Inspector in 'Libraries\DDuce\Components\DDuce.Components.Inspector.pas', + DDuce.Components.LogTree in 'Libraries\DDuce\Components\DDuce.Components.LogTree.pas', + DDuce.Components.PropertyInspector in 'Libraries\DDuce\Components\DDuce.Components.PropertyInspector.pas', + DDuce.Components.PropertyInspector.CollectionEditor in 'Libraries\DDuce\Components\DDuce.Components.PropertyInspector.CollectionEditor.pas' {frmCollectionEditor}, + DDuce.Components.PropertyInspector.StringsEditor in 'Libraries\DDuce\Components\DDuce.Components.PropertyInspector.StringsEditor.pas' {StringsEditorDialog}, + DDuce.Components.XMLTree in 'Libraries\DDuce\Components\DDuce.Components.XMLTree.pas', + DDuce.Components.XMLTree.Editors in 'Libraries\DDuce\Components\DDuce.Components.XMLTree.Editors.pas', + DDuce.Components.XMLTree.NodeAttributes in 'Libraries\DDuce\Components\DDuce.Components.XMLTree.NodeAttributes.pas', + DDuce.DynamicRecord in 'Libraries\DDuce\DDuce.DynamicRecord.pas', + DDuce.Logger in 'Libraries\DDuce\DDuce.Logger.pas', + DDuce.RandomData in 'Libraries\DDuce\DDuce.RandomData.pas', + DDuce.Reflect in 'Libraries\DDuce\DDuce.Reflect.pas', + DDuce.ScopedReference in 'Libraries\DDuce\DDuce.ScopedReference.pas', + DSharp.Bindings in 'Libraries\DSharp\DSharp.Bindings.pas', + DSharp.Bindings.Collections in 'Libraries\DSharp\DSharp.Bindings.Collections.pas', + DSharp.Bindings.CollectionView in 'Libraries\DSharp\DSharp.Bindings.CollectionView.pas', + DSharp.Bindings.CollectionView.Adapters in 'Libraries\DSharp\DSharp.Bindings.CollectionView.Adapters.pas', + DSharp.Bindings.CollectionView.VCLAdapters in 'Libraries\DSharp\DSharp.Bindings.CollectionView.VCLAdapters.pas', + DSharp.Bindings.Exceptions in 'Libraries\DSharp\DSharp.Bindings.Exceptions.pas', + DSharp.Bindings.Notifications in 'Libraries\DSharp\DSharp.Bindings.Notifications.pas', + DSharp.Bindings.Validations in 'Libraries\DSharp\DSharp.Bindings.Validations.pas', + DSharp.Bindings.VCLControls in 'Libraries\DSharp\DSharp.Bindings.VCLControls.pas', + DSharp.Bindings.VCLControls.Extensions in 'Libraries\DSharp\DSharp.Bindings.VCLControls.Extensions.pas', + DSharp.Collections.ObservableCollection in 'Libraries\DSharp\DSharp.Collections.ObservableCollection.pas', + DSharp.ComponentModel.DataAnnotations in 'Libraries\DSharp\DSharp.ComponentModel.DataAnnotations.pas', + DSharp.Core.Collections in 'Libraries\DSharp\DSharp.Core.Collections.pas', + DSharp.Core.CopyOperator in 'Libraries\DSharp\DSharp.Core.CopyOperator.pas', + DSharp.Core.DataConversion in 'Libraries\DSharp\DSharp.Core.DataConversion.pas', + DSharp.Core.DataTemplates in 'Libraries\DSharp\DSharp.Core.DataTemplates.pas', + DSharp.Core.DataTemplates.Default in 'Libraries\DSharp\DSharp.Core.DataTemplates.Default.pas', + DSharp.Core.DependencyProperty in 'Libraries\DSharp\DSharp.Core.DependencyProperty.pas', + DSharp.Core.Editable in 'Libraries\DSharp\DSharp.Core.Editable.pas', + DSharp.Core.Expressions in 'Libraries\DSharp\DSharp.Core.Expressions.pas', + DSharp.Core.Framework in 'Libraries\DSharp\DSharp.Core.Framework.pas', + DSharp.Core.Properties in 'Libraries\DSharp\DSharp.Core.Properties.pas', + DSharp.Core.PropertyChangedBase in 'Libraries\DSharp\DSharp.Core.PropertyChangedBase.pas', + DSharp.Core.Reflection in 'Libraries\DSharp\DSharp.Core.Reflection.pas', + DSharp.Core.Utils in 'Libraries\DSharp\DSharp.Core.Utils.pas', + DSharp.Core.Validations in 'Libraries\DSharp\DSharp.Core.Validations.pas', + DSharp.Core.XNode in 'Libraries\DSharp\DSharp.Core.XNode.pas', + DSharp.DevExpress.GridViewPresenter in 'Libraries\DSharp\DSharp.DevExpress.GridViewPresenter.pas', + DSharp.DevExpress.PresenterDataSource in 'Libraries\DSharp\DSharp.DevExpress.PresenterDataSource.pas', + DSharp.DevExpress.TreeListPresenter in 'Libraries\DSharp\DSharp.DevExpress.TreeListPresenter.pas', + DSharp.Windows.ColumnDefinitions in 'Libraries\DSharp\DSharp.Windows.ColumnDefinitions.pas', + DSharp.Windows.ColumnDefinitions.ControlTemplate in 'Libraries\DSharp\DSharp.Windows.ColumnDefinitions.ControlTemplate.pas', + DSharp.Windows.ColumnDefinitions.RttiDataTemplate in 'Libraries\DSharp\DSharp.Windows.ColumnDefinitions.RttiDataTemplate.pas', + DSharp.Windows.ColumnDefinitions.XmlDataTemplate in 'Libraries\DSharp\DSharp.Windows.ColumnDefinitions.XmlDataTemplate.pas', + DSharp.Windows.ControlTemplates in 'Libraries\DSharp\DSharp.Windows.ControlTemplates.pas', + DSharp.Windows.CustomPresenter in 'Libraries\DSharp\DSharp.Windows.CustomPresenter.pas', + DSharp.Windows.CustomPresenter.Types in 'Libraries\DSharp\DSharp.Windows.CustomPresenter.Types.pas', + DSharp.Windows.TreeViewPresenter in 'Libraries\DSharp\DSharp.Windows.TreeViewPresenter.pas', + gaAdvancedSQLParser in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaAdvancedSQLParser.pas', + gaBasicSQLParser in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaBasicSQLParser.pas', + gaDeleteStm in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaDeleteStm.pas', + gaInsertStm in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaInsertStm.pas', + gaLnkList in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaLnkList.pas', + gaParserVisitor in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaParserVisitor.pas', + gaQueryParsersReg in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaQueryParsersReg.pas', + gaSelectStm in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaSelectStm.pas', + gaSQLExpressionParsers in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaSQLExpressionParsers.pas', + gaSQLFieldRefParsers in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaSQLFieldRefParsers.pas', + gaSQLParserConsts in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaSQLParserConsts.pas', + gaSQLParserHelperClasses in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaSQLParserHelperClasses.pas', + gaSQLSelectFieldParsers in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaSQLSelectFieldParsers.pas', + gaSQLTableRefParsers in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaSQLTableRefParsers.pas', + gaUpdateStm in 'Libraries\SQLBuilder4Delphi\dependencies\gaSQLParser\src\gaUpdateStm.pas', + Spring in 'Libraries\Spring4D\Source\Base\Spring.pas', + Spring.Collections in 'Libraries\Spring4D\Source\Base\Collections\Spring.Collections.pas', + Spring.Collections.Adapters in 'Libraries\Spring4D\Source\Base\Collections\Spring.Collections.Adapters.pas', + Spring.Collections.Base in 'Libraries\Spring4D\Source\Base\Collections\Spring.Collections.Base.pas', + Spring.Collections.Dictionaries in 'Libraries\Spring4D\Source\Base\Collections\Spring.Collections.Dictionaries.pas', + Spring.Collections.Enumerable in 'Libraries\Spring4D\Source\Base\Collections\Spring.Collections.Enumerable.pas', + Spring.Collections.Events in 'Libraries\Spring4D\Source\Base\Collections\Spring.Collections.Events.pas', + Spring.Collections.Extensions in 'Libraries\Spring4D\Source\Base\Collections\Spring.Collections.Extensions.pas', + Spring.Collections.LinkedLists in 'Libraries\Spring4D\Source\Base\Collections\Spring.Collections.LinkedLists.pas', + Spring.Collections.Lists in 'Libraries\Spring4D\Source\Base\Collections\Spring.Collections.Lists.pas', + Spring.Collections.MultiMaps in 'Libraries\Spring4D\Source\Base\Collections\Spring.Collections.MultiMaps.pas', + Spring.Collections.Queues in 'Libraries\Spring4D\Source\Base\Collections\Spring.Collections.Queues.pas', + Spring.Collections.Sets in 'Libraries\Spring4D\Source\Base\Collections\Spring.Collections.Sets.pas', + Spring.Collections.Stacks in 'Libraries\Spring4D\Source\Base\Collections\Spring.Collections.Stacks.pas', + Spring.Container in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.pas', + Spring.Container.ActivatorExtension in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.ActivatorExtension.pas', + Spring.Container.AutoMockExtension in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.AutoMockExtension.pas', + Spring.Container.Builder in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.Builder.pas', + Spring.Container.Common in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.Common.pas', + Spring.Container.ComponentActivator in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.ComponentActivator.pas', + Spring.Container.Core in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.Core.pas', + Spring.Container.CreationContext in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.CreationContext.pas', + Spring.Container.DecoratorExtension in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.DecoratorExtension.pas', + Spring.Container.Extensions in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.Extensions.pas', + Spring.Container.Injection in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.Injection.pas', + Spring.Container.LifetimeManager in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.LifetimeManager.pas', + Spring.Container.Pool in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.Pool.pas', + Spring.Container.ProxyFactory in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.ProxyFactory.pas', + Spring.Container.Registration in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.Registration.pas', + Spring.Container.Resolvers in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.Resolvers.pas', + Spring.Container.ResourceStrings in 'Libraries\Spring4D\Source\Core\Container\Spring.Container.ResourceStrings.pas', + Spring.Cryptography in 'Libraries\Spring4D\Source\Extensions\Cryptography\Spring.Cryptography.pas', + Spring.Cryptography.Base in 'Libraries\Spring4D\Source\Extensions\Cryptography\Spring.Cryptography.Base.pas', + Spring.Cryptography.CRC in 'Libraries\Spring4D\Source\Extensions\Cryptography\Spring.Cryptography.CRC.pas', + Spring.Cryptography.DES in 'Libraries\Spring4D\Source\Extensions\Cryptography\Spring.Cryptography.DES.pas', + Spring.Cryptography.MD5 in 'Libraries\Spring4D\Source\Extensions\Cryptography\Spring.Cryptography.MD5.pas', + Spring.Cryptography.SHA in 'Libraries\Spring4D\Source\Extensions\Cryptography\Spring.Cryptography.SHA.pas', + Spring.Cryptography.Utils in 'Libraries\Spring4D\Source\Extensions\Cryptography\Spring.Cryptography.Utils.pas', + Spring.DesignPatterns in 'Libraries\Spring4D\Source\Base\Spring.DesignPatterns.pas', + Spring.Events in 'Libraries\Spring4D\Source\Base\Spring.Events.pas', + Spring.Events.Base in 'Libraries\Spring4D\Source\Base\Spring.Events.Base.pas', + Spring.Helpers in 'Libraries\Spring4D\Source\Base\Spring.Helpers.pas', + Spring.Interception in 'Libraries\Spring4D\Source\Core\Interception\Spring.Interception.pas', + Spring.Interception.AbstractInvocation in 'Libraries\Spring4D\Source\Core\Interception\Spring.Interception.AbstractInvocation.pas', + Spring.Interception.ClassProxy in 'Libraries\Spring4D\Source\Core\Interception\Spring.Interception.ClassProxy.pas', + Spring.Interception.CustomProxy in 'Libraries\Spring4D\Source\Core\Interception\Spring.Interception.CustomProxy.pas', + Spring.Interception.InterfaceProxy in 'Libraries\Spring4D\Source\Core\Interception\Spring.Interception.InterfaceProxy.pas', + Spring.Interception.ResourceStrings in 'Libraries\Spring4D\Source\Core\Interception\Spring.Interception.ResourceStrings.pas', + Spring.Logging in 'Libraries\Spring4D\Source\Base\Logging\Spring.Logging.pas', + Spring.Logging.Appenders in 'Libraries\Spring4D\Source\Base\Logging\Spring.Logging.Appenders.pas', + Spring.Logging.Appenders.Base in 'Libraries\Spring4D\Source\Base\Logging\Spring.Logging.Appenders.Base.pas', + Spring.Logging.Configuration in 'Libraries\Spring4D\Source\Core\Logging\Spring.Logging.Configuration.pas', + Spring.Logging.Configuration.Builder in 'Libraries\Spring4D\Source\Core\Logging\Spring.Logging.Configuration.Builder.pas', + Spring.Logging.Container in 'Libraries\Spring4D\Source\Core\Logging\Spring.Logging.Container.pas', + Spring.Logging.Controller in 'Libraries\Spring4D\Source\Base\Logging\Spring.Logging.Controller.pas', + Spring.Logging.Extensions in 'Libraries\Spring4D\Source\Base\Logging\Spring.Logging.Extensions.pas', + Spring.Logging.Loggers in 'Libraries\Spring4D\Source\Base\Logging\Spring.Logging.Loggers.pas', + Spring.Logging.NullLogger in 'Libraries\Spring4D\Source\Base\Logging\Spring.Logging.NullLogger.pas', + Spring.Logging.ResourceStrings in 'Libraries\Spring4D\Source\Base\Logging\Spring.Logging.ResourceStrings.pas', + Spring.Logging.Serializers in 'Libraries\Spring4D\Source\Base\Logging\Spring.Logging.Serializers.pas', + Spring.MethodIntercept in 'Libraries\Spring4D\Source\Base\Spring.MethodIntercept.pas', + Spring.Mocking in 'Libraries\Spring4D\Source\Core\Mocking\Spring.Mocking.pas', + Spring.Mocking.Core in 'Libraries\Spring4D\Source\Core\Mocking\Spring.Mocking.Core.pas', + Spring.Mocking.Interceptor in 'Libraries\Spring4D\Source\Core\Mocking\Spring.Mocking.Interceptor.pas', + Spring.Patches.GetInvokeInfo in 'Libraries\Spring4D\Source\Base\Patches\Spring.Patches.GetInvokeInfo.pas', + Spring.Patches.QC107219 in 'Libraries\Spring4D\Source\Base\Patches\Spring.Patches.QC107219.pas', + Spring.Patches.QC93646 in 'Libraries\Spring4D\Source\Base\Patches\Spring.Patches.QC93646.pas', + Spring.Patches.QC98671 in 'Libraries\Spring4D\Source\Base\Patches\Spring.Patches.QC98671.pas', + Spring.Persistence.Adapters.ADO in 'Libraries\Spring4D\Source\Persistence\Adapters\Spring.Persistence.Adapters.ADO.pas', + Spring.Persistence.Adapters.ASA in 'Libraries\Spring4D\Source\Persistence\Adapters\Spring.Persistence.Adapters.ASA.pas', + Spring.Persistence.Adapters.DBX in 'Libraries\Spring4D\Source\Persistence\Adapters\Spring.Persistence.Adapters.DBX.pas', + Spring.Persistence.Adapters.FieldCache in 'Libraries\Spring4D\Source\Persistence\Adapters\Spring.Persistence.Adapters.FieldCache.pas', + Spring.Persistence.Adapters.FireDAC in 'Libraries\Spring4D\Source\Persistence\Adapters\Spring.Persistence.Adapters.FireDAC.pas', + Spring.Persistence.Adapters.MSSQL in 'Libraries\Spring4D\Source\Persistence\Adapters\Spring.Persistence.Adapters.MSSQL.pas', + Spring.Persistence.Adapters.Oracle in 'Libraries\Spring4D\Source\Persistence\Adapters\Spring.Persistence.Adapters.Oracle.pas', + Spring.Persistence.Core.AbstractSession in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.AbstractSession.pas', + Spring.Persistence.Core.Base in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.Base.pas', + Spring.Persistence.Core.ConnectionFactory in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.ConnectionFactory.pas', + Spring.Persistence.Core.Consts in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.Consts.pas', + Spring.Persistence.Core.DatabaseManager in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.DatabaseManager.pas', + Spring.Persistence.Core.DetachedSession in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.DetachedSession.pas', + Spring.Persistence.Core.EmbeddedEntity in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.EmbeddedEntity.pas', + Spring.Persistence.Core.EntityCache in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.EntityCache.pas', + Spring.Persistence.Core.EntityMap in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.EntityMap.pas', + Spring.Persistence.Core.EntityWrapper in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.EntityWrapper.pas', + Spring.Persistence.Core.Exceptions in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.Exceptions.pas', + Spring.Persistence.Core.Graphics in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.Graphics.pas', + Spring.Persistence.Core.Interfaces in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.Interfaces.pas', + Spring.Persistence.Core.ListSession in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.ListSession.pas', + Spring.Persistence.Core.Repository.Proxy in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.Repository.Proxy.pas', + Spring.Persistence.Core.Repository.Simple in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.Repository.Simple.pas', + Spring.Persistence.Core.Session in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.Session.pas', + Spring.Persistence.Core.ValueConverters in 'Libraries\Spring4D\Source\Persistence\Core\Spring.Persistence.Core.ValueConverters.pas', + Spring.Persistence.Criteria in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.pas', + Spring.Persistence.Criteria.Criterion.Abstract in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.Criterion.Abstract.pas', + Spring.Persistence.Criteria.Criterion.BetweenExpression in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.Criterion.BetweenExpression.pas', + Spring.Persistence.Criteria.Criterion.Conjunction in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.Criterion.Conjunction.pas', + Spring.Persistence.Criteria.Criterion.Disjunction in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.Criterion.Disjunction.pas', + Spring.Persistence.Criteria.Criterion.InExpression in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.Criterion.InExpression.pas', + Spring.Persistence.Criteria.Criterion.Junction in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.Criterion.Junction.pas', + Spring.Persistence.Criteria.Criterion.LikeExpression in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.Criterion.LikeExpression.pas', + Spring.Persistence.Criteria.Criterion.LogicalExpression in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.Criterion.LogicalExpression.pas', + Spring.Persistence.Criteria.Criterion.NullExpression in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.Criterion.NullExpression.pas', + Spring.Persistence.Criteria.Criterion.PropertyExpression in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.Criterion.PropertyExpression.pas', + Spring.Persistence.Criteria.Criterion.SimpleExpression in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.Criterion.SimpleExpression.pas', + Spring.Persistence.Criteria.Interfaces in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.Interfaces.pas', + Spring.Persistence.Criteria.OrderBy in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.OrderBy.pas', + Spring.Persistence.Criteria.Properties in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.Properties.pas', + Spring.Persistence.Criteria.Restrictions in 'Libraries\Spring4D\Source\Persistence\Criteria\Spring.Persistence.Criteria.Restrictions.pas', + Spring.Persistence.Mapping.Attributes in 'Libraries\Spring4D\Source\Persistence\Mapping\Spring.Persistence.Mapping.Attributes.pas', + Spring.Persistence.Mapping.CodeGenerator in 'Libraries\Spring4D\Source\Persistence\Mapping\Spring.Persistence.Mapping.CodeGenerator.pas', + Spring.Persistence.Mapping.CodeGenerator.Abstract in 'Libraries\Spring4D\Source\Persistence\Mapping\Spring.Persistence.Mapping.CodeGenerator.Abstract.pas', + Spring.Persistence.Mapping.CodeGenerator.DB in 'Libraries\Spring4D\Source\Persistence\Mapping\Spring.Persistence.Mapping.CodeGenerator.DB.pas', + Spring.Persistence.ObjectDataset in 'Libraries\Spring4D\Source\Persistence\ObjectDataset\Spring.Persistence.ObjectDataset.pas', + Spring.Persistence.ObjectDataset.Abstract in 'Libraries\Spring4D\Source\Persistence\ObjectDataset\Spring.Persistence.ObjectDataset.Abstract.pas', + Spring.Persistence.ObjectDataset.ActiveX in 'Libraries\Spring4D\Source\Persistence\ObjectDataset\Spring.Persistence.ObjectDataset.ActiveX.pas', + Spring.Persistence.ObjectDataset.Algorithms.Sort in 'Libraries\Spring4D\Source\Persistence\ObjectDataset\Spring.Persistence.ObjectDataset.Algorithms.Sort.pas', + Spring.Persistence.ObjectDataset.Blobs in 'Libraries\Spring4D\Source\Persistence\ObjectDataset\Spring.Persistence.ObjectDataset.Blobs.pas', + Spring.Persistence.ObjectDataset.Designtime in 'Libraries\Spring4D\Source\Persistence\ObjectDataset\Spring.Persistence.ObjectDataset.Designtime.pas', + Spring.Persistence.ObjectDataset.ExprParser in 'Libraries\Spring4D\Source\Persistence\ObjectDataset\Spring.Persistence.ObjectDataset.ExprParser.pas', + Spring.Persistence.ObjectDataset.ExprParser.Functions in 'Libraries\Spring4D\Source\Persistence\ObjectDataset\Spring.Persistence.ObjectDataset.ExprParser.Functions.pas', + Spring.Persistence.ObjectDataset.IndexList in 'Libraries\Spring4D\Source\Persistence\ObjectDataset\Spring.Persistence.ObjectDataset.IndexList.pas', + Spring.Persistence.SQL.Commands in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Commands.pas', + Spring.Persistence.SQL.Commands.Abstract in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Commands.Abstract.pas', + Spring.Persistence.SQL.Commands.CreateForeignKey in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Commands.CreateForeignKey.pas', + Spring.Persistence.SQL.Commands.CreateSequence in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Commands.CreateSequence.pas', + Spring.Persistence.SQL.Commands.CreateTable in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Commands.CreateTable.pas', + Spring.Persistence.SQL.Commands.Delete in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Commands.Delete.pas', + Spring.Persistence.SQL.Commands.Insert in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Commands.Insert.pas', + Spring.Persistence.SQL.Commands.Page in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Commands.Page.pas', + Spring.Persistence.SQL.Commands.Select in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Commands.Select.pas', + Spring.Persistence.SQL.Commands.Update in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Commands.Update.pas', + Spring.Persistence.SQL.Generators.Abstract in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Generators.Abstract.pas', + Spring.Persistence.SQL.Generators.Ansi in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Generators.Ansi.pas', + Spring.Persistence.SQL.Generators.ASA in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Generators.ASA.pas', + Spring.Persistence.SQL.Generators.Firebird in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Generators.Firebird.pas', + Spring.Persistence.SQL.Generators.MSSQL in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Generators.MSSQL.pas', + Spring.Persistence.SQL.Generators.MySQL in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Generators.MySQL.pas', + Spring.Persistence.SQL.Generators.NoSQL in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Generators.NoSQL.pas', + Spring.Persistence.SQL.Generators.Oracle in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Generators.Oracle.pas', + Spring.Persistence.SQL.Generators.PostgreSQL in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Generators.PostgreSQL.pas', + Spring.Persistence.SQL.Generators.Register in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Generators.Register.pas', + Spring.Persistence.SQL.Generators.SQLite3 in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Generators.SQLite3.pas', + Spring.Persistence.SQL.Interfaces in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Interfaces.pas', + Spring.Persistence.SQL.Params in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Params.pas', + Spring.Persistence.SQL.Register in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Register.pas', + Spring.Persistence.SQL.Types in 'Libraries\Spring4D\Source\Persistence\SQL\Spring.Persistence.SQL.Types.pas', + Spring.Reflection in 'Libraries\Spring4D\Source\Base\Reflection\Spring.Reflection.pas', + Spring.ResourceStrings in 'Libraries\Spring4D\Source\Base\Spring.ResourceStrings.pas', + Spring.Services in 'Libraries\Spring4D\Source\Core\Services\Spring.Services.pas', + Spring.Services.Logging in 'Libraries\Spring4D\Source\Core\Services\Spring.Services.Logging.pas', + Spring.SystemUtils in 'Libraries\Spring4D\Source\Base\Spring.SystemUtils.pas', + Spring.Times in 'Libraries\Spring4D\Source\Base\Spring.Times.pas', + Spring.Utils in 'Libraries\Spring4D\Source\Extensions\Utils\Spring.Utils.pas', + Spring.Utils.IO in 'Libraries\Spring4D\Source\Extensions\Utils\Spring.Utils.IO.pas', + Spring.Utils.WinApi in 'Libraries\Spring4D\Source\Extensions\Utils\Spring.Utils.WinApi.pas', + Spring.ValueConverters in 'Libraries\Spring4D\Source\Base\Spring.ValueConverters.pas', + Spring.VirtualClass in 'Libraries\Spring4D\Source\Base\Spring.VirtualClass.pas', + Spring.VirtualInterface in 'Libraries\Spring4D\Source\Base\Spring.VirtualInterface.pas', + SQLBuilder4D in 'Libraries\SQLBuilder4Delphi\src\SQLBuilder4D.pas', + SQLBuilder4D.Parser in 'Libraries\SQLBuilder4Delphi\src\SQLBuilder4D.Parser.pas', + SQLBuilder4D.Parser.GaSQLParser in 'Libraries\SQLBuilder4Delphi\src\SQLBuilder4D.Parser.GaSQLParser.pas', + VirtualTrees in 'Libraries\VirtualTreeView\Source\VirtualTrees.pas', + VirtualTrees.Actions in 'Libraries\VirtualTreeView\Source\VirtualTrees.Actions.pas', + VirtualTrees.Classes in 'Libraries\VirtualTreeView\Source\VirtualTrees.Classes.pas', + VirtualTrees.ClipBoard in 'Libraries\VirtualTreeView\Source\VirtualTrees.ClipBoard.pas', + VirtualTrees.Export in 'Libraries\VirtualTreeView\Source\VirtualTrees.Export.pas', + VirtualTrees.StyleHooks in 'Libraries\VirtualTreeView\Source\VirtualTrees.StyleHooks.pas', + VirtualTrees.Utils in 'Libraries\VirtualTreeView\Source\VirtualTrees.Utils.pas', + VirtualTrees.WorkerThread in 'Libraries\VirtualTreeView\Source\VirtualTrees.WorkerThread.pas', + VTAccessibility in 'Libraries\VirtualTreeView\Source\VTAccessibility.pas', + VTAccessibilityFactory in 'Libraries\VirtualTreeView\Source\VTAccessibilityFactory.pas', + VTHeaderPopup in 'Libraries\VirtualTreeView\Source\VTHeaderPopup.pas', + Concepts.ComponentInspector in 'Concepts.ComponentInspector.pas' {frmComponentInspector}; + +{$R *.res} + +begin + ReportMemoryLeaksOnShutdown := True; + Application.Initialize; + TConcepts.RegisterConcepts; + Application.CreateForm(TdmResources, dmResources); + if ConceptManager.ItemList.Count = 1 then + begin + ConceptManager.Execute(ConceptManager.ItemList.First); + end + else + begin + Application.Title := 'Concepts'; + Application.CreateForm(TfrmMain, frmMain); + end; + Application.Run; +end. + diff --git a/Concepts.XE5.dproj b/Concepts.XE5.dproj new file mode 100644 index 00000000..736a97ee --- /dev/null +++ b/Concepts.XE5.dproj @@ -0,0 +1,947 @@ + + + {08B0BBF6-9865-47D8-B7FD-7BE56E3904B5} + Concepts.XE5.dpr + Release + DCC32 + 17.2 + VCL + True + Win32 + 3 + Application + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + 0 + true + false + 1 + false + false + Concepts.ico + .\Library\$(Platform)\$(Config) + .\Library\$(Platform)\$(Config) + .\Library\$(Platform)\$(Config) + Concepts + $(BDS)\bin\default_app.manifest + true + Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;Bde;$(DCC_Namespace) + 2067 + CompanyName=Tim Sinaeve;FileDescription=;FileVersion=1.0.0.0;InternalName=Concepts;LegalCopyright=(c) 2015 Tim Sinaeve;LegalTrademarks=;OriginalFilename=Concepts.exe;ProductName=Concepts;ProductVersion=1.0.0.0;Comments= + Concepts.exe + 00400000 + x86 + + + System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + 1033 + + + 1033 + System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + + + false + RELEASE;$(DCC_Define) + 0 + 0 + + + 2 + CompanyName=Tim Sinaeve;FileDescription=;FileVersion=1.0.0.2;InternalName=Concepts;LegalCopyright=(c) 2015 Tim Sinaeve;LegalTrademarks=;OriginalFilename=Concepts.exe;ProductName=Concepts;ProductVersion=1.0.0.0;Comments= + false + false + 1033 + + + 1033 + + + true + true + false + 3 + DEBUG;$(DCC_Define) + + + false + false + false + 1 + 2 + true + true + 2 + true + 6 + .\Library\$(Platform)\$(Config)\ + CompanyName=(c) Tim Sinaeve;FileDescription=Concepts;FileVersion=1.0.0.6;InternalName=Concepts;LegalCopyright=(c) Tim Sinaeve;LegalTrademarks=;OriginalFilename=Concepts.exe;ProductName=Concepts;ProductVersion=1.0.0.0;Comments=A collection of modules demonstrating some Delphi programming concepts and libraries + true + 1033 + + + 1033 + + + + MainSource + + + + + + + + + + + + + +
frmAsyncCalls
+
+ +
frmBTMemoryModule
+
+ +
frmChromeTabs
+
+ +
frmPropertyInspector
+
+ +
frmcxEditors
+
+ +
frmcxGridViewPresenter
+
+ +
frmBindings
+
+ +
frmTreeViewPresenter
+
+ + +
frmMain
+
+ + + +
dmResources
+ TDataModule +
+ +
frmRTTEye
+
+ + +
frmCollections
+
+ +
frmSpringInterception
+
+ +
frmLazyInstantiation
+
+ +
frmSpringLogging
+
+ +
frmMulticastEventsChild
+
+ + +
frmMulticastEvents
+
+ +
frmObjectDataSet
+
+ +
frmSpringTypes
+
+ +
frmSpringUtils
+
+ +
frmSQLBuilder4D
+
+ +
frmAnonymousMethods
+
+ +
frmIterFaceImplementationByAggregation
+
+ +
frmLibraries
+
+ +
frmLiveBindings
+
+ +
frmRegularExpressions
+
+ +
frmRTTI
+
+ +
frmThreading
+
+ +
frmThreads
+
+ +
frmVariants
+
+ +
frmVirtualInterfaceDemo
+
+ +
frmVirtualMethodInterceptor
+
+ + + + +
frmGridPanels
+
+ +
frmLockPaint
+
+ + + + + + +
frmCollectionEditor
+
+ +
StringsEditorDialog
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
frmComponentInspector
+ dfm +
+ + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + +
+ + + Delphi.Personality.12 + VCLApplication + + + + Concepts.XE5.dpr + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 2067 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + File C:\CIMDevelopment\CIMConfig\DelphiXE5\DevExpress\Win32\dclcxSpreadSheetRS19.bpl not found + File C:\CIMDevelopment\CIMConfig\DelphiXE5\DevExpress\Win32\dcldxPScxSSLnkRS19.bpl not found + File C:\CIMDevelopment\CIMConfig\DelphiXE5\DevExpress\Win32\dcldxPSTeeChartRS19.bpl not found + ExpressScheduler Ribbon Event Window by Developer Express Inc. + ExpressPrinting System Ribbon Preview Window by Developer Express Inc. + ReportBuilder Components + ReportBuilder Data Access Environment + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + File C:\CIMDevelopment\CIMConfig\DelphiXE5\DevExpress\Win32\dcldxPSDBTeeChartRS19.bpl not found + ReportBuilder TeeChart 9 Components + File C:\CIMDevelopment\CIMConfig\DelphiXE5\RemObjects\Win32\RemObjects_Everwood_D19.bpl not found + + + + True + True + + + + + .\ + + + + + Concepts.exe + + + + + Concepts.exe + + + + + .\ + + + + + Concepts.exe + + + + + 1 + .dylib + + + 0 + .bpl + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + + + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + + + 1 + + + 1 + + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + res\drawable-normal + 1 + + + + + library\lib\x86 + 1 + + + + + 1 + + + 1 + + + 1 + + + + + + library\lib\armeabi-v7a + 1 + + + + + 1 + + + 1 + + + 1 + + + + + res\drawable-xlarge + 1 + + + + + res\drawable-xhdpi + 1 + + + + + 1 + + + 1 + + + 1 + + + + + res\drawable-xxhdpi + 1 + + + + + library\lib\mips + 1 + + + + + res\drawable + 1 + + + + + 1 + + + 1 + + + 0 + + + + + 1 + .framework + + + 0 + + + + + res\drawable-small + 1 + + + + + + 1 + + + Contents\MacOS + 0 + + + + + classes + 1 + + + + + + 1 + + + 1 + + + 1 + + + + + res\drawable + 1 + + + + + Contents\Resources + 1 + + + + + + 1 + + + 1 + + + 1 + + + + + library\lib\armeabi-v7a + 1 + + + 1 + + + 0 + + + 1 + + + 1 + + + 1 + + + + + library\lib\armeabi + 1 + + + + + res\drawable-large + 1 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + 1 + + + 1 + + + + + res\drawable-ldpi + 1 + + + + + res\values + 1 + + + + + 1 + + + 1 + + + 1 + + + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + + + 1 + + + + + + + + + + + False + + 12 + + + +
+ + diff --git a/Concepts.XE5.res b/Concepts.XE5.res new file mode 100644 index 0000000000000000000000000000000000000000..28db4adbf31643ad1a34877a972757b66f954d16 GIT binary patch literal 163656 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 literal 0 HcmV?d00001 diff --git a/Concepts.dpr b/Concepts.dpr index 9f2b4a5e..a66496e4 100644 --- a/Concepts.dpr +++ b/Concepts.dpr @@ -3,10 +3,10 @@ program Concepts; {$I Concepts.inc} uses - {$I Overrides.inc} Forms, Vcl.Themes, Vcl.Styles, + System.ImageList in 'Types\System.ImageList.pas', AsyncCalls in 'Libraries\AsyncCalls\AsyncCalls.pas', BTMemoryModule in 'Libraries\BTMemoryModule\BTMemoryModule.pas', ChromeTabs in 'Libraries\TChromeTabs\Lib\ChromeTabs.pas', diff --git a/Concepts.dproj b/Concepts.dproj index e9e7c6be..68ad0f21 100644 --- a/Concepts.dproj +++ b/Concepts.dproj @@ -2,7 +2,7 @@ {08B0BBF6-9865-47D8-B7FD-7BE56E3904B5} Concepts.dpr - Release + Debug DCC32 17.2 VCL @@ -111,19 +111,19 @@ DEBUG;$(DCC_Define) + false + false + false + 1 2 - 0 true true 2 true - 3 - false - false + 6 .\Library\$(Platform)\$(Config)\ - CompanyName=(c) Tim Sinaeve;FileDescription=Concepts;FileVersion=1.0.0.3;InternalName=Concepts;LegalCopyright=(c) Tim Sinaeve;LegalTrademarks=;OriginalFilename=Concepts.exe;ProductName=Concepts;ProductVersion=1.0.0.0;Comments=A collection of modules demonstrating some Delphi programming concepts and libraries + CompanyName=(c) Tim Sinaeve;FileDescription=Concepts;FileVersion=1.0.0.6;InternalName=Concepts;LegalCopyright=(c) Tim Sinaeve;LegalTrademarks=;OriginalFilename=Concepts.exe;ProductName=Concepts;ProductVersion=1.0.0.0;Comments=A collection of modules demonstrating some Delphi programming concepts and libraries true - true 1033 @@ -133,6 +133,7 @@ MainSource + @@ -555,16 +556,18 @@ - (untitled) - DSharp data binding designtime package - DSharp treeview presenter designtime package - DSharp data binding designtime package for VCL - File C:\Users\Public\Documents\Embarcadero\Studio\16.0\Bpl\DebugVisualizers.bpl not found - Embarcadero C++Builder Office 2000 Servers Package - Embarcadero C++Builder Office XP Servers Package - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - TurboPack VirtualTree Delphi designtime package + File C:\CIMDevelopment\CIMConfig\DelphiXE5\DevExpress\Win32\dclcxSpreadSheetRS19.bpl not found + File C:\CIMDevelopment\CIMConfig\DelphiXE5\DevExpress\Win32\dcldxPScxSSLnkRS19.bpl not found + File C:\CIMDevelopment\CIMConfig\DelphiXE5\DevExpress\Win32\dcldxPSTeeChartRS19.bpl not found + ExpressScheduler Ribbon Event Window by Developer Express Inc. + ExpressPrinting System Ribbon Preview Window by Developer Express Inc. + ReportBuilder Components + ReportBuilder Data Access Environment + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + File C:\CIMDevelopment\CIMConfig\DelphiXE5\DevExpress\Win32\dcldxPSDBTeeChartRS19.bpl not found + ReportBuilder TeeChart 9 Components + File C:\CIMDevelopment\CIMConfig\DelphiXE5\RemObjects\Win32\RemObjects_Everwood_D19.bpl not found @@ -575,31 +578,26 @@ Concepts.exe - true Concepts.exe - true Concepts.exe - true .\ - true .\ - true @@ -924,8 +922,8 @@ - + False @@ -935,3 +933,11 @@ + + diff --git a/Concepts.res b/Concepts.res index 7628684e25596a5d84d693d126b3991584b28f74..93b5804a7c20dac1313e217eabf1a06f570392a6 100644 GIT binary patch delta 103 zcmX@{k8{c&&It-i4vY*83JeSk|NjdBF^~fU1`M1mUP+AWzFw_7qXao4g40u=%PrWF&M delta 412 zcmZXPu}Z^W6ot=?B@n6L;vTxFi?u;P*NTFmRnQj@4OK|fP*c%CIykr*=-g*;^A&sm zeH*cU`O~55@c;L4&$;KGJN^pZzk`>sk$X}oX*ylz8A#exP;-DU_lkC8Rt#6Y4=W~( z<5x6>WQ(`!>ONT7QJwyt`syjug;G7JL+vScUgx?2hdQIC^kdyAEJlzPaqA2_T4CmhUKhK>tc=%h7f)>#@6w54s(zZj!3hcj$z z3B!|_L6tJm0d@(BGIMpy-!L1n_cM>`kW)PRy3&yK`P>+? diff --git a/Libraries/TChromeTabs/README.md b/Libraries/TChromeTabs/README.md deleted file mode 100644 index 5393ef00..00000000 --- a/Libraries/TChromeTabs/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# TChromeTabs -======= -TChromeTabs is a comprehensive implementation of Google Chrome's tabs for Delphi 6 - Delphi XE8 - -Delphinus-Support diff --git a/Overrides.inc b/Overrides.inc deleted file mode 100644 index d7381a81..00000000 --- a/Overrides.inc +++ /dev/null @@ -1,21 +0,0 @@ -{ - Copyright (C) 2013-2015 Tim Sinaeve tim.sinaeve@gmail.com - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -} - -{$I '.\jedi.inc'} - -{$IFNDEF DELPHIXE8_UP} - System.ImageList in 'Types\System.ImageList.pas', -{$ENDIF} diff --git a/README.md b/README.md deleted file mode 100644 index b3b536fc..00000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Concepts -A collection of modules which demonstrate some programming concepts in Delphi. They provide also examples of popular open source Delphi libraries and components.