diff --git a/Build/Build.proj b/Build/Build.proj
new file mode 100644
index 0000000..e29fb01
--- /dev/null
+++ b/Build/Build.proj
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Build/Build.properties b/Build/Build.properties
new file mode 100644
index 0000000..cd11811
--- /dev/null
+++ b/Build/Build.properties
@@ -0,0 +1,9 @@
+
+
+
+ $(MSBuildProjectDirectory)\..
+ $(BaseFolder)\Source
+ $(BaseFolder)\Packages
+ $(BaseFolder)\Lib\$(DelphiVersion)
+
+
diff --git a/Build/PluginSDK_D.proj b/Build/PluginSDK_D.proj
new file mode 100644
index 0000000..5d263f8
--- /dev/null
+++ b/Build/PluginSDK_D.proj
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+ Release
+ AnyCPU
+ $(OutputFolder)\PluginSDK_$(DelphiVersion)D.bpl
+
+
+
+
+
+
+
+
+ False
+ False
+ 0
+ 0
+ $(OutputFolder)
+ $(OutputFolder)
+ $(OutputFolder)
+ $(OutputFolder)
+ $(OutputFolder);$(SourceFolder)
+ $(OutputFolder)
+ $(OutputFolder)
+ $(OutputFolder)
+ False
+ RELEASE
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Build/PluginSDK_R.proj b/Build/PluginSDK_R.proj
new file mode 100644
index 0000000..c09649e
--- /dev/null
+++ b/Build/PluginSDK_R.proj
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+ Release
+ AnyCPU
+ $(OutputFolder)\PluginSDK_$(DelphiVersion)R.bpl
+
+
+
+
+
+
+
+
+ False
+ False
+ 0
+ 0
+ $(OutputFolder)
+ $(OutputFolder)
+ $(OutputFolder)
+ $(OutputFolder)
+ $(OutputFolder);$(SourceFolder)
+ $(OutputFolder)
+ $(OutputFolder)
+ $(OutputFolder)
+ False
+ RELEASE
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Packages/PluginSDK.inc b/Packages/PluginSDK.inc
new file mode 100644
index 0000000..9cc223d
--- /dev/null
+++ b/Packages/PluginSDK.inc
@@ -0,0 +1,114 @@
+ { defines for Delphi 1.0 }
+ {$IFDEF VER80}
+ {$DEFINE DELPHI}
+ {$DEFINE DELPHI1}
+ {$DEFINE DELPHI1UP}
+ {$ENDIF}
+
+ { defines for Delphi 2.0 }
+ {$IFDEF VER90}
+ {$DEFINE DELPHI}
+ {$DEFINE DELPHI2}
+ {$DEFINE DELPHI1UP}
+ {$DEFINE DELPHI2UP}
+ {$ENDIF}
+
+ { defines for Delphi 3.0 }
+ {$IFDEF VER100}
+ {$DEFINE DELPHI}
+ {$DEFINE DELPHI3}
+ {$DEFINE DELPHI1UP}
+ {$DEFINE DELPHI2UP}
+ {$DEFINE DELPHI3UP}
+ {$ENDIF}
+
+ { defines for Delphi 4.0 }
+ {$IFDEF VER120}
+ {$DEFINE DELPHI}
+ {$DEFINE DELPHI4}
+ {$DEFINE DELPHI1UP}
+ {$DEFINE DELPHI2UP}
+ {$DEFINE DELPHI3UP}
+ {$DEFINE DELPHI4UP}
+ {$ENDIF}
+
+ { defines for Delphi 5.0 }
+ {$IFDEF VER130}
+ {$DEFINE DELPHI}
+ {$DEFINE DELPHI5}
+ {$DEFINE DELPHI1UP}
+ {$DEFINE DELPHI2UP}
+ {$DEFINE DELPHI3UP}
+ {$DEFINE DELPHI4UP}
+ {$DEFINE DELPHI5UP}
+ {$ENDIF}
+
+ { defines for Delphi 6.0 }
+ {$IFDEF VER140}
+ {$DEFINE VER140UP}
+ {$DEFINE DELPHI}
+ {$DEFINE DELPHI6}
+ {$DEFINE DELPHI1UP}
+ {$DEFINE DELPHI2UP}
+ {$DEFINE DELPHI3UP}
+ {$DEFINE DELPHI4UP}
+ {$DEFINE DELPHI5UP}
+ {$DEFINE DELPHI6UP}
+ {$ENDIF}
+
+ { defines for Delphi 7.0 }
+ {$IFDEF VER150}
+ {$DEFINE VER140UP}
+ {$DEFINE DELPHI}
+ {$DEFINE DELPHI7}
+ {$DEFINE DELPHI1UP}
+ {$DEFINE DELPHI2UP}
+ {$DEFINE DELPHI3UP}
+ {$DEFINE DELPHI4UP}
+ {$DEFINE DELPHI5UP}
+ {$DEFINE DELPHI6UP}
+ {$DEFINE DELPHI7UP}
+ {$ENDIF}
+
+ { defines for Delphi 2005 }
+ {$IFDEF VER170}
+ {$DEFINE VER140UP}
+ {$DEFINE DELPHI}
+ {$DEFINE DELPHI9}
+ {$DEFINE DELPHI2005}
+ {$DEFINE DELPHI1UP}
+ {$DEFINE DELPHI2UP}
+ {$DEFINE DELPHI3UP}
+ {$DEFINE DELPHI4UP}
+ {$DEFINE DELPHI5UP}
+ {$DEFINE DELPHI6UP}
+ {$DEFINE DELPHI7UP}
+ {$DEFINE DELPHI9UP}
+ {$DEFINE DELPHI2005}
+ {$DEFINE BDS}
+ {$DEFINE BDS3}
+ {$DEFINE BDS3UP}
+ {$ENDIF}
+
+ { defines for Delphi 2006 }
+ {$IFDEF VER180}
+ {$DEFINE VER140UP}
+ {$DEFINE DELPHI}
+ {$DEFINE DELPHI9}
+ {$DEFINE DELPHI2005}
+ {$DEFINE DELPHI1UP}
+ {$DEFINE DELPHI2UP}
+ {$DEFINE DELPHI3UP}
+ {$DEFINE DELPHI4UP}
+ {$DEFINE DELPHI5UP}
+ {$DEFINE DELPHI6UP}
+ {$DEFINE DELPHI7UP}
+ {$DEFINE DELPHI9UP}
+ {$DEFINE DELPHI2005UP}
+ {$DEFINE DELPHI2006}
+ {$DEFINE BDS}
+ {$DEFINE BDS3}
+ {$DEFINE BDS4}
+ {$DEFINE BDS3UP}
+ {$ENDIF}
+
diff --git a/Packages/PluginSDK_D10D.bdsproj b/Packages/PluginSDK_D10D.bdsproj
new file mode 100644
index 0000000..2566836
--- /dev/null
+++ b/Packages/PluginSDK_D10D.bdsproj
@@ -0,0 +1,505 @@
+
+
+
+
+
+
+
+
+
+
+
+ PluginSDK_D10D.dpk
+
+
+ 7.0
+
+
+ 8
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+ True
+ True
+ WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+
+ False
+
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ False
+ False
+ False
+ True
+ True
+ True
+ True
+ True
+ True
+
+
+
+ 3
+ 0
+ False
+ 1
+ False
+ False
+ False
+ 16384
+ 1048576
+ 4194304
+ PluginSDK for Delphi 10 (Designtime)
+
+
+
+ ..\Lib\D10
+
+
+ ..\Lib\D10
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+ True
+ False
+
+
+
+ $00000000
+
+
+
+ True
+ False
+ 1
+ 0
+ 0
+ 0
+ False
+ False
+ False
+ False
+ False
+ 3082
+ 1252
+
+
+
+
+ 1.0.0.0
+
+
+
+
+
+ 1.0.0.0
+
+
+
+ ExpressBars by Developer Express Inc.
+ ExpressCommonLibrary by Developer Express Inc.
+ ExpressBars DBNavigator by Developer Express Inc.
+ ExpressBars extended DB items by Developer Express Inc.
+ ExpressBars extended items by Developer Express Inc.
+ ExpressDocking Library by Developer Express Inc.
+ ExpressLayout Control by Developer Express Inc.
+ ExpressNavBar by Developer Express Inc.
+ ExpressGDI+ Library by Developer Express Inc.
+ ExpressPrinting System by Developer Express Inc.
+ ExpressSideBar by Developer Express Inc.
+
+
+
+
diff --git a/Packages/PluginSDK_D10D.dpk b/Packages/PluginSDK_D10D.dpk
new file mode 100644
index 0000000..80e2fd1
--- /dev/null
+++ b/Packages/PluginSDK_D10D.dpk
@@ -0,0 +1,40 @@
+package PluginSDK_D10D;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'PluginSDK for Delphi 10 (Designtime)'}
+{$DESIGNONLY}
+{$IMPLICITBUILD OFF}
+
+requires
+ rtl,
+ designide,
+ vclactnband,
+ vclx,
+ vcl,
+ PluginSDK_D10R;
+
+contains
+ uReg in '..\Source\uReg.pas';
+
+end.
diff --git a/Packages/PluginSDK_D10D.drc b/Packages/PluginSDK_D10D.drc
new file mode 100644
index 0000000..7642ac9
--- /dev/null
+++ b/Packages/PluginSDK_D10D.drc
@@ -0,0 +1,14 @@
+/* VER180
+ Generated by the Borland Delphi Pascal Compiler
+ because -GD or --drc was supplied to the compiler.
+
+ This file contains compiler-generated resources that
+ were bound to the executable.
+ If this file is empty, then no compiler-generated
+ resources were bound to the produced executable.
+*/
+
+STRINGTABLE
+BEGIN
+END
+
diff --git a/Packages/PluginSDK_D10D.res b/Packages/PluginSDK_D10D.res
new file mode 100644
index 0000000..86c94e6
Binary files /dev/null and b/Packages/PluginSDK_D10D.res differ
diff --git a/Packages/PluginSDK_D10R.bdsproj b/Packages/PluginSDK_D10R.bdsproj
new file mode 100644
index 0000000..534d88b
--- /dev/null
+++ b/Packages/PluginSDK_D10R.bdsproj
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
+
+
+
+
+ PluginSDK_D10R.dpk
+
+
+ 7.0
+
+
+ 8
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 1
+ True
+ True
+ WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+
+ False
+
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ False
+ False
+ False
+ True
+ True
+ True
+ True
+ True
+ True
+
+
+
+ 3
+ 0
+ False
+ 1
+ False
+ False
+ False
+ 16384
+ 1048576
+ 4194304
+ PluginSDK for Delphi 10 (Runtime)
+
+
+
+ ..\Lib\D10
+
+
+ ..\Lib\D10
+
+
+
+ False
+
+
+
+
+
+ False
+
+
+ True
+ False
+
+
+
+ $00000000
+
+
+
+ True
+ False
+ 1
+ 0
+ 0
+ 0
+ False
+ False
+ False
+ False
+ False
+ 3082
+ 1252
+
+
+
+
+ 1.0.0.0
+
+
+
+
+
+ 1.0.0.0
+
+
+ ExpressBars by Developer Express Inc.
+ ExpressCommonLibrary by Developer Express Inc.
+ ExpressBars DBNavigator by Developer Express Inc.
+ ExpressBars extended DB items by Developer Express Inc.
+ ExpressBars extended items by Developer Express Inc.
+ ExpressDocking Library by Developer Express Inc.
+ ExpressLayout Control by Developer Express Inc.
+ ExpressNavBar by Developer Express Inc.
+ ExpressGDI+ Library by Developer Express Inc.
+ ExpressPrinting System by Developer Express Inc.
+ ExpressSideBar by Developer Express Inc.
+
+
+
diff --git a/Packages/PluginSDK_D10R.dpk b/Packages/PluginSDK_D10R.dpk
new file mode 100644
index 0000000..7b47a32
--- /dev/null
+++ b/Packages/PluginSDK_D10R.dpk
@@ -0,0 +1,39 @@
+package PluginSDK_D10R;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO OFF}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'PluginSDK for Delphi 10 (Runtime)'}
+{$RUNONLY}
+{$IMPLICITBUILD OFF}
+
+requires
+ rtl,
+ vcl;
+
+contains
+ uHostManager in '..\Source\uHostManager.pas',
+ uInterfaces in '..\Source\uInterfaces.pas',
+ uModuleMenu in '..\Source\uModuleMenu.pas',
+ uModuleController in '..\Source\uModuleController.pas' {ModuleController: TDataModule};
+
+end.
diff --git a/Packages/PluginSDK_D10R.drc b/Packages/PluginSDK_D10R.drc
new file mode 100644
index 0000000..7642ac9
--- /dev/null
+++ b/Packages/PluginSDK_D10R.drc
@@ -0,0 +1,14 @@
+/* VER180
+ Generated by the Borland Delphi Pascal Compiler
+ because -GD or --drc was supplied to the compiler.
+
+ This file contains compiler-generated resources that
+ were bound to the executable.
+ If this file is empty, then no compiler-generated
+ resources were bound to the produced executable.
+*/
+
+STRINGTABLE
+BEGIN
+END
+
diff --git a/Packages/PluginSDK_D10R.res b/Packages/PluginSDK_D10R.res
new file mode 100644
index 0000000..86c94e6
Binary files /dev/null and b/Packages/PluginSDK_D10R.res differ
diff --git a/Packages/PluginSDK_D2007D.dpk b/Packages/PluginSDK_D2007D.dpk
new file mode 100644
index 0000000..36c3281
--- /dev/null
+++ b/Packages/PluginSDK_D2007D.dpk
@@ -0,0 +1,40 @@
+package PluginSDK_D2007D;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'PluginSDK for Delphi 2007 (Designtime)'}
+{$DESIGNONLY}
+{$IMPLICITBUILD OFF}
+
+requires
+ rtl,
+ designide,
+ vclactnband,
+ vclx,
+ vcl,
+ PluginSDK_D10R;
+
+contains
+ uReg in '..\Source\uReg.pas';
+
+end.
diff --git a/Packages/PluginSDK_D2007D.res b/Packages/PluginSDK_D2007D.res
new file mode 100644
index 0000000..86c94e6
Binary files /dev/null and b/Packages/PluginSDK_D2007D.res differ
diff --git a/Packages/PluginSDK_D2007R.dpk b/Packages/PluginSDK_D2007R.dpk
new file mode 100644
index 0000000..f2b6240
--- /dev/null
+++ b/Packages/PluginSDK_D2007R.dpk
@@ -0,0 +1,39 @@
+package PluginSDK_D2007R;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO OFF}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'PluginSDK for Delphi 2007 (Runtime)'}
+{$RUNONLY}
+{$IMPLICITBUILD OFF}
+
+requires
+ rtl,
+ vcl;
+
+contains
+ uHostManager in '..\Source\uHostManager.pas',
+ uInterfaces in '..\Source\uInterfaces.pas',
+ uModuleMenu in '..\Source\uModuleMenu.pas',
+ uModuleController in '..\Source\uModuleController.pas' {ModuleController: TDataModule};
+
+end.
diff --git a/Packages/PluginSDK_D2007R.dproj b/Packages/PluginSDK_D2007R.dproj
new file mode 100644
index 0000000..950db1e
--- /dev/null
+++ b/Packages/PluginSDK_D2007R.dproj
@@ -0,0 +1,84 @@
+
+
+ {545345d0-d90f-4976-a800-ff87ad6947d2}
+ PluginSDK_D2007R.dpk
+ Debug
+ AnyCPU
+ DCC32
+ C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\PluginSDK_D2007R.bpl
+
+
+ 7.0
+ False
+ False
+ 0
+ RELEASE
+
+
+ 7.0
+ 0
+ DEBUG
+
+
+ Delphi.Personality
+ Package
+
+
+ False
+ True
+ False
+
+
+ PluginSDK for Delphi 2007 (Runtime)
+ False
+ False
+ True
+
+
+ True
+ False
+ 1
+ 0
+ 0
+ 0
+ False
+ False
+ False
+ False
+ False
+ 3082
+ 1252
+
+
+
+
+ 1.0.0.0
+
+
+
+
+
+ 1.0.0.0
+
+
+
+ PluginSDK_D2007R.dpk
+
+
+
+
+
+
+ MainSource
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Packages/PluginSDK_D2007R.res b/Packages/PluginSDK_D2007R.res
new file mode 100644
index 0000000..86c94e6
Binary files /dev/null and b/Packages/PluginSDK_D2007R.res differ
diff --git a/Packages/PluginSDK_D7D.dof b/Packages/PluginSDK_D7D.dof
new file mode 100644
index 0000000..664bdc8
--- /dev/null
+++ b/Packages/PluginSDK_D7D.dof
@@ -0,0 +1,489 @@
+[FileVersion]
+Version=7.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=0
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+NamespacePrefix=
+SymbolDeprecated=1
+SymbolLibrary=1
+SymbolPlatform=1
+UnitLibrary=1
+UnitPlatform=1
+UnitDeprecated=1
+HResultCompat=1
+HidingMember=1
+HiddenVirtual=1
+Garbage=1
+BoundsError=1
+ZeroNilCompat=1
+StringConstTruncated=1
+ForLoopVarVarPar=1
+TypedConstVarPar=1
+AsgToTypedConst=1
+CaseLabelRange=1
+ForVariable=1
+ConstructingAbstract=1
+ComparisonFalse=1
+ComparisonTrue=1
+ComparingSignedUnsigned=1
+CombiningSignedUnsigned=1
+UnsupportedConstruct=1
+FileOpen=1
+FileOpenUnitSrc=1
+BadGlobalSymbol=1
+DuplicateConstructorDestructor=1
+InvalidDirective=1
+PackageNoLink=1
+PackageThreadVar=1
+ImplicitImport=1
+HPPEMITIgnored=1
+NoRetVal=1
+UseBeforeDef=1
+ForLoopVarUndef=1
+UnitNameMismatch=1
+NoCFGFileFound=1
+MessageDirective=1
+ImplicitVariants=1
+UnicodeToLocale=1
+LocaleToUnicode=1
+ImagebaseMultiple=1
+SuspiciousTypecast=1
+PrivatePropAccessor=1
+UnsafeType=0
+UnsafeCode=0
+UnsafeCast=0
+[Linker]
+MapFile=3
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=PluginSDK para Delphi 7
+[Directories]
+OutputDir=
+UnitOutputDir=..\Lib\D7
+PackageDLLOutputDir=..\Lib\D7
+PackageDCPOutputDir=..\Lib\D7
+SearchPath=..\Lib\D7
+Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7
+Conditionals=
+DebugSourceDirs=..\Lib\D7
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=3082
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+[Excluded Packages]
+c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview
+T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc.
+[HistoryLists\hlDebugSourcePath]
+Count=1
+Item0=..\Lib\D7
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlSearchPath]
+Count=8
+Item0=..\Lib\D7
+Item1=..\
+Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug
+Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\
+Item4=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\;..\AppCliente
+Item5=C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7
+Item6=C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source
+Item7=http://delphi.hostmos.ru;C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7
+[HistoryLists\hlUnitOutputDirectory]
+Count=2
+Item0=..\Lib\D7
+Item1=..\
+[HistoryLists\hlOutputDirectorry]
+Count=1
+Item0=..\
+[HistoryLists\hlBPLOutput]
+Count=4
+Item0=..\Lib\D7
+Item1=..\
+Item2=..\Modules
+Item3=..\Modules\
+[HistoryLists\hlDCPOutput]
+Count=2
+Item0=..\Lib\D7
+Item1=..\
+[Exception Log]
+EurekaLog Version=519
+Activate=1
+Activate Handle=1
+Save Log File=1
+Foreground Tab=0
+Freeze Activate=0
+Freeze Timeout=60
+Freeze Message=The application seems to be frozen.
+SMTP From=eurekalog@email.com
+SMTP Host=
+SMTP Port=25
+SMTP UserID=
+SMTP Password=
+Append to Log=0
+Show TerminateBtn=1
+TerminateBtn Operation=1
+Errors Number=32
+Errors Terminate=3
+Email Address=
+Email Object=
+Email Send Options=0
+Output Path=
+Encrypt Password=
+AutoCloseDialogSecs=0
+WebSendMode=0
+SupportULR=
+HTMLLayout Count=15
+HTMLLine0="%3Chtml%3E"
+HTMLLine1=" %3Chead%3E"
+HTMLLine2=" %3C/head%3E"
+HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E"
+HTMLLine4=" %3Ctable width="100%%" border="0"%3E"
+HTMLLine5=" %3Ctr%3E"
+HTMLLine6=" %3Ctd nowrap%3E"
+HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E"
+HTMLLine8=" %3C%%HTML_TAG%%%3E"
+HTMLLine9=" %3C/font%3E"
+HTMLLine10=" %3C/td%3E"
+HTMLLine11=" %3C/tr%3E"
+HTMLLine12=" %3C/table%3E"
+HTMLLine13=" %3C/body%3E"
+HTMLLine14="%3C/html%3E"
+AutoCrashOperation=1
+AutoCrashNumber=10
+AutoCrashMinutes=1
+WebURL=
+WebUserID=
+WebPassword=
+WebPort=0
+AttachedFiles=
+Count=0
+EMail Message Line Count=0
+loNoDuplicateErrors=0
+loAppendReproduceText=0
+loDeleteLogAtVersionChange=0
+loAddComputerNameInLogFileName=0
+loSaveModulesSection=1
+loSaveCPUSection=1
+soAppStartDate=1
+soAppName=1
+soAppVersionNumber=1
+soAppParameters=1
+soAppCompilationDate=1
+soExcDate=1
+soExcAddress=1
+soExcModule=1
+soExcType=1
+soExcMessage=1
+soActCtlsFormClass=1
+soActCtlsFormText=1
+soActCtlsControlClass=1
+soActCtlsControlText=1
+soCmpName=1
+soCmpUser=1
+soCmpTotalMemory=1
+soCmpFreeMemory=1
+soCmpTotalDisk=1
+soCmpFreeDisk=1
+soCmpSysUpTime=1
+soCmpProcessor=1
+soCmpDisplayMode=1
+soOSType=1
+soOSBuildN=1
+soOSUpdate=1
+soOSLanguage=1
+soNetIP=1
+soNetSubmask=1
+soNetGateway=1
+soNetDNS1=1
+soNetDNS2=1
+soNetDHCP=1
+sndShowSendDialog=1
+sndShowSuccessFailureMsg=0
+sndSendEntireLog=0
+sndSendXMLLogCopy=0
+sndSendScreenshot=1
+sndUseOnlyActiveWindow=0
+sndSendLastHTMLPage=1
+sndSendInSeparatedThread=0
+sndAddDateInFileName=0
+sndCompressAllFiles=0
+edoShowExceptionDialog=1
+edoSendEmailChecked=1
+edoAttachScreenshotChecked=1
+edoShowCopyToClipOption=1
+edoShowDetailsButton=1
+edoShowInDetailedMode=0
+edoShowInTopMostMode=0
+edoUseEurekaLogLookAndFeel=0
+csoShowDLLs=1
+csoShowBPLs=1
+csoShowBorlandThreads=1
+csoShowWindowsThreads=1
+csoShowProcedureOffset=0
+boActivateCrashDetection=0
+boPauseBorlandThreads=0
+boDoNotPauseMainThread=0
+boPauseWindowsThreads=0
+boUseMainModuleOptions=1
+boCopyLogInCaseOfError=1
+boSaveCompressedCopyInCaseOfError=0
+Count mtInformationMsgCaption=1
+mtInformationMsgCaption0="Information."
+Count mtQuestionMsgCaption=1
+mtQuestionMsgCaption0="Question."
+Count mtDialog_Caption=1
+mtDialog_Caption0="Error."
+Count mtDialog_ErrorMsgCaption=2
+mtDialog_ErrorMsgCaption0="An error has occurred during program execution."
+mtDialog_ErrorMsgCaption1="Please read the following information for further details."
+Count mtDialog_GeneralCaption=1
+mtDialog_GeneralCaption0="General"
+Count mtDialog_GeneralHeader=1
+mtDialog_GeneralHeader0="General Information"
+Count mtDialog_CallStackCaption=1
+mtDialog_CallStackCaption0="Call Stack"
+Count mtDialog_CallStackHeader=1
+mtDialog_CallStackHeader0="Call Stack Information"
+Count mtDialog_ModulesCaption=1
+mtDialog_ModulesCaption0="Modules"
+Count mtDialog_ModulesHeader=1
+mtDialog_ModulesHeader0="Modules Information"
+Count mtDialog_CPUCaption=1
+mtDialog_CPUCaption0="CPU"
+Count mtDialog_CPUHeader=1
+mtDialog_CPUHeader0="CPU Information"
+Count mtDialog_CustomDataCaption=1
+mtDialog_CustomDataCaption0="Other"
+Count mtDialog_CustomDataHeader=1
+mtDialog_CustomDataHeader0="Other Information"
+Count mtDialog_OKButtonCaption=1
+mtDialog_OKButtonCaption0="%26OK"
+Count mtDialog_TerminateButtonCaption=1
+mtDialog_TerminateButtonCaption0="%26Terminate"
+Count mtDialog_RestartButtonCaption=1
+mtDialog_RestartButtonCaption0="%26Restart"
+Count mtDialog_DetailsButtonCaption=1
+mtDialog_DetailsButtonCaption0="%26Details"
+Count mtDialog_SendMessage=1
+mtDialog_SendMessage0="%26Send this error via Internet"
+Count mtDialog_ScreenshotMessage=1
+mtDialog_ScreenshotMessage0="%26Attach a Screenshot image"
+Count mtDialog_CopyMessage=1
+mtDialog_CopyMessage0="%26Copy to Clipboard"
+Count mtDialog_SupportMessage=1
+mtDialog_SupportMessage0="Go to the Support Page"
+Count mtLog_AppHeader=1
+mtLog_AppHeader0="Application"
+Count mtLog_AppStartDate=1
+mtLog_AppStartDate0="Start Date"
+Count mtLog_AppName=1
+mtLog_AppName0="Name/Description"
+Count mtLog_AppVersionNumber=1
+mtLog_AppVersionNumber0="Version Number"
+Count mtLog_AppParameters=1
+mtLog_AppParameters0="Parameters"
+Count mtLog_AppCompilationDate=1
+mtLog_AppCompilationDate0="Compilation Date"
+Count mtLog_ExcHeader=1
+mtLog_ExcHeader0="Exception"
+Count mtLog_ExcDate=1
+mtLog_ExcDate0="Date"
+Count mtLog_ExcAddress=1
+mtLog_ExcAddress0="Address"
+Count mtLog_ExcModule=1
+mtLog_ExcModule0="Module"
+Count mtLog_ExcType=1
+mtLog_ExcType0="Type"
+Count mtLog_ExcMessage=1
+mtLog_ExcMessage0="Message"
+Count mtLog_ActCtrlsHeader=1
+mtLog_ActCtrlsHeader0="Active Controls"
+Count mtLog_ActCtrlsFormClass=1
+mtLog_ActCtrlsFormClass0="Form Class"
+Count mtLog_ActCtrlsFormText=1
+mtLog_ActCtrlsFormText0="Form Text"
+Count mtLog_ActCtrlsControlClass=1
+mtLog_ActCtrlsControlClass0="Control Class"
+Count mtLog_ActCtrlsControlText=1
+mtLog_ActCtrlsControlText0="Control Text"
+Count mtLog_CmpHeader=1
+mtLog_CmpHeader0="Computer"
+Count mtLog_CmpName=1
+mtLog_CmpName0="Name"
+Count mtLog_CmpUser=1
+mtLog_CmpUser0="User"
+Count mtLog_CmpTotalMemory=1
+mtLog_CmpTotalMemory0="Total Memory"
+Count mtLog_CmpFreeMemory=1
+mtLog_CmpFreeMemory0="Free Memory"
+Count mtLog_CmpTotalDisk=1
+mtLog_CmpTotalDisk0="Total Disk"
+Count mtLog_CmpFreeDisk=1
+mtLog_CmpFreeDisk0="Free Disk"
+Count mtLog_CmpSystemUpTime=1
+mtLog_CmpSystemUpTime0="System Up Time"
+Count mtLog_CmpProcessor=1
+mtLog_CmpProcessor0="Processor"
+Count mtLog_CmpDisplayMode=1
+mtLog_CmpDisplayMode0="Display Mode"
+Count mtLog_OSHeader=1
+mtLog_OSHeader0="Operating System"
+Count mtLog_OSType=1
+mtLog_OSType0="Type"
+Count mtLog_OSBuildN=1
+mtLog_OSBuildN0="Build #"
+Count mtLog_OSUpdate=1
+mtLog_OSUpdate0="Update"
+Count mtLog_OSLanguage=1
+mtLog_OSLanguage0="Language"
+Count mtLog_NetHeader=1
+mtLog_NetHeader0="Network"
+Count mtLog_NetIP=1
+mtLog_NetIP0="IP Address"
+Count mtLog_NetSubmask=1
+mtLog_NetSubmask0="Submask"
+Count mtLog_NetGateway=1
+mtLog_NetGateway0="Gateway"
+Count mtLog_NetDNS1=1
+mtLog_NetDNS10="DNS 1"
+Count mtLog_NetDNS2=1
+mtLog_NetDNS20="DNS 2"
+Count mtLog_NetDHCP=1
+mtLog_NetDHCP0="DHCP"
+Count mtLog_CustInfoHeader=1
+mtLog_CustInfoHeader0="Custom Information"
+Count mtCallStack_Address=1
+mtCallStack_Address0="Address"
+Count mtCallStack_Name=1
+mtCallStack_Name0="Module"
+Count mtCallStack_Unit=1
+mtCallStack_Unit0="Unit"
+Count mtCallStack_Class=1
+mtCallStack_Class0="Class"
+Count mtCallStack_Procedure=1
+mtCallStack_Procedure0="Procedure/Method"
+Count mtCallStack_Line=1
+mtCallStack_Line0="Line"
+Count mtCallStack_MainThread=1
+mtCallStack_MainThread0="Main"
+Count mtCallStack_ExceptionThread=1
+mtCallStack_ExceptionThread0="Exception Thread"
+Count mtCallStack_RunningThread=1
+mtCallStack_RunningThread0="Running Thread"
+Count mtCallStack_CallingThread=1
+mtCallStack_CallingThread0="Calling Thread"
+Count mtCallStack_ThreadID=1
+mtCallStack_ThreadID0="ID"
+Count mtCallStack_ThreadPriority=1
+mtCallStack_ThreadPriority0="Priority"
+Count mtCallStack_ThreadClass=1
+mtCallStack_ThreadClass0="Class"
+Count mtSendDialog_Caption=1
+mtSendDialog_Caption0="Send."
+Count mtSendDialog_Message=1
+mtSendDialog_Message0="Message"
+Count mtSendDialog_Resolving=1
+mtSendDialog_Resolving0="Resolving DNS..."
+Count mtSendDialog_Connecting=1
+mtSendDialog_Connecting0="Connecting with server..."
+Count mtSendDialog_Connected=1
+mtSendDialog_Connected0="Connected with server."
+Count mtSendDialog_Sending=1
+mtSendDialog_Sending0="Sending message..."
+Count mtReproduceDialog_Caption=1
+mtReproduceDialog_Caption0="Request"
+Count mtReproduceDialog_Request=1
+mtReproduceDialog_Request0="Please describe the steps to reproduce the error:"
+Count mtReproduceDialog_OKButtonCaption=1
+mtReproduceDialog_OKButtonCaption0="%26OK"
+Count mtModules_Handle=1
+mtModules_Handle0="Handle"
+Count mtModules_Name=1
+mtModules_Name0="Name"
+Count mtModules_Description=1
+mtModules_Description0="Description"
+Count mtModules_Version=1
+mtModules_Version0="Version"
+Count mtModules_Size=1
+mtModules_Size0="Size"
+Count mtModules_LastModified=1
+mtModules_LastModified0="Modified"
+Count mtModules_Path=1
+mtModules_Path0="Path"
+Count mtCPU_Registers=1
+mtCPU_Registers0="Registers"
+Count mtCPU_Stack=1
+mtCPU_Stack0="Stack"
+Count mtCPU_MemoryDump=1
+mtCPU_MemoryDump0="Memory Dump"
+Count mtSend_SuccessMsg=1
+mtSend_SuccessMsg0="The message was sent successfully."
+Count mtSend_FailureMsg=1
+mtSend_FailureMsg0="Sorry, sending the message didn't work."
+
+
diff --git a/Packages/PluginSDK_D7D.dpk b/Packages/PluginSDK_D7D.dpk
new file mode 100644
index 0000000..6c780cf
--- /dev/null
+++ b/Packages/PluginSDK_D7D.dpk
@@ -0,0 +1,40 @@
+package PluginSDK_D7D;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'PluginSDK para Delphi 7'}
+{$DESIGNONLY}
+{$IMPLICITBUILD OFF}
+
+requires
+ rtl,
+ designide,
+ vclactnband,
+ vclx,
+ vcl,
+ PluginSDK_D7R;
+
+contains
+ uReg in '..\Source\uReg.pas';
+
+end.
diff --git a/Packages/PluginSDK_D7D.drc b/Packages/PluginSDK_D7D.drc
new file mode 100644
index 0000000..a5d5271
--- /dev/null
+++ b/Packages/PluginSDK_D7D.drc
@@ -0,0 +1,14 @@
+/* VER150
+ Generated by the Borland Delphi Pascal Compiler
+ because -GD or --drc was supplied to the compiler.
+
+ This file contains compiler-generated resources that
+ were bound to the executable.
+ If this file is empty, then no compiler-generated
+ resources were bound to the produced executable.
+*/
+
+STRINGTABLE
+BEGIN
+END
+
diff --git a/Packages/PluginSDK_D7D.res b/Packages/PluginSDK_D7D.res
new file mode 100644
index 0000000..ec5f233
Binary files /dev/null and b/Packages/PluginSDK_D7D.res differ
diff --git a/Packages/PluginSDK_D7R.dof b/Packages/PluginSDK_D7R.dof
new file mode 100644
index 0000000..e50de7b
--- /dev/null
+++ b/Packages/PluginSDK_D7R.dof
@@ -0,0 +1,489 @@
+[FileVersion]
+Version=7.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=0
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=0
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+NamespacePrefix=
+SymbolDeprecated=1
+SymbolLibrary=1
+SymbolPlatform=1
+UnitLibrary=1
+UnitPlatform=1
+UnitDeprecated=1
+HResultCompat=1
+HidingMember=1
+HiddenVirtual=1
+Garbage=1
+BoundsError=1
+ZeroNilCompat=1
+StringConstTruncated=1
+ForLoopVarVarPar=1
+TypedConstVarPar=1
+AsgToTypedConst=1
+CaseLabelRange=1
+ForVariable=1
+ConstructingAbstract=1
+ComparisonFalse=1
+ComparisonTrue=1
+ComparingSignedUnsigned=1
+CombiningSignedUnsigned=1
+UnsupportedConstruct=1
+FileOpen=1
+FileOpenUnitSrc=1
+BadGlobalSymbol=1
+DuplicateConstructorDestructor=1
+InvalidDirective=1
+PackageNoLink=1
+PackageThreadVar=1
+ImplicitImport=1
+HPPEMITIgnored=1
+NoRetVal=1
+UseBeforeDef=1
+ForLoopVarUndef=1
+UnitNameMismatch=1
+NoCFGFileFound=1
+MessageDirective=1
+ImplicitVariants=1
+UnicodeToLocale=1
+LocaleToUnicode=1
+ImagebaseMultiple=1
+SuspiciousTypecast=1
+PrivatePropAccessor=1
+UnsafeType=0
+UnsafeCode=0
+UnsafeCast=0
+[Linker]
+MapFile=3
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=..\Lib\D7
+PackageDLLOutputDir=..\Lib\D7
+PackageDCPOutputDir=..\Lib\D7
+SearchPath=..\Lib\D7
+Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7
+Conditionals=
+DebugSourceDirs=..\Lib\D7
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=3082
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+[Excluded Packages]
+c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview
+T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc.
+[HistoryLists\hlDebugSourcePath]
+Count=1
+Item0=..\Lib\D7
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlSearchPath]
+Count=8
+Item0=..\Lib\D7
+Item1=..\
+Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug
+Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\
+Item4=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\;..\AppCliente
+Item5=C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7
+Item6=C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source
+Item7=http://delphi.hostmos.ru;C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7
+[HistoryLists\hlUnitOutputDirectory]
+Count=2
+Item0=..\Lib\D7
+Item1=..\
+[HistoryLists\hlOutputDirectorry]
+Count=1
+Item0=..\
+[HistoryLists\hlBPLOutput]
+Count=4
+Item0=..\Lib\D7
+Item1=..\
+Item2=..\Modules
+Item3=..\Modules\
+[HistoryLists\hlDCPOutput]
+Count=2
+Item0=..\Lib\D7
+Item1=..\
+[Exception Log]
+EurekaLog Version=519
+Activate=1
+Activate Handle=1
+Save Log File=1
+Foreground Tab=0
+Freeze Activate=0
+Freeze Timeout=30
+Freeze Message=The application seems to be frozen.
+SMTP From=eurekalog@email.com
+SMTP Host=
+SMTP Port=25
+SMTP UserID=
+SMTP Password=
+Append to Log=0
+Show TerminateBtn=1
+TerminateBtn Operation=1
+Errors Number=200
+Errors Terminate=3
+Email Address=
+Email Object=
+Email Send Options=0
+Output Path=D:\Proyectos\FactuGES (Arribas)\Codigo\Output\Cliente\Log.txt
+Encrypt Password=
+AutoCloseDialogSecs=0
+WebSendMode=0
+SupportULR=
+HTMLLayout Count=15
+HTMLLine0="%3Chtml%3E"
+HTMLLine1=" %3Chead%3E"
+HTMLLine2=" %3C/head%3E"
+HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E"
+HTMLLine4=" %3Ctable width="100%%" border="0"%3E"
+HTMLLine5=" %3Ctr%3E"
+HTMLLine6=" %3Ctd nowrap%3E"
+HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E"
+HTMLLine8=" %3C%%HTML_TAG%%%3E"
+HTMLLine9=" %3C/font%3E"
+HTMLLine10=" %3C/td%3E"
+HTMLLine11=" %3C/tr%3E"
+HTMLLine12=" %3C/table%3E"
+HTMLLine13=" %3C/body%3E"
+HTMLLine14="%3C/html%3E"
+AutoCrashOperation=1
+AutoCrashNumber=10
+AutoCrashMinutes=1
+WebURL=
+WebUserID=
+WebPassword=
+WebPort=0
+AttachedFiles=
+Count=0
+EMail Message Line Count=0
+loNoDuplicateErrors=1
+loAppendReproduceText=0
+loDeleteLogAtVersionChange=1
+loAddComputerNameInLogFileName=0
+loSaveModulesSection=1
+loSaveCPUSection=0
+soAppStartDate=1
+soAppName=1
+soAppVersionNumber=1
+soAppParameters=1
+soAppCompilationDate=1
+soExcDate=1
+soExcAddress=1
+soExcModule=1
+soExcType=1
+soExcMessage=1
+soActCtlsFormClass=1
+soActCtlsFormText=1
+soActCtlsControlClass=1
+soActCtlsControlText=1
+soCmpName=1
+soCmpUser=1
+soCmpTotalMemory=1
+soCmpFreeMemory=1
+soCmpTotalDisk=1
+soCmpFreeDisk=1
+soCmpSysUpTime=1
+soCmpProcessor=1
+soCmpDisplayMode=1
+soOSType=1
+soOSBuildN=1
+soOSUpdate=1
+soOSLanguage=1
+soNetIP=1
+soNetSubmask=1
+soNetGateway=1
+soNetDNS1=1
+soNetDNS2=1
+soNetDHCP=1
+sndShowSendDialog=1
+sndShowSuccessFailureMsg=0
+sndSendEntireLog=0
+sndSendXMLLogCopy=0
+sndSendScreenshot=1
+sndUseOnlyActiveWindow=0
+sndSendLastHTMLPage=1
+sndSendInSeparatedThread=0
+sndAddDateInFileName=0
+sndCompressAllFiles=0
+edoShowExceptionDialog=1
+edoSendEmailChecked=1
+edoAttachScreenshotChecked=1
+edoShowCopyToClipOption=1
+edoShowDetailsButton=1
+edoShowInDetailedMode=0
+edoShowInTopMostMode=0
+edoUseEurekaLogLookAndFeel=0
+csoShowDLLs=1
+csoShowBPLs=1
+csoShowBorlandThreads=1
+csoShowWindowsThreads=1
+csoShowProcedureOffset=0
+boActivateCrashDetection=0
+boPauseBorlandThreads=0
+boDoNotPauseMainThread=0
+boPauseWindowsThreads=0
+boUseMainModuleOptions=1
+boCopyLogInCaseOfError=1
+boSaveCompressedCopyInCaseOfError=0
+Count mtInformationMsgCaption=1
+mtInformationMsgCaption0="Information."
+Count mtQuestionMsgCaption=1
+mtQuestionMsgCaption0="Question."
+Count mtDialog_Caption=1
+mtDialog_Caption0="Error."
+Count mtDialog_ErrorMsgCaption=2
+mtDialog_ErrorMsgCaption0="An error has occurred during program execution."
+mtDialog_ErrorMsgCaption1="Please read the following information for further details."
+Count mtDialog_GeneralCaption=1
+mtDialog_GeneralCaption0="General"
+Count mtDialog_GeneralHeader=1
+mtDialog_GeneralHeader0="General Information"
+Count mtDialog_CallStackCaption=1
+mtDialog_CallStackCaption0="Call Stack"
+Count mtDialog_CallStackHeader=1
+mtDialog_CallStackHeader0="Call Stack Information"
+Count mtDialog_ModulesCaption=1
+mtDialog_ModulesCaption0="Modules"
+Count mtDialog_ModulesHeader=1
+mtDialog_ModulesHeader0="Modules Information"
+Count mtDialog_CPUCaption=1
+mtDialog_CPUCaption0="CPU"
+Count mtDialog_CPUHeader=1
+mtDialog_CPUHeader0="CPU Information"
+Count mtDialog_CustomDataCaption=1
+mtDialog_CustomDataCaption0="Other"
+Count mtDialog_CustomDataHeader=1
+mtDialog_CustomDataHeader0="Other Information"
+Count mtDialog_OKButtonCaption=1
+mtDialog_OKButtonCaption0="%26OK"
+Count mtDialog_TerminateButtonCaption=1
+mtDialog_TerminateButtonCaption0="%26Terminate"
+Count mtDialog_RestartButtonCaption=1
+mtDialog_RestartButtonCaption0="%26Restart"
+Count mtDialog_DetailsButtonCaption=1
+mtDialog_DetailsButtonCaption0="%26Details"
+Count mtDialog_SendMessage=1
+mtDialog_SendMessage0="%26Send this error via Internet"
+Count mtDialog_ScreenshotMessage=1
+mtDialog_ScreenshotMessage0="%26Attach a Screenshot image"
+Count mtDialog_CopyMessage=1
+mtDialog_CopyMessage0="%26Copy to Clipboard"
+Count mtDialog_SupportMessage=1
+mtDialog_SupportMessage0="Go to the Support Page"
+Count mtLog_AppHeader=1
+mtLog_AppHeader0="Application"
+Count mtLog_AppStartDate=1
+mtLog_AppStartDate0="Start Date"
+Count mtLog_AppName=1
+mtLog_AppName0="Name/Description"
+Count mtLog_AppVersionNumber=1
+mtLog_AppVersionNumber0="Version Number"
+Count mtLog_AppParameters=1
+mtLog_AppParameters0="Parameters"
+Count mtLog_AppCompilationDate=1
+mtLog_AppCompilationDate0="Compilation Date"
+Count mtLog_ExcHeader=1
+mtLog_ExcHeader0="Exception"
+Count mtLog_ExcDate=1
+mtLog_ExcDate0="Date"
+Count mtLog_ExcAddress=1
+mtLog_ExcAddress0="Address"
+Count mtLog_ExcModule=1
+mtLog_ExcModule0="Module"
+Count mtLog_ExcType=1
+mtLog_ExcType0="Type"
+Count mtLog_ExcMessage=1
+mtLog_ExcMessage0="Message"
+Count mtLog_ActCtrlsHeader=1
+mtLog_ActCtrlsHeader0="Active Controls"
+Count mtLog_ActCtrlsFormClass=1
+mtLog_ActCtrlsFormClass0="Form Class"
+Count mtLog_ActCtrlsFormText=1
+mtLog_ActCtrlsFormText0="Form Text"
+Count mtLog_ActCtrlsControlClass=1
+mtLog_ActCtrlsControlClass0="Control Class"
+Count mtLog_ActCtrlsControlText=1
+mtLog_ActCtrlsControlText0="Control Text"
+Count mtLog_CmpHeader=1
+mtLog_CmpHeader0="Computer"
+Count mtLog_CmpName=1
+mtLog_CmpName0="Name"
+Count mtLog_CmpUser=1
+mtLog_CmpUser0="User"
+Count mtLog_CmpTotalMemory=1
+mtLog_CmpTotalMemory0="Total Memory"
+Count mtLog_CmpFreeMemory=1
+mtLog_CmpFreeMemory0="Free Memory"
+Count mtLog_CmpTotalDisk=1
+mtLog_CmpTotalDisk0="Total Disk"
+Count mtLog_CmpFreeDisk=1
+mtLog_CmpFreeDisk0="Free Disk"
+Count mtLog_CmpSystemUpTime=1
+mtLog_CmpSystemUpTime0="System Up Time"
+Count mtLog_CmpProcessor=1
+mtLog_CmpProcessor0="Processor"
+Count mtLog_CmpDisplayMode=1
+mtLog_CmpDisplayMode0="Display Mode"
+Count mtLog_OSHeader=1
+mtLog_OSHeader0="Operating System"
+Count mtLog_OSType=1
+mtLog_OSType0="Type"
+Count mtLog_OSBuildN=1
+mtLog_OSBuildN0="Build #"
+Count mtLog_OSUpdate=1
+mtLog_OSUpdate0="Update"
+Count mtLog_OSLanguage=1
+mtLog_OSLanguage0="Language"
+Count mtLog_NetHeader=1
+mtLog_NetHeader0="Network"
+Count mtLog_NetIP=1
+mtLog_NetIP0="IP Address"
+Count mtLog_NetSubmask=1
+mtLog_NetSubmask0="Submask"
+Count mtLog_NetGateway=1
+mtLog_NetGateway0="Gateway"
+Count mtLog_NetDNS1=1
+mtLog_NetDNS10="DNS 1"
+Count mtLog_NetDNS2=1
+mtLog_NetDNS20="DNS 2"
+Count mtLog_NetDHCP=1
+mtLog_NetDHCP0="DHCP"
+Count mtLog_CustInfoHeader=1
+mtLog_CustInfoHeader0="Custom Information"
+Count mtCallStack_Address=1
+mtCallStack_Address0="Address"
+Count mtCallStack_Name=1
+mtCallStack_Name0="Module"
+Count mtCallStack_Unit=1
+mtCallStack_Unit0="Unit"
+Count mtCallStack_Class=1
+mtCallStack_Class0="Class"
+Count mtCallStack_Procedure=1
+mtCallStack_Procedure0="Procedure/Method"
+Count mtCallStack_Line=1
+mtCallStack_Line0="Line"
+Count mtCallStack_MainThread=1
+mtCallStack_MainThread0="Main"
+Count mtCallStack_ExceptionThread=1
+mtCallStack_ExceptionThread0="Exception Thread"
+Count mtCallStack_RunningThread=1
+mtCallStack_RunningThread0="Running Thread"
+Count mtCallStack_CallingThread=1
+mtCallStack_CallingThread0="Calling Thread"
+Count mtCallStack_ThreadID=1
+mtCallStack_ThreadID0="ID"
+Count mtCallStack_ThreadPriority=1
+mtCallStack_ThreadPriority0="Priority"
+Count mtCallStack_ThreadClass=1
+mtCallStack_ThreadClass0="Class"
+Count mtSendDialog_Caption=1
+mtSendDialog_Caption0="Send."
+Count mtSendDialog_Message=1
+mtSendDialog_Message0="Message"
+Count mtSendDialog_Resolving=1
+mtSendDialog_Resolving0="Resolving DNS..."
+Count mtSendDialog_Connecting=1
+mtSendDialog_Connecting0="Connecting with server..."
+Count mtSendDialog_Connected=1
+mtSendDialog_Connected0="Connected with server."
+Count mtSendDialog_Sending=1
+mtSendDialog_Sending0="Sending message..."
+Count mtReproduceDialog_Caption=1
+mtReproduceDialog_Caption0="Request"
+Count mtReproduceDialog_Request=1
+mtReproduceDialog_Request0="Please describe the steps to reproduce the error:"
+Count mtReproduceDialog_OKButtonCaption=1
+mtReproduceDialog_OKButtonCaption0="%26OK"
+Count mtModules_Handle=1
+mtModules_Handle0="Handle"
+Count mtModules_Name=1
+mtModules_Name0="Name"
+Count mtModules_Description=1
+mtModules_Description0="Description"
+Count mtModules_Version=1
+mtModules_Version0="Version"
+Count mtModules_Size=1
+mtModules_Size0="Size"
+Count mtModules_LastModified=1
+mtModules_LastModified0="Modified"
+Count mtModules_Path=1
+mtModules_Path0="Path"
+Count mtCPU_Registers=1
+mtCPU_Registers0="Registers"
+Count mtCPU_Stack=1
+mtCPU_Stack0="Stack"
+Count mtCPU_MemoryDump=1
+mtCPU_MemoryDump0="Memory Dump"
+Count mtSend_SuccessMsg=1
+mtSend_SuccessMsg0="The message was sent successfully."
+Count mtSend_FailureMsg=1
+mtSend_FailureMsg0="Sorry, sending the message didn't work."
+
+
diff --git a/Packages/PluginSDK_D7R.dpk b/Packages/PluginSDK_D7R.dpk
new file mode 100644
index 0000000..66f9bc2
--- /dev/null
+++ b/Packages/PluginSDK_D7R.dpk
@@ -0,0 +1,38 @@
+package PluginSDK_D7R;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO OFF}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$RUNONLY}
+{$IMPLICITBUILD OFF}
+
+requires
+ rtl,
+ vcl;
+
+contains
+ uHostManager in '..\Source\uHostManager.pas',
+ uInterfaces in '..\Source\uInterfaces.pas',
+ uModuleMenu in '..\Source\uModuleMenu.pas',
+ uModuleController in '..\Source\uModuleController.pas' {ModuleController: TDataModule};
+
+end.
diff --git a/Packages/PluginSDK_D7R.drc b/Packages/PluginSDK_D7R.drc
new file mode 100644
index 0000000..a5d5271
--- /dev/null
+++ b/Packages/PluginSDK_D7R.drc
@@ -0,0 +1,14 @@
+/* VER150
+ Generated by the Borland Delphi Pascal Compiler
+ because -GD or --drc was supplied to the compiler.
+
+ This file contains compiler-generated resources that
+ were bound to the executable.
+ If this file is empty, then no compiler-generated
+ resources were bound to the produced executable.
+*/
+
+STRINGTABLE
+BEGIN
+END
+
diff --git a/Packages/PluginSDK_D7R.res b/Packages/PluginSDK_D7R.res
new file mode 100644
index 0000000..3c41d55
Binary files /dev/null and b/Packages/PluginSDK_D7R.res differ
diff --git a/Packages/PluginSDK_GroupD10.bdsgroup b/Packages/PluginSDK_GroupD10.bdsgroup
new file mode 100644
index 0000000..6801a11
--- /dev/null
+++ b/Packages/PluginSDK_GroupD10.bdsgroup
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ PluginSDK_D10R.bdsproj
+ PluginSDK_D10D.bdsproj
+ PluginSDK_D10R.bpl PluginSDK_D10D.bpl
+
+
+
+
diff --git a/Packages/PluginSDK_GroupD10.groupproj b/Packages/PluginSDK_GroupD10.groupproj
new file mode 100644
index 0000000..fde6b12
--- /dev/null
+++ b/Packages/PluginSDK_GroupD10.groupproj
@@ -0,0 +1,40 @@
+
+
+ {5ab3c3c7-1637-4d7c-bd71-3f098e7d8a0e}
+
+
+
+
+ Default.Personality
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Source/uHostManager.pas b/Source/uHostManager.pas
new file mode 100644
index 0000000..44cf8de
--- /dev/null
+++ b/Source/uHostManager.pas
@@ -0,0 +1,301 @@
+
+unit uHostManager;
+
+interface
+
+uses
+ Windows, Classes, Forms, Menus, Contnrs,
+ uInterfaces, uModuleController;
+
+type
+ { TModuleInfo }
+ TModuleInfo = class(TObject)
+ private
+ FPackageHandle: HModule;
+ FFileName : String;
+ FName: string;
+ FVersion : string;
+ FModule: TModuleController;
+ FModuleClass: TModuleControllerClass;
+ public
+ constructor Create(AModuleClass: TModuleControllerClass;
+ const FileName : String);
+ destructor Destroy; override;
+ property Module: TModuleController read FModule;
+ property Name: string read FName;
+ property FileName : string read FFileName;
+ property PackageHandle: HModule read FPackageHandle;
+ property Version: String read FVersion;
+ end;
+
+ { Events }
+ TBeforeLoadEvent = procedure(Sender: TObject; FileName: string; var Allow: Boolean) of object;
+ TAfterLoadEvent = procedure(Sender: TObject; AModuleInfo : TModuleInfo) of object;
+ TBeforeUnloadEvent = procedure(Sender: TObject; AModuleInfo : TModuleInfo) of object;
+ TAfterUnloadEvent = procedure(Sender: TObject; FileName: string) of object;
+
+ { THostManager }
+ THostManager = class(TComponent)
+ private
+ FMainForm : TForm;
+ FMainMenu : TMainMenu;
+ FBPLPath : String;
+ FInstancesList : TList;
+ FModules : TObjectList;
+ FOnBeforeLoad : TBeforeLoadEvent;
+ FOnAfterLoad : TAfterLoadEvent;
+ FOnBeforeUnload : TBeforeUnloadEvent;
+ FOnAfterUnload : TAfterUnloadEvent;
+ protected
+ function GetInstanceCount: integer;
+ function GetInstances(Index: integer): TModuleController;
+ function GetModules(Index: Integer): TModuleInfo;
+ function GetModulesCount: Integer;
+ procedure Notification(AComponent: TComponent;
+ Operation: TOperation); override;
+ public
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ property Instances[Index : integer] : TModuleController read GetInstances;
+ property InstanceCount : integer read GetInstanceCount;
+ procedure LoadModules;
+ function LoadModule(const AFileName : String) : Boolean;
+ procedure UnloadModules;
+ function UnloadModule(const AIndex : Integer): Boolean;
+ property ModulesCount: Integer read GetModulesCount;
+ property Modules[Index: Integer]: TModuleInfo read GetModules;
+ published
+ property BPLPath: string read FBPLPath write FBPLPath;
+ property MainMenu: TMainMenu read FMainMenu write FMainMenu;
+ property MainForm: TForm read FMainForm write FMainForm;
+ property OnBeforeLoad: TBeforeLoadEvent read FOnBeforeLoad write FOnBeforeLoad;
+ property OnAfterLoad: TAfterLoadEvent read FOnAfterLoad write FOnAfterLoad;
+ property OnBeforeUnload : TBeforeUnloadEvent read FOnBeforeUnload write FOnBeforeUnload;
+ property OnAfterUnload: TAfterUnloadEvent read FOnAfterUnload write FOnAfterUnload;
+ end;
+
+procedure RegisterModuleClass(AModuleClass : TModuleControllerClass);
+procedure UnRegisterModuleClass(AModuleClass : TModuleControllerClass);
+function GetModuleClass(AHandle: HMODULE): TModuleControllerClass;
+
+implementation
+
+uses
+ SysUtils, Dialogs;
+
+const
+ MODULES_FILES = '*.bpl';
+ DEFAULT_DIR = 'Modules';
+
+var
+ FModuleClassList: TClassList;
+ FModuleHandleList: TStringList;
+
+
+{ TModuleInfo }
+constructor TModuleInfo.Create(AModuleClass: TModuleControllerClass;
+ const FileName : String);
+var
+ GetModulefunc : TGetModuleFunc;
+begin
+ FName := AModuleClass.ClassName;
+ FPackageHandle := HMODULE(FindClassHInstance(AModuleClass));
+ FModuleClass := TModuleControllerClass(FindClass(FName));
+ FFileName := FileName;
+
+ @GetModulefunc := GetProcAddress(FPackageHandle, PChar(GET_MODULE_FUNC));
+ if (@GetModulefunc = NIL) then
+ raise Exception.Create('No se ha podido registrar el módulo')
+ else begin
+ FModule := GetModulefunc;
+ end;
+end;
+
+destructor TModuleInfo.Destroy;
+begin
+ FreeAndNIL(FModule);
+ inherited;
+end;
+
+{ THostManager }
+constructor THostManager.Create(AOwner : TComponent);
+begin
+ inherited Create(AOwner);
+ FMainForm := nil;
+ FMainMenu := nil;
+ FBPLPath := '';
+
+ FInstancesList := TList.Create;
+ FModules := TObjectList.Create;
+end;
+
+destructor THostManager.Destroy;
+begin
+ UnloadModules;
+ FreeAndNil(FInstancesList);
+ FreeAndNil(FModules);
+ inherited;
+end;
+
+function THostManager.GetInstanceCount: integer;
+begin
+ Result := FInstancesList.Count;
+end;
+
+function THostManager.GetInstances(Index: integer): TModuleController;
+begin
+ Result := TModuleController(FInstancesList.Items[Index]);
+end;
+
+function THostManager.GetModules(Index: Integer): TModuleInfo;
+begin
+ Result := TModuleInfo(FModules[Index]);
+end;
+
+function THostManager.GetModulesCount: Integer;
+begin
+ Result := 0;
+ if Assigned(FModules) then
+ Result := FModules.Count;
+end;
+
+function THostManager.LoadModule(const AFileName: String): Boolean;
+var
+ AHandle : HMODULE;
+ AModuleClass : TModuleControllerClass;
+ AModuleInfo: TModuleInfo;
+ CanContinue : Boolean;
+ AFile : String;
+begin
+ Result := False;
+ CanContinue := True;
+ AFile := ExtractFileName(AFileName);
+ if Assigned(FOnBeforeLoad) then
+ FOnBeforeLoad(Self, AFile, CanContinue);
+
+ if CanContinue then
+ begin
+ AHandle := LoadPackage(AFileName);
+ AModuleClass := GetModuleClass(AHandle);
+ if Assigned(AModuleClass) then
+ begin
+ AModuleInfo := TModuleInfo.Create(AModuleClass, AFile);
+ FModules.Add(AModuleInfo);
+ if Assigned(FOnAfterLoad) then
+ FOnAfterLoad(Self, AModuleInfo);
+ end;
+ Result := True;
+ end;
+end;
+
+procedure THostManager.LoadModules;
+var
+ SRec : TSearchRec;
+ AFileName : String;
+begin
+ if FBPLPath = '' then
+ FBPLPath := ExtractFilePath(Application.ExeName) +
+ PathDelim + DEFAULT_DIR + PathDelim;
+
+ if Copy(FBPLPath, Length(FBPLPath), 1) <> PathDelim then
+ FBPLPath := FBPLPath + PathDelim;
+
+ if FindFirst(FBPLPath + MODULES_FILES, faAnyFile, SRec) = 0 then
+ begin
+ repeat
+ AFileName := FBPLPath + SRec.Name;
+ LoadModule(AFileName);
+ until FindNext(SRec) <> 0;
+ end;
+end;
+
+procedure THostManager.Notification(AComponent: TComponent;
+ Operation: TOperation);
+begin
+ inherited Notification(AComponent, Operation);
+ case Operation of
+ opRemove:
+ begin
+ if (FMainMenu <> nil) and (AComponent is TMainMenu) and
+ (AComponent = FMainMenu) then
+ FMainMenu := NIL;
+
+ if (FMainForm <> nil) and (AComponent is TForm)
+ and (FMainForm = AComponent)then
+ FMainForm := NIL;
+ end;
+ end;
+end;
+
+function THostManager.UnloadModule(const AIndex: Integer): Boolean;
+var
+ AFileName : String;
+ AHandle : HModule;
+begin
+ if Assigned(FOnBeforeUnload) then
+ FOnBeforeUnload(Self, Modules[AIndex]);
+
+ AFileName := Modules[AIndex].FileName;
+ AHandle := Modules[AIndex].PackageHandle;
+ FModules.Delete(AIndex);
+ UnloadPackage(AHandle);
+
+ if Assigned(FOnAfterUnload) then
+ FOnAfterUnload(Self, AFileName);
+ Result := True;
+end;
+
+procedure THostManager.UnloadModules;
+var
+ i : integer;
+begin
+ for i := (FModules.Count - 1) downto 0 do
+ UnloadModule(i);
+end;
+
+procedure RegisterModuleClass(AModuleClass : TModuleControllerClass);
+var
+ x : Integer;
+begin
+ x := FModuleClassList.IndexOf(AModuleClass);
+ if x < 0 then
+ begin
+ Classes.RegisterClass(AModuleClass);
+ FModuleClassList.Add(AModuleClass);
+ FModuleHandleList.Add(IntToStr(HMODULE(FindClassHInstance(AModuleClass))));
+ end;
+end;
+
+procedure UnRegisterModuleClass(AModuleClass : TModuleControllerClass);
+var
+ x : Integer;
+begin
+ x := FModuleClassList.IndexOf(AModuleClass);
+ if x >= 0 then
+ begin
+ FModuleClassList.Delete(x);
+ FModuleHandleList.Delete(x);
+ Classes.UnRegisterClass(AModuleClass);
+ end;
+end;
+
+function GetModuleClass(AHandle: HMODULE): TModuleControllerClass;
+var
+ x : Integer;
+begin
+ Result := Nil;
+
+ x := FModuleHandleList.IndexOf(IntToStr(AHandle));
+ if x <> -1 then
+ Result := TModuleControllerClass(FModuleClassList.Items[x]);
+end;
+
+
+initialization
+ FModuleClassList := TClassList.Create;
+ FModuleHandleList := TStringList.Create;
+
+finalization
+ FreeAndNIL(FModuleClassList);
+ FreeAndNIL(FModuleHandleList);
+end.
diff --git a/Source/uInterfaces.pas b/Source/uInterfaces.pas
new file mode 100644
index 0000000..9524fe1
--- /dev/null
+++ b/Source/uInterfaces.pas
@@ -0,0 +1,54 @@
+unit uInterfaces;
+
+interface
+
+uses
+ Windows, Classes, Forms, Menus, ActnList, Controls, uModuleController;
+
+const
+ GET_MODULE_FUNC = 'GetModule';
+
+type
+ TGetModuleFunc = function : TModuleController; stdcall;
+
+ { IModule }
+{ IModule = interface(IHostAware)
+ function GetDefaultAction: TAction;
+ property DefaultAction: TAction read GetDefaultAction;
+
+ function GetDescription: string;
+ property Description: string read GetDescription;
+
+ procedure SetHModule(const Value: HModule);
+ function GetHModule: HModule;
+ property ModuleHandle: HModule read GetHModule write SetHModule;
+
+ function GetMenu: IModuleMenu;
+ property Menu: IModuleMenu read GetMenu;
+
+ function GetModuleName: string;
+ property ModuleName: string read GetModuleName;
+
+ function GetSmallImages: TImageList;
+ function GetLargeImages: TImageList;
+ function GetLargeImagesDisabled: TImageList;
+ function GetLargeImagesHot: TImageList;
+ function GetSmallImagesDisabled: TImageList;
+ function GetSmallImagesHot: TImageList;
+ property SmallImages: TImageList read GetSmallImages;
+ property LargeImages: TImageList read GetLargeImages;
+ property SmallImagesDisabled: TImageList read GetSmallImagesDisabled;
+ property LargeImagesDisabled: TImageList read GetLargeImagesDisabled;
+ property SmallImagesHot: TImageList read GetSmallImagesHot;
+ property LargeImagesHot: TImageList read GetLargeImagesHot;
+ end;}
+
+implementation
+
+uses
+ SysUtils, Dialogs,
+ uHostManager;
+
+{ TModuleInfo }
+
+end.
diff --git a/Source/uModuleController.dfm b/Source/uModuleController.dfm
new file mode 100644
index 0000000..1892417
--- /dev/null
+++ b/Source/uModuleController.dfm
@@ -0,0 +1,7 @@
+object ModuleController: TModuleController
+ OldCreateOrder = False
+ Left = 594
+ Top = 308
+ Height = 150
+ Width = 215
+end
diff --git a/Source/uModuleController.pas b/Source/uModuleController.pas
new file mode 100644
index 0000000..41298d9
--- /dev/null
+++ b/Source/uModuleController.pas
@@ -0,0 +1,96 @@
+unit uModuleController;
+
+interface
+
+uses
+ SysUtils, Classes,
+ uModuleMenu, ImgList, Controls, ActnList, Menus;
+
+type
+ TModuleController = class(TDataModule)
+ private
+ FDescription : String;
+ FModuleName : String;
+ FModuleHandle : HModule;
+ FModuleMenu : TMainMenu;
+ FHModule: HModule;
+ FAuthor: String;
+ FVersion: String;
+ FDefaultAction : TAction;
+ FSmallImages : TImageList;
+ FLargeImages : TImageList;
+ FSmallImagesDisabled : TImageList;
+ FLargeImagesDisabled : TImageList;
+ FSmallImagesHot : TImageList;
+ FLargeImagesHot : TImageList;
+ public
+ constructor Create(AOwner : TComponent); override;
+ destructor Destroy; override;
+ property ModuleHandle: HModule read FHModule write FHModule;
+ protected
+ procedure Notification(AComponent: TComponent;
+ Operation: TOperation); override;
+ published
+ property DefaultAction: TAction read FDefaultAction write FDefaultAction;
+ property Description: string read FDescription write FDescription;
+ property ModuleMenu: TMainMenu read FModuleMenu write FModuleMenu;
+ property ModuleName: string read FModuleName write FModuleName;
+ property SmallImages: TImageList read FSmallImages write FSmallImages;
+ property LargeImages: TImageList read FLargeImages write FLargeImages;
+ property SmallImagesDisabled: TImageList read FSmallImagesDisabled write FSmallImagesDisabled;
+ property LargeImagesDisabled: TImageList read FLargeImagesDisabled write FLargeImagesDisabled;
+ property SmallImagesHot: TImageList read FSmallImagesHot write FSmallImagesHot;
+ property LargeImagesHot: TImageList read FLargeImagesHot write FLargeImagesHot;
+ property Author: string read FAuthor write FAuthor;
+ property Version: string read FVersion write FVersion;
+ end;
+
+ TModuleControllerClass = class of TModuleController;
+
+implementation
+
+{$R *.dfm}
+
+uses
+ Dialogs;
+
+
+{ TModuleController }
+
+constructor TModuleController.Create(AOwner: TComponent);
+begin
+ inherited;
+ FModuleHandle := 0;
+end;
+
+destructor TModuleController.Destroy;
+begin
+ inherited;
+end;
+
+procedure TModuleController.Notification(AComponent: TComponent;
+ Operation: TOperation);
+begin
+ inherited Notification(AComponent, Operation);
+ if Operation = opRemove then
+ begin
+ if ModuleMenu = AComponent then
+ ModuleMenu := NIL;
+ if DefaultAction = AComponent then
+ DefaultAction := NIL;
+ if SmallImages = AComponent then
+ SmallImages := nil;
+ if SmallImagesDisabled = AComponent then
+ SmallImagesDisabled := nil;
+ if SmallImagesHot = AComponent then
+ SmallImagesHot := nil;
+ if LargeImages = AComponent then
+ LargeImages := nil;
+ if LargeImagesDisabled = AComponent then
+ LargeImagesDisabled := nil;
+ if LargeImagesHot = AComponent then
+ LargeImagesHot := nil;
+ end;
+end;
+
+end.
diff --git a/Source/uModuleMenu.pas b/Source/uModuleMenu.pas
new file mode 100644
index 0000000..c72efb8
--- /dev/null
+++ b/Source/uModuleMenu.pas
@@ -0,0 +1,90 @@
+unit uModuleMenu;
+
+interface
+
+uses
+ Menus;
+
+type
+
+ { IModuleMenu }
+ IModuleMenu = interface(IInterface)
+ ['{8C844424-13F3-44D6-8B50-F723F964E816}']
+ function GetName: string;
+ procedure SetName(const Value: string);
+ property Name: string read GetName write SetName;
+
+ function GetItems(Index: Integer): TMenuItem;
+ property Items[Index: Integer]: TMenuItem read GetItems;
+
+ function GetItemsCount: Integer;
+ property ItemsCount: Integer read GetItemsCount;
+
+ function AddItem: TMenuItem;
+ end;
+
+ { TModuleMenu }
+ TModuleMenu = class(TInterfacedObject, IModuleMenu)
+ private
+ FMenu: TMenu;
+ function GetName: string;
+ function GetItems(Index: Integer): TMenuItem;
+ function GetItemsCount: Integer;
+ procedure SetName(const Value: string);
+ public
+ constructor Create(const AMenuCaption: String);
+ destructor Destroy; override;
+ function AddItem: TMenuItem;
+ property Name: string read GetName write SetName;
+ property Items[Index: Integer]: TMenuItem read GetItems;
+ property ItemsCount: Integer read GetItemsCount;
+ end;
+
+implementation
+
+uses
+ SysUtils;
+
+constructor TModuleMenu.Create(const AMenuCaption: String);
+begin
+ FMenu := TMenu.Create(nil);
+ if AMenuCaption <> '' then
+ FMenu.Items.Caption := AMenuCaption;
+ inherited Create;
+end;
+
+destructor TModuleMenu.Destroy;
+begin
+ FMenu.Free;
+ inherited;
+end;
+
+function TModuleMenu.AddItem: TMenuItem;
+begin
+ Result := TMenuItem.Create(FMenu);
+ FMenu.Items.Add(Result);
+end;
+
+function TModuleMenu.GetName: string;
+begin
+ Result := FMenu.Items.Caption;
+end;
+
+function TModuleMenu.GetItems(Index: Integer): TMenuItem;
+begin
+ Result := FMenu.Items.Items[Index];
+end;
+
+function TModuleMenu.GetItemsCount: Integer;
+begin
+ Result := FMenu.Items.Count;
+end;
+
+procedure TModuleMenu.SetName(const Value: string);
+begin
+ if FMenu.Items.Caption <> Value then
+ FMenu.Items.Caption := Value;
+end;
+
+end.
+
diff --git a/Source/uReg.pas b/Source/uReg.pas
new file mode 100644
index 0000000..818c181
--- /dev/null
+++ b/Source/uReg.pas
@@ -0,0 +1,27 @@
+unit uReg;
+
+{$I PluginSDK.inc}
+
+interface
+
+procedure Register;
+
+implementation
+
+uses
+ Classes,
+ {$IFDEF DELPHI6UP}
+ DesignEditors, DesignIntf, VCLEditors,
+ {$ELSE}
+ DsgnIntf,
+ {$ENDIF DELPHI6UP}
+ ToolsAPI,
+ uHostManager, uModuleController;
+
+procedure Register;
+begin
+ RegisterComponents('Rodax Plugin', [THostManager]);
+ RegisterCustomModule(TModuleController, TCustomModule);
+end;
+
+end.
diff --git a/Templates/uSamplePluginController.dfm b/Templates/uSamplePluginController.dfm
new file mode 100644
index 0000000..aab133e
--- /dev/null
+++ b/Templates/uSamplePluginController.dfm
@@ -0,0 +1,11 @@
+object ModuleController1: TModuleController1
+ OldCreateOrder = True
+ Description = 'Ventas'
+ ModuleName = 'Ventas'
+ Author = 'David'
+ Version = '1.0.0'
+ Left = 605
+ Top = 361
+ Height = 258
+ Width = 407
+end
diff --git a/Templates/uSamplePluginController.pas b/Templates/uSamplePluginController.pas
new file mode 100644
index 0000000..2963f39
--- /dev/null
+++ b/Templates/uSamplePluginController.pas
@@ -0,0 +1,35 @@
+unit uSamplePluginController;
+
+interface
+
+uses
+ uModuleController, uInterfaces, uHostManager;
+
+type
+ TModuleController1 = class(TModuleController)
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+implementation
+
+{$R *.dfm}
+
+function GetModule : TModuleController;
+begin
+ Result := TModuleController1.Create(nil);
+end;
+
+exports
+ GetModule name GET_MODULE_FUNC;
+
+initialization
+ RegisterModuleClass(TModuleController1);
+
+finalization
+ UnRegisterModuleClass(TModuleController1);
+
+
+end.