commit e9c10e67f80c01158deb886a1f1c4fb4b5194753 Author: david Date: Fri Aug 17 15:03:54 2007 +0000 Importación inicial git-svn-id: https://192.168.0.254/svn/Componentes.Internos.GUISDK/trunk@4 e3f7d858-3362-1a4e-b49c-1b1bd96e4488 diff --git a/Build/Build.proj b/Build/Build.proj new file mode 100644 index 0000000..d1cc295 --- /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..b71f699 --- /dev/null +++ b/Build/Build.properties @@ -0,0 +1,9 @@ + + + + $(MSBuildProjectDirectory)\.. + $(BaseFolder)\Sources + $(BaseFolder)\Packages + $(BaseFolder)\Lib\$(DelphiVersion) + + diff --git a/Build/GUISDK.proj b/Build/GUISDK.proj new file mode 100644 index 0000000..e320e97 --- /dev/null +++ b/Build/GUISDK.proj @@ -0,0 +1,58 @@ + + + + + + + + Release + AnyCPU + $(OutputFolder)\GUISDK_$(DelphiVersion).bpl + + + + + + + + + False + False + 0 + 0 + $(OutputFolder) + $(OutputFolder) + $(OutputFolder) + $(OutputFolder) + $(OutputFolder);$(SourceFolder) + $(OutputFolder) + $(OutputFolder) + $(OutputFolder) + False + RELEASE + + + + + + + +
CustomEditor
+
+ +
CustomView
+
+ + + + + + + + + + + +
+ +
\ No newline at end of file diff --git a/Lib/D7/uCustomView.dfm b/Lib/D7/uCustomView.dfm new file mode 100644 index 0000000..98f9074 --- /dev/null +++ b/Lib/D7/uCustomView.dfm @@ -0,0 +1,7 @@ +object CustomView: TCustomView + Left = 0 + Top = 0 + Width = 320 + Height = 240 + TabOrder = 0 +end diff --git a/Packages/GUISDK_D10.bdsproj b/Packages/GUISDK_D10.bdsproj new file mode 100644 index 0000000..30a2163 --- /dev/null +++ b/Packages/GUISDK_D10.bdsproj @@ -0,0 +1,508 @@ + + + + + + + + + + + + GUISDK_D10.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 + GUI SDK para Delphi 10 + + + + ..\Lib\D10 + + + ..\Lib\D10;..\Source + + + + 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/GUISDK_D10.cfg b/Packages/GUISDK_D10.cfg new file mode 100644 index 0000000..ad1c7a2 --- /dev/null +++ b/Packages/GUISDK_D10.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\Lib\D10" +-LE"C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl" +-LN"C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Packages/GUISDK_D10.dpk b/Packages/GUISDK_D10.dpk new file mode 100644 index 0000000..4988833 --- /dev/null +++ b/Packages/GUISDK_D10.dpk @@ -0,0 +1,43 @@ +package GUISDK_D10; + +{$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 'GUI SDK para Delphi 10'} +{$IMPLICITBUILD OFF} + +requires + vcl, + rtl, + designide, + vclactnband, + vclx, + cfpack_d10, + ccpack10; + +contains + uCustomView in '..\Sources\uCustomView.pas' {CustomView: TFrame}, + uCustomEditor in '..\Sources\uCustomEditor.pas' {CustomEditor}, + uGUIBase in '..\Sources\uGUIBase.pas', + uGUIUtils in '..\Sources\uGUIUtils.pas'; + +end. diff --git a/Packages/GUISDK_D10.dproj b/Packages/GUISDK_D10.dproj new file mode 100644 index 0000000..32a6950 --- /dev/null +++ b/Packages/GUISDK_D10.dproj @@ -0,0 +1,135 @@ + + + {d159ebd0-959c-44de-808b-70cd0d38253d} + GUISDK_D10.dpk + Debug + AnyCPU + DCC32 + C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\GUISDK_D10.bpl + + + 7.0 + False + False + 0 + 3 + ..\Lib\D10 + ..\Lib\D10 + ..\Lib\D10 + RELEASE + + + 7.0 + 3 + ..\Lib\D10 + ..\Lib\D10 + ..\Lib\D10 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + GUI SDK para Delphi 10 + False + False + False + + + 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. + + + GUISDK_D10.dpk + + + + + + + MainSource + + +
CustomEditor
+
+ +
CustomView
+
+ + + + + + + + + + + +
+ +
\ No newline at end of file diff --git a/Packages/GUISDK_D10.drc b/Packages/GUISDK_D10.drc new file mode 100644 index 0000000..7642ac9 --- /dev/null +++ b/Packages/GUISDK_D10.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/GUISDK_D10.res b/Packages/GUISDK_D10.res new file mode 100644 index 0000000..86c94e6 Binary files /dev/null and b/Packages/GUISDK_D10.res differ diff --git a/Packages/GUISDK_D2007.dpk b/Packages/GUISDK_D2007.dpk new file mode 100644 index 0000000..1d14b75 --- /dev/null +++ b/Packages/GUISDK_D2007.dpk @@ -0,0 +1,44 @@ +package GUISDK_D2007; + +{$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 'GUI SDK para Delphi 10'} +{$IMPLICITBUILD OFF} +{$DEFINE DEBUG} + +requires + vcl, + rtl, + designide, + vclactnband, + vclx, + cfpack_d10, + ccpack10; + +contains + uCustomView in '..\Source\uCustomView.pas' {CustomView: TFrame}, + uCustomEditor in '..\Source\uCustomEditor.pas' {CustomEditor}, + uGUIBase in '..\Source\uGUIBase.pas', + uGUIUtils in '..\Source\uGUIUtils.pas'; + +end. diff --git a/Packages/GUISDK_D2007.res b/Packages/GUISDK_D2007.res new file mode 100644 index 0000000..86c94e6 Binary files /dev/null and b/Packages/GUISDK_D2007.res differ diff --git a/Packages/GUISDK_D7.cfg b/Packages/GUISDK_D7.cfg new file mode 100644 index 0000000..47e6b67 --- /dev/null +++ b/Packages/GUISDK_D7.cfg @@ -0,0 +1,42 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-vn +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Lib\D7" +-LE"c:\archivos de programa\borland\delphi7\Projects\Bpl" +-LN"c:\archivos de programa\borland\delphi7\Projects\Bpl" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Packages/GUISDK_D7.dof b/Packages/GUISDK_D7.dof new file mode 100644 index 0000000..e302286 --- /dev/null +++ b/Packages/GUISDK_D7.dof @@ -0,0 +1,501 @@ +[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=0 +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=1 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=GUI SDK para Delphi 7 +[Directories] +OutputDir= +UnitOutputDir=..\Lib\D7 +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +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= +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\Projects\Bpl\DJclVcl70.bpl=JEDI Code Library VCL package for Delphi 7 +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\DJcl70.bpl=JEDI Code Library RTL package for Delphi 7 +C:\WINDOWS\system32\fqb70.bpl=FastQueryBuilder 1.01 +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System (core 3.1) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarDBNavD7.bpl=ExpressBars DBNavigator by Developer Express Inc. +C:\Archivos de programa\RemObjects Software\Hydra\Dcu\D7\Hydra_Core_D7.bpl=RemObjects Hydra - Core Library +C:\Archivos de programa\RemObjects Software\Hydra\Dcu\D7\Hydra_IDE_D7.bpl=RemObjects Hydra - IDE Integration +C:\Archivos de programa\RemObjects Software\Hydra\Dcu\D7\Hydra_RO_D7.bpl=RemObjects Hydra - RemObjects SDK Integration Library +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=11 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;D:\Proyectos\FactuGES (Arribas)\Codigo\Base;D:\Proyectos\FactuGES (Arribas)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Arribas)\Codigo\Modulos\Contactos\Reglas +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;D:\Proyectos\Componentes\GUISDK\Lib\D7;..\Servidor +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug +Item4=. +Item5=C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source; +Item6=C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source;..\Output +Item7=C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7 +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\ +Item9=C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source +Item10=http://delphi.hostmos.ru;C:\Archivos de programa\RemObjects Software\Data Abstract for Delphi\Dcu\D7 +[HistoryLists\hlUnitOutputDirectory] +Count=5 +Item0=..\Lib\D7 +Item1=.\ +Item2=. +Item3=..\Output +Item4=..\ +[HistoryLists\hlBPLOutput] +Count=6 +Item0=..\Lib\D7 +Item1=..\..\..\Output\Cliente\Modules +Item2=..\Output\Cliente +Item3=..\..\Output\Cliente +Item4=..\Output +Item5=..\ +[HistoryLists\hlDCPOutput] +Count=5 +Item0=..\Lib\D7 +Item1=.\ +Item2=. +Item3=..\Output +Item4=..\ +[Exception Log] +EurekaLog Version=501 +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="&OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="&Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="&Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="&Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="&Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="&Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="&Copy 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="&OK" +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/GUISDK_D7.dpk b/Packages/GUISDK_D7.dpk new file mode 100644 index 0000000..7896db4 --- /dev/null +++ b/Packages/GUISDK_D7.dpk @@ -0,0 +1,43 @@ +package GUISDK_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'GUI SDK para Delphi 7'} +{$IMPLICITBUILD OFF} + +requires + vcl, + rtl, + designide, + vclactnband, + vclx, + cfpack, + ccpack70; + +contains + uCustomView in '..\Source\uCustomView.pas' {CustomView: TFrame}, + uCustomEditor in '..\Source\uCustomEditor.pas' {CustomEditor}, + uGUIBase in '..\Source\uGUIBase.pas', + uGUIUtils in '..\Source\uGUIUtils.pas'; + +end. diff --git a/Packages/GUISDK_D7.drc b/Packages/GUISDK_D7.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Packages/GUISDK_D7.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/GUISDK_D7.res b/Packages/GUISDK_D7.res new file mode 100644 index 0000000..3c41d55 Binary files /dev/null and b/Packages/GUISDK_D7.res differ diff --git a/Sources/uCustomEditor.dfm b/Sources/uCustomEditor.dfm new file mode 100644 index 0000000..46975d9 --- /dev/null +++ b/Sources/uCustomEditor.dfm @@ -0,0 +1,18 @@ +object CustomEditor: TCustomEditor + Left = 486 + Top = 435 + Width = 518 + Height = 324 + Caption = 'CustomEditor' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + OnActivate = FormActivate + OnClose = FormClose + PixelsPerInch = 96 + TextHeight = 13 +end diff --git a/Sources/uCustomEditor.pas b/Sources/uCustomEditor.pas new file mode 100644 index 0000000..19b793c --- /dev/null +++ b/Sources/uCustomEditor.pas @@ -0,0 +1,319 @@ +unit uCustomEditor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, uGUIBase, uCustomView; + +type + TCustomEditor = class(TForm, ICustomEditor) + private + FInstanceID: Integer; + FOnGetModified: TOnGetModifiedEvent; + FOnViewModified: TOnViewModifiedEvent; + FReadOnly: Boolean; + function FindHostForm : IHostForm; + procedure ShowEmbedded(const AParent : TWinControl); overload; + protected + FViews: TInterfaceList; + procedure UpdateActions; override; + function GetInstanceID: Integer; + function GetModified: Boolean; virtual; + procedure SetModified(const Value : Boolean); virtual; + function GetOnViewModified: TOnViewModifiedEvent; + procedure SetOnViewModified(const Value : TOnViewModifiedEvent); + function GetReadOnly: Boolean; virtual; + function GetValid: Boolean; virtual; + procedure SetInstanceID(Value: Integer); + procedure SetReadOnly(Value: Boolean); virtual; + function GetOnGetModified: TOnGetModifiedEvent; + procedure SetOnGetModified(const Value: TOnGetModifiedEvent); + public + constructor Create(AOwner: TComponent); overload; override; + destructor Destroy; override; + function CreateView(const AViewClass : TCustomViewClass): IInterface; + function FindView(const IID: TGUID): IInterface; + function GetInstance: TObject; + procedure ShowEmbedded; overload; + function CloseQuery: Boolean; override; + property Modified: Boolean read GetModified write SetModified; + published + property InstanceID: Integer read GetInstanceID write SetInstanceID; + property ReadOnly: Boolean read GetReadOnly write SetReadOnly; + property Valid: Boolean read GetValid; + property OnGetModified: TOnGetModifiedEvent read GetOnGetModified write + SetOnGetModified; + end; + + TCustomEditorClass = class of TCustomEditor; + +procedure Register; + +implementation + +uses + CustFrms, uGUIUtils; + +procedure Register; +begin + RegisterCustomFormClass(TCustomEditor); +end; + +{ +******************************** TCustomEditor ********************************* +} + +constructor TCustomEditor.Create(AOwner: TComponent); +begin +// inherited CreateNew(AOwner); + // initialize custom fields, etc., here + FViews := TInterfaceList.Create; + + GlobalNameSpace.BeginWrite; + try + CreateNew(AOwner); + if (ClassType <> TCustomEditor) and not (csDesigning in ComponentState) then + begin + Include(FFormState, fsCreating); + try + if not InitInheritedComponent(Self, TCustomEditor) then + raise EResNotFound.CreateFmt('Error %s', [ClassName]); + finally + Exclude(FFormState, fsCreating); + end; + if OldCreateOrder then DoCreate; + end; + finally + GlobalNameSpace.EndWrite; + end; + + + +{ GlobalNameSpace.BeginWrite; + try + if (ClassType <> TCustomEditor) and + not (csDesigning in ComponentState) then + begin + if not InitInheritedComponent(Self, TCustomEditor) then + raise Exception.Create('Error'); + if OldCreateOrder and Assigned(OnCreate) then + OnCreate(Self); + end; + finally + GlobalNameSpace.EndWrite; + end;} +end; + +destructor TCustomEditor.Destroy; +var + i: Integer; +begin + for i := FViews.Count - 1 downto 0 do + FViews.Delete(i); + + FreeAndNIL(FViews); + + inherited Destroy; +end; + +function TCustomEditor.CreateView(const AViewClass : TCustomViewClass): + IInterface; +begin + Result := FViews[FViews.Add(AViewClass.Create(Self))]; +end; + +function TCustomEditor.FindView(const IID: TGUID): IInterface; +var + i: Integer; + aObj: ICustomView; +begin + aObj := NIL; + Result := NIL; + for i := 0 to (FViews.Count - 1) do + begin + FViews.Items[i].QueryInterface(IID, aObj); + if Assigned(aObj) then + begin + Result := aObj; + Break; + end; + end; +end; + +function TCustomEditor.GetInstance: TObject; +begin + Result := Self; +end; + +function TCustomEditor.GetInstanceID: Integer; +begin + Result := FInstanceID; +end; + +function TCustomEditor.GetModified: Boolean; +begin + Result := ControlIsModified(Self); + if Assigned(FOnGetModified) then + FOnGetModified(Self, Result); +end; + +function TCustomEditor.GetReadOnly: Boolean; +begin + Result := FReadOnly; +end; + +function TCustomEditor.GetValid: Boolean; +var + i: Integer; + aObj: ICustomView; +begin + aObj := NIL; + Result := True; + for i := 0 to (FViews.Count - 1) do + begin + FViews.Items[i].QueryInterface(IValidable, aObj); + if Assigned(aObj) then + Result := Result AND aObj.Valid; + if not Result then + Break; + end; +end; + +procedure TCustomEditor.SetInstanceID(Value: Integer); +begin + FInstanceID := Value; +end; + +procedure TCustomEditor.SetReadOnly(Value: Boolean); +begin + FReadOnly := Value; +end; + +procedure TCustomEditor.ShowEmbedded; +var + AMainForm: IHostForm; +begin + AMainForm := NIL; + if not Supports(Application.MainForm, IHostForm, AMainForm) then + AMainForm := FindHostForm; + + if not Assigned(AMainForm) then + raise Exception.Create('No se ha encontrado el formulario principal (ShowEmbedded)') + else + AMainForm.ShowEmbedded(Self) +end; + +procedure TCustomEditor.ShowEmbedded(const AParent : TWinControl); +begin + Parent := AParent; + Align := alClient; + BorderIcons := []; + BorderStyle := bsNone; + Show; + SetFocus; +end; + +function TCustomEditor.GetOnGetModified: TOnGetModifiedEvent; +begin + Result := FOnGetModified; +end; + +function TCustomEditor.GetOnViewModified: TOnViewModifiedEvent; +begin + Result := FOnViewModified; +end; + +procedure TCustomEditor.SetOnGetModified(const Value: TOnGetModifiedEvent); +begin + FOnGetModified := Value; +end; + +procedure TCustomEditor.SetOnViewModified(const Value: TOnViewModifiedEvent); +begin + FOnViewModified := Value; +end; + +function TCustomEditor.CloseQuery: Boolean; +var + i: Integer; + aIntf: IValidable; +begin + Result := inherited CloseQuery; + if Result then + for i := 0 to FViews.Count - 1 do + begin + FViews.Items[i].QueryInterface(IValidable, aIntf); + if Assigned(aIntf) then + begin + Result := (Result and aIntf.Valid); + if not Result then + break; + end; + end; +end; + +procedure TCustomEditor.SetModified(const Value: Boolean); +begin + if Value = False then + ResetModifiedControl(Self); + + if Assigned(FOnViewModified) then + FOnViewModified(Self); +end; + +function TCustomEditor.FindHostForm: IHostForm; +var + i : integer; + AMainForm : IHostForm; +begin + Result := NIL; + for i := 0 to Application.ComponentCount do + if Supports(Application.Components[i], IHostForm, AMainForm) then + begin + Result := AMainForm; + Break; + end; +end; + +{------------------------------------------------------------------------------- + Sobreescribo 'UpdateActions' por un fallo en Delphi que hace + consumir mucha CPU cuando se usan acciones con formularios metidos + uno dentro de otro. +-------------------------------------------------------------------------------} +procedure TCustomEditor.UpdateActions; +var + I: Integer; + + procedure TraverseClients(Container: TWinControl); + var + I: Integer; + Control: TControl; + begin + Application.ProcessMessages; // <--- Modificación + if Container.Showing then + for I := 0 to Container.ControlCount - 1 do + begin + Control := Container.Controls[I]; + if (csActionClient in Control.ControlStyle) and Control.Visible then + Control.InitiateAction; + + if Control is TWinControl then + TraverseClients(TWinControl(Control)); + end; + end; + +begin + if (csDesigning in ComponentState) or not Showing then Exit; + { Update form } + InitiateAction; + { Update main menu's top-most items } + if Menu <> nil then + for I := 0 to Menu.Items.Count - 1 do + with Menu.Items[I] do + if Visible then InitiateAction; + { Update any controls } + TraverseClients(Self); +end; + +end. diff --git a/Sources/uCustomView.dfm b/Sources/uCustomView.dfm new file mode 100644 index 0000000..98f9074 --- /dev/null +++ b/Sources/uCustomView.dfm @@ -0,0 +1,7 @@ +object CustomView: TCustomView + Left = 0 + Top = 0 + Width = 320 + Height = 240 + TabOrder = 0 +end diff --git a/Sources/uCustomView.pas b/Sources/uCustomView.pas new file mode 100644 index 0000000..5db151e --- /dev/null +++ b/Sources/uCustomView.pas @@ -0,0 +1,244 @@ +unit uCustomView; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, uGUIBase, DesignEditors; + +type + TCustomView = class(TFrame, ICustomView) + private + FOnGetModified: TOnGetModifiedEvent; + FOnViewModified: TOnViewModifiedEvent; + FReadOnly: Boolean; + FOnCreate: TNotifyEvent; + FOnDestroy: TNotifyEvent; + FOnHide: TNotifyEvent; + FOnShow: TNotifyEvent; + procedure ShowEmbedded; overload; + procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED; + protected + FObserver: IObserver; + function GetOnGetModified: TOnGetModifiedEvent; + procedure SetOnGetModified(const Value : TOnGetModifiedEvent); + function GetOnViewModified: TOnViewModifiedEvent; + procedure SetOnViewModified(const Value : TOnViewModifiedEvent); + procedure SetModified(const Value : Boolean); virtual; + function GetModified: Boolean; virtual; + function GetReadOnly: Boolean; virtual; + function GetValid: Boolean; virtual; + procedure Release; + procedure SetReadOnly(Value: Boolean); virtual; + procedure DoCreate; virtual; + procedure DoDestroy; virtual; + procedure DoHide; dynamic; + procedure DoShow; dynamic; + public + constructor Create(AOwner: TComponent); override; + constructor CreateEmbedded(AOwner: TComponent; AParent: TWinControl); + destructor Destroy; override; + procedure ShowEmbedded(const AParent : TWinControl); overload; virtual; + property Modified: Boolean read GetModified write SetModified; + published + property OnGetModified: TOnGetModifiedEvent read GetOnGetModified write + SetOnGetModified; + property OnViewModified: TOnViewModifiedEvent read GetOnViewModified write + SetOnViewModified; + property ReadOnly: Boolean read GetReadOnly write SetReadOnly; + property Valid: Boolean read GetValid; + property OnCreate: TNotifyEvent read FOnCreate write FOnCreate; + property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy; + property OnHide: TNotifyEvent read FOnHide write FOnHide; + property OnShow: TNotifyEvent read FOnShow write FOnShow; + end; + + TCustomViewClass = class of TCustomView; + + TCustomViewModule = class(TCustomModule) + public + function Nestable: Boolean; override; + end; + +procedure Register; + +implementation + +{$R *.dfm} + +{ TCustomView } + +uses + DesignIntf, uGUIUtils, RTLConsts; + +procedure Register; +begin + RegisterCustomModule(TCustomView, TCustomViewModule); +end; + +{ +********************************* TCustomView ********************************** +} +procedure TCustomView.CMShowingChanged(var Message: TMessage); +begin + inherited; + + if Showing then + begin + // Put your OnShow logic here. + // When this is called, the frame's window handle has already + // been created, as have the handles for the controls on the + // frame - so you can do most anything you need to do. + if Assigned(FOnShow) then + FOnShow(Self); + end + else + begin + // Put your OnHide logic here, but see the caveats below. + if Assigned(FOnHide) then + FOnHide(Self); + end; +end; + +constructor TCustomView.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FObserver := NIL; + DoCreate; +end; + +constructor TCustomView.CreateEmbedded(AOwner: TComponent; AParent: + TWinControl); +begin + Create(AOwner); + Parent := AParent; + Align := alClient; +end; + +destructor TCustomView.Destroy; +begin + DoDestroy; + inherited Destroy; +end; + +procedure TCustomView.DoCreate; +begin + if Assigned(FOnCreate) then + begin + try + FOnCreate(Self); + except + Application.HandleException(Self); + end; + end; +end; + +procedure TCustomView.DoDestroy; +begin + if Assigned(FOnDestroy) then + begin + try + FOnDestroy(Self); + except + Application.HandleException(Self); + end; + end; +end; + +procedure TCustomView.DoHide; +begin + if Assigned(FOnHide) then + begin + try + FOnHide(Self); + except + Application.HandleException(Self); + end; + end; +end; + +procedure TCustomView.DoShow; +begin + if Assigned(FOnShow) then + begin + try + FOnShow(Self); + except + Application.HandleException(Self); + end; + end; +end; + +function TCustomView.GetModified: Boolean; +begin + Result := ControlIsModified(Self); + if Assigned(FOnGetModified) then + FOnGetModified(Self, Result); +end; + +function TCustomView.GetOnGetModified: TOnGetModifiedEvent; +begin + Result := FOnGetModified; +end; + +function TCustomView.GetOnViewModified: TOnViewModifiedEvent; +begin + Result := FOnViewModified; +end; + +function TCustomView.GetReadOnly: Boolean; +begin + Result := FReadOnly; +end; + +function TCustomView.GetValid: Boolean; +begin + Result := True; +end; + +procedure TCustomView.Release; +begin + Free; +end; + +procedure TCustomView.SetModified(const Value: Boolean); +begin + if Assigned(FOnViewModified) then + FOnViewModified(Self); +end; + +procedure TCustomView.SetOnGetModified(const Value: TOnGetModifiedEvent); +begin + FOnGetModified := Value; +end; + +procedure TCustomView.SetOnViewModified(const Value: TOnViewModifiedEvent); +begin + FOnViewModified := Value; +end; + +procedure TCustomView.SetReadOnly(Value: Boolean); +begin + FReadOnly := Value; +end; + +procedure TCustomView.ShowEmbedded; +begin + Align := alClient; + Show; +end; + +procedure TCustomView.ShowEmbedded(const AParent : TWinControl); +begin + Parent := AParent; + ShowEmbedded; +end; + +{ TCustomViewModule } + +function TCustomViewModule.Nestable: Boolean; +begin + Result := True; +end; + +end. diff --git a/Sources/uGUIBase.pas b/Sources/uGUIBase.pas new file mode 100644 index 0000000..eb742d9 --- /dev/null +++ b/Sources/uGUIBase.pas @@ -0,0 +1,128 @@ +unit uGUIBase; + +interface + +uses + Forms, Controls, Contnrs, Classes; + +type + TOnGetModifiedEvent = procedure (Sender: TObject; var Modified: Boolean) of object; + TOnViewModifiedEvent = procedure (Sender: TObject) of object; + + IEmbeddedable = interface(IInterface) + ['{A1668B17-B355-4688-A78A-B30AE3C8C81E}'] + procedure Release; + procedure ShowEmbedded; overload; + procedure ShowEmbedded(const AParent : TWinControl); overload; + end; + + IModificable = interface(IEmbeddedable) + ['{7F75A327-4ACC-4E4A-8B3D-21C1241DAFBF}'] + function GetModified: Boolean; + procedure SetModified(const Value : Boolean); + property Modified: Boolean read GetModified write SetModified; + + function GetOnGetModified: TOnGetModifiedEvent; + procedure SetOnGetModified(const Value : TOnGetModifiedEvent); + property OnGetModified: TOnGetModifiedEvent read GetOnGetModified write + SetOnGetModified; + + function GetOnViewModified: TOnViewModifiedEvent; + procedure SetOnViewModified(const Value : TOnViewModifiedEvent); + property OnViewModified: TOnViewModifiedEvent read GetOnViewModified write + SetOnViewModified; + end; + + IReadOnly = interface(IModificable) + ['{2549ECF9-270F-4F3C-9852-E488C518F590}'] + function GetReadOnly: Boolean; + procedure SetReadOnly(Value: Boolean); + property ReadOnly: Boolean read GetReadOnly write SetReadOnly; + end; + + IValidable = interface(IReadOnly) + ['{A2562A5E-E3B2-4C1B-B8FE-13A410D8B3DB}'] + function GetValid: Boolean; + property Valid: Boolean read GetValid; + end; + + IInstanceAware = interface(IValidable) + ['{B6B2676A-1D8E-4597-ADDB-43734508E6F5}'] + function GetInstance: TObject; + function GetInstanceID: Integer; + procedure SetInstanceID(Value: Integer); + property InstanceID: Integer read GetInstanceID write SetInstanceID; + end; + + ICustomEditor = interface(IInstanceAware) + ['{07A3AB52-B2B0-4DE3-B470-379834BBE7DB}'] + end; + + ICustomView = interface(IValidable) + ['{98192DE2-19C5-4DA5-B4F4-F2B3782DB6E2}'] + function CanFocus: Boolean; + function Focused: Boolean; + procedure SetFocus; + procedure Update; + end; + + + IHostForm = interface(IInterface) + ['{2091401E-1F9C-4F05-8574-E9E0532780D1}'] + function GetWorkPanel: TWinControl; + property WorkPanel: TWinControl read GetWorkPanel; + procedure OnWorkPanelChanged(AEditor : ICustomEditor); + procedure ShowEmbedded(AEditor : ICustomEditor); + end; + + + IGUIManager = interface(IInterface) + ['{D0A5D2CC-36E1-4C61-8D3B-B6D00EBA3278}'] + function FindInstance(const IID: TGUID): ICustomEditor; + function GetActiveInstance: ICustomEditor; + function GetActiveInstanceIndex: Integer; + function GetInstance(Index : Integer): ICustomEditor; + function GetWorkPanel: TWinControl; + function RegisterInstance(AInstance : ICustomEditor): Boolean; + procedure ReleaseInstance(AnInstance : ICustomEditor); + procedure SetActiveInstance(Value: ICustomEditor); + procedure SetActiveInstanceIndex(Value: Integer); + procedure SetWorkPanel(const Value: TWinControl); + property ActiveInstance: ICustomEditor read GetActiveInstance write + SetActiveInstance; + property ActiveInstanceIndex: Integer read GetActiveInstanceIndex write + SetActiveInstanceIndex; + property Instances[Index : Integer]: ICustomEditor read GetInstance; + property WorkPanel: TWinControl read GetWorkPanel write SetWorkPanel; + end; + + IObservable = interface; + TObserverEvent = procedure (AObject : IObservable) of object; + IObserver = interface(IInterface) + ['{79175C66-8435-4F2F-A3E0-A53A24554A0E}'] + function GetOnNotifyObserver: TObserverEvent; + function GetOnObserverAttached: TObserverEvent; + function GetOnObserverDettached: TObserverEvent; + procedure NotifyObserver(const AObject: IObservable); + procedure ObserverAttached(AObject : IObservable); + procedure ObserverDettached(AObject : IObservable); + procedure SetOnNotifyObserver(AValue: TObserverEvent); + procedure SetOnObserverAttached(AValue: TObserverEvent); + procedure SetOnObserverDettached(AValue: TObserverEvent); + property OnNotifyObserver: TObserverEvent read GetOnNotifyObserver write + SetOnNotifyObserver; + property OnObserverAttached: TObserverEvent read GetOnObserverAttached + write SetOnObserverAttached; + property OnObserverDettached: TObserverEvent read GetOnObserverDettached + write SetOnObserverDettached; + end; + + IObservable = interface(IInterface) + ['{1FF0F081-CBBA-4728-8689-D6F506652E80}'] + procedure AddObserver(const AObserver: IObserver); + procedure RemoveObserver(const AObserver: IObserver); + end; + +implementation + +end. diff --git a/Sources/uGUIUtils.pas b/Sources/uGUIUtils.pas new file mode 100644 index 0000000..c952c9b --- /dev/null +++ b/Sources/uGUIUtils.pas @@ -0,0 +1,51 @@ +unit uGUIUtils; + +interface + +uses + Controls; + +function ControlIsModified(AControl : TWinControl) : Boolean; +procedure ResetModifiedControl(AControl : TWinControl); + +implementation + +uses + StdCtrls, uGUIBase, uCustomView; + +function ControlIsModified(AControl : TWinControl) : Boolean; +var + i : integer; +begin + Result := False; + + if AControl is TCustomEdit then + Result := Result OR (AControl as TCustomEdit).Modified + else + if not Result then + for i := 0 to AControl.ControlCount - 1 do + begin + if AControl.Controls[i] is TWinControl then + Result := ControlIsModified((AControl.Controls[i] as TWinControl)); + + if Result then + Exit; + end; +end; + + +procedure ResetModifiedControl(AControl : TWinControl); +var + i : integer; +begin + if AControl is TCustomEdit then + (AControl as TCustomEdit).Modified := False + else + for i := 0 to AControl.ControlCount - 1 do + begin + if AControl.Controls[i] is TWinControl then + ResetModifiedControl((AControl.Controls[i] as TWinControl)); + end; +end; + +end. diff --git a/Templates/uEditorTemplate.ddp b/Templates/uEditorTemplate.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Templates/uEditorTemplate.ddp differ diff --git a/Templates/uEditorTemplate.dfm b/Templates/uEditorTemplate.dfm new file mode 100644 index 0000000..758d7ab --- /dev/null +++ b/Templates/uEditorTemplate.dfm @@ -0,0 +1,16 @@ +object Form1: TForm1 + Left = 910 + Top = 277 + Width = 245 + Height = 153 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 +end diff --git a/Templates/uEditorTemplate.pas b/Templates/uEditorTemplate.pas new file mode 100644 index 0000000..5b14adf --- /dev/null +++ b/Templates/uEditorTemplate.pas @@ -0,0 +1,28 @@ +unit uEditorTemplate; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, + uCustomEditor; + +type + TForm1 = class(TCustomEditor) + private + { Private declarations } + protected + { Protected declarations } + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + + +end.