Commit 80a94596 authored by Sandro Camata Santana's avatar Sandro Camata Santana

Inicio implementação do plugin EvoUML

parent 831d6539
Pipeline #1438 failed with stages
ituOQLParams.pas(7,22) Note: Fixed character case of unit "acuOQl" to "acuOQL".
ituOQLParams.pas Note: Replaced unit "Mask" with "MaskEdit" in uses section.
ituOQLParams.pas Note: Replaced unit "Windows" with "LCLIntf, LCLType, LMessages" in uses section.
ituOQLParams.pas(1,19) Note: Added MODE Delphi syntax modifier after unit name.
: Conversion Ready.
library CurioAddIn;
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
uses
SysUtils,
Classes,
Interfaces,
Forms,
acuObject,
utuMessage,
acuRepositorySQL,
acuSQLDialectManager,
acuSQLDialectSQLServer,
acuSQLDialectOracle,
acuSQLDialectDB2,
acuFramework,
acuQuerySQLODBC,
ituExplorerV2,
IntegracaoDelphiSUML in 'IntegracaoDelphiSUML.pas',
Mostra_Processamento in 'Mostra_Processamento.pas' {FMostra_Processamento},
InstantClasses in 'InstantCode\InstantClasses.pas',
InstantCode in 'InstantCode\InstantCode.pas',
InstantTextFiler in 'InstantCode\InstantTextFiler.pas',
Utility in 'Utility.pas',
utuOQL in 'utuOQL.pas',
utuXSD in 'utuXSD.pas',
DelphiAddInObj in 'DelphiAddInObj.pas';
exports
InitializeAddIn,
FinalizeAddIn,
DoMenuAction;
{$R *.res}
begin
ChangeLocaleFormatSetting;
gDefaultDatabaseDriver := typeOf(acDatabaseSQLODBC);
PersistenceManager.DefaultRepositoryClass := typeOf(acRepositorySQL);
PersistenceManager.RegisterClass(typeOf(acPersistentObject), acPersistentObjectClassFactory.Create);
gSQLDialectManager.RegisterSQLDialect('MS SQL Server', typeOf(acSQLDialectSQLServer), acSQLDialectSQLServerClassFactory.Create);
gSQLDialectManager.RegisterSQLDialect('Oracle', typeOf(acSQLDialectOracle), acSQLDialectOracleClassFactory.Create);
gSQLDialectManager.RegisterSQLDialect('DB2', typeOf(acSQLDialectDB2), acSQLDialectDB2ClassFactory.Create);
Application.Initialize;
// ExtensionManager.LoadProfiles;
// StarUMLApplication.OpenProject('D:\Users\sandrosantana\Documents\git\GED\mdl\GED.uml');
// Application.CreateForm(TExplorerV2, ExplorerV2);
// Application.Run;
end.
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<General>
<Flags>
<MainUnitHasUsesSectionForAllUnits Value="False"/>
<MainUnitHasCreateFormStatements Value="False"/>
<MainUnitHasTitleStatement Value="False"/>
<MainUnitHasScaledStatement Value="False"/>
</Flags>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="CurioAddIn"/>
<UseAppBundle Value="False"/>
<ResourceType Value="res"/>
</General>
<BuildModes Count="3">
<Item1 Name="Default" Default="True"/>
<Item2 Name="Debug">
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="D:\Users\sandrosantana\Documents\git\StarUML\staruml\src\deploy\modules\staruml-evologica\EVOCurioAddIn.dll"/>
</Target>
<SearchPaths>
<IncludeFiles Value="InstantCode;$(ProjOutDir)"/>
<OtherUnitFiles Value="InstantCode"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>
<SyntaxMode Value="Delphi"/>
<IncludeAssertionCode Value="True"/>
</SyntaxOptions>
</Parsing>
<CodeGeneration>
<Checks>
<IOChecks Value="True"/>
<RangeChecks Value="True"/>
<OverflowChecks Value="True"/>
<StackChecks Value="True"/>
</Checks>
<VerifyObjMethodCallValidity Value="True"/>
<TargetCPU Value="i386"/>
<TargetOS Value="win32"/>
</CodeGeneration>
<Linking>
<Debugging>
<DebugInfoType Value="dsDwarf2Set"/>
<UseExternalDbgSyms Value="True"/>
</Debugging>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
<ExecutableType Value="Library"/>
</Options>
</Linking>
</CompilerOptions>
</Item2>
<Item3 Name="Release">
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="D:\Users\sandrosantana\Documents\git\StarUML\staruml\src\deploy\modules\staruml-evologica\EVOCurioAddIn.dll"/>
</Target>
<SearchPaths>
<IncludeFiles Value="InstantCode;$(ProjOutDir)"/>
<OtherUnitFiles Value="InstantCode"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>
<SyntaxMode Value="Delphi"/>
</SyntaxOptions>
</Parsing>
<CodeGeneration>
<SmartLinkUnit Value="True"/>
<TargetCPU Value="i386"/>
<TargetOS Value="win32"/>
<Optimizations>
<OptimizationLevel Value="3"/>
</Optimizations>
</CodeGeneration>
<Linking>
<Debugging>
<GenerateDebugInfo Value="False"/>
</Debugging>
<LinkSmart Value="True"/>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
<ExecutableType Value="Library"/>
</Options>
</Linking>
</CompilerOptions>
</Item3>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
<UseFileFilters Value="True"/>
</PublishOptions>
<RunParams>
<FormatVersion Value="2"/>
<Modes Count="0"/>
</RunParams>
<RequiredPackages Count="5">
<Item1>
<PackageName Value="evoumlintf"/>
</Item1>
<Item2>
<PackageName Value="RunTimeTypeInfoControls"/>
</Item2>
<Item3>
<PackageName Value="curio"/>
</Item3>
<Item4>
<PackageName Value="SynEdit"/>
</Item4>
<Item5>
<PackageName Value="LCL"/>
</Item5>
</RequiredPackages>
<Units Count="29">
<Unit0>
<Filename Value="CurioAddIn.dpr"/>
<IsPartOfProject Value="True"/>
</Unit0>
<Unit1>
<Filename Value="IntegracaoDelphiSUML.pas"/>
<IsPartOfProject Value="True"/>
</Unit1>
<Unit2>
<Filename Value="Mostra_Processamento.pas"/>
<IsPartOfProject Value="True"/>
<HasResources Value="True"/>
</Unit2>
<Unit3>
<Filename Value="InstantCode\InstantClasses.pas"/>
<IsPartOfProject Value="True"/>
</Unit3>
<Unit4>
<Filename Value="InstantCode\InstantCode.pas"/>
<IsPartOfProject Value="True"/>
</Unit4>
<Unit5>
<Filename Value="InstantCode\InstantTextFiler.pas"/>
<IsPartOfProject Value="True"/>
</Unit5>
<Unit6>
<Filename Value="Utility.pas"/>
<IsPartOfProject Value="True"/>
</Unit6>
<Unit7>
<Filename Value="utuOQL.pas"/>
<IsPartOfProject Value="True"/>
</Unit7>
<Unit8>
<Filename Value="utuXSD.pas"/>
<IsPartOfProject Value="True"/>
</Unit8>
<Unit9>
<Filename Value="DelphiAddInObj.pas"/>
<IsPartOfProject Value="True"/>
</Unit9>
<Unit10>
<Filename Value="fCodeGen.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="CodeGen"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit10>
<Unit11>
<Filename Value="fModelMappingsGenerationOptions.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ModelMappingsGenerationOptions"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit11>
<Unit12>
<Filename Value="fXSDEditor.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="XSDEdit"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit12>
<Unit13>
<Filename Value="ituDataBaseLogin.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="DataBaseLogin"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit13>
<Unit14>
<Filename Value="uCadastroCasoDeUso.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="CadastroCasoDeUso"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit14>
<Unit15>
<Filename Value="uCadastroCasoDeUsoIcones.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="CadastroCasoDeUsoIcones"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit15>
<Unit16>
<Filename Value="uCadastroClasse.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="CadastroClasse"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit16>
<Unit17>
<Filename Value="uRTFEditor.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="RTFEditor"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit17>
<Unit18>
<Filename Value="ituXSDExplorer.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="XSDExplorer"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit18>
<Unit19>
<Filename Value="ituExportUnits.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ExportUnits"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit19>
<Unit20>
<Filename Value="ituOQLExplorerV2.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="OQLExplorerV2"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit20>
<Unit21>
<Filename Value="ituExplorerV2.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ExplorerV2"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit21>
<Unit22>
<Filename Value="ituOQLParams.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="OQLParams"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit22>
<Unit23>
<Filename Value="formMemo.pas"/>
<IsPartOfProject Value="True"/>
<HasResources Value="True"/>
</Unit23>
<Unit24>
<Filename Value="ituServiceParameters.pas"/>
<IsPartOfProject Value="True"/>
<HasResources Value="True"/>
</Unit24>
<Unit25>
<Filename Value="uConnStringTemplates.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ConnStringsTemplates"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit25>
<Unit26>
<Filename Value="uDBAttributeParameters.pas"/>
<IsPartOfProject Value="True"/>
<HasResources Value="True"/>
</Unit26>
<Unit27>
<Filename Value="acuObjectExplorer.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ObjectExplorer"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Frame"/>
</Unit27>
<Unit28>
<Filename Value="odbc_dsn_win.pas"/>
<IsPartOfProject Value="True"/>
</Unit28>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="D:\Users\sandrosantana\Documents\git\StarUML\staruml\src\deploy\modules\staruml-evologica\EVOCurioAddIn.dll"/>
</Target>
<SearchPaths>
<IncludeFiles Value="InstantCode;$(ProjOutDir)"/>
<OtherUnitFiles Value="InstantCode"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>
<SyntaxMode Value="Delphi"/>
</SyntaxOptions>
</Parsing>
<CodeGeneration>
<TargetCPU Value="i386"/>
<TargetOS Value="win32"/>
</CodeGeneration>
<Linking>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
<ExecutableType Value="Library"/>
</Options>
</Linking>
</CompilerOptions>
<Debugging>
<Exceptions Count="4">
<Item1>
<Name Value="EAbort"/>
</Item1>
<Item2>
<Name Value="ECodetoolError"/>
</Item2>
<Item3>
<Name Value="EFOpenError"/>
</Item3>
<Item4>
<Name Value="EProfileNotFound"/>
</Item4>
</Exceptions>
</Debugging>
</CONFIG>
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectSession>
<PathDelim Value="\"/>
<Version Value="11"/>
<BuildModes Active="Debug"/>
<Units Count="90">
<Unit0>
<Filename Value="CurioAddIn.dpr"/>
<IsPartOfProject Value="True"/>
<IsVisibleTab Value="True"/>
<CursorPos X="29" Y="17"/>
<UsageCount Value="215"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit0>
<Unit1>
<Filename Value="IntegracaoDelphiSUML.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="1"/>
<TopLine Value="1540"/>
<CursorPos Y="1561"/>
<UsageCount Value="215"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit1>
<Unit2>
<Filename Value="Mostra_Processamento.pas"/>
<IsPartOfProject Value="True"/>
<HasResources Value="True"/>
<EditorIndex Value="-1"/>
<UsageCount Value="215"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit2>
<Unit3>
<Filename Value="InstantCode\InstantClasses.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<TopLine Value="676"/>
<CursorPos X="97" Y="930"/>
<UsageCount Value="215"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit3>
<Unit4>
<Filename Value="InstantCode\InstantCode.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<TopLine Value="1263"/>
<CursorPos X="3" Y="1280"/>
<UsageCount Value="215"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit4>
<Unit5>
<Filename Value="InstantCode\InstantTextFiler.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<WindowIndex Value="-1"/>
<TopLine Value="-1"/>
<CursorPos X="-1" Y="-1"/>
<UsageCount Value="215"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit5>
<Unit6>
<Filename Value="Utility.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<WindowIndex Value="-1"/>
<TopLine Value="-1"/>
<CursorPos X="-1" Y="-1"/>
<UsageCount Value="215"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit6>
<Unit7>
<Filename Value="utuOQL.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<WindowIndex Value="-1"/>
<TopLine Value="-1"/>
<CursorPos X="-1" Y="-1"/>
<UsageCount Value="215"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit7>
<Unit8>
<Filename Value="utuXSD.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<WindowIndex Value="-1"/>
<TopLine Value="-1"/>
<CursorPos X="-1" Y="-1"/>
<UsageCount Value="215"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit8>
<Unit9>
<Filename Value="DelphiAddInObj.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="3"/>
<TopLine Value="10"/>
<CursorPos X="23" Y="6"/>
<UsageCount Value="215"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit9>
<Unit10>
<Filename Value="fCodeGen.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="CodeGen"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<CursorPos Y="6"/>
<UsageCount Value="215"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit10>
<Unit11>
<Filename Value="fModelMappingsGenerationOptions.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ModelMappingsGenerationOptions"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<TopLine Value="147"/>
<CursorPos X="89" Y="149"/>
<UsageCount Value="217"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit11>
<Unit12>
<Filename Value="fXSDEditor.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="XSDEdit"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<TopLine Value="168"/>
<CursorPos X="74" Y="176"/>
<UsageCount Value="238"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit12>
<Unit13>
<Filename Value="ituDataBaseLogin.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="DataBaseLogin"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="9"/>
<TopLine Value="13"/>
<CursorPos X="15" Y="30"/>
<UsageCount Value="238"/>
<Bookmarks Count="1">
<Item0 X="11" Y="84" ID="1"/>
</Bookmarks>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit13>
<Unit14>
<Filename Value="uCadastroCasoDeUso.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="CadastroCasoDeUso"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<TopLine Value="462"/>
<CursorPos X="80" Y="478"/>
<UsageCount Value="238"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit14>
<Unit15>
<Filename Value="uCadastroCasoDeUsoIcones.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="CadastroCasoDeUsoIcones"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<CursorPos X="75" Y="12"/>
<UsageCount Value="238"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit15>
<Unit16>
<Filename Value="uCadastroClasse.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="CadastroClasse"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<TopLine Value="238"/>
<CursorPos X="45" Y="242"/>
<UsageCount Value="238"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit16>
<Unit17>
<Filename Value="uRTFEditor.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="RTFEditor"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<TopLine Value="20"/>
<CursorPos X="86" Y="30"/>
<UsageCount Value="238"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit17>
<Unit18>
<Filename Value="ituXSDExplorer.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="XSDExplorer"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<TopLine Value="239"/>
<CursorPos X="94" Y="243"/>
<UsageCount Value="238"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit18>
<Unit19>
<Filename Value="ituExportUnits.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ExportUnits"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<CursorPos X="83" Y="25"/>
<UsageCount Value="238"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit19>
<Unit20>
<Filename Value="ituOQLExplorerV2.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="OQLExplorerV2"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="11"/>
<TopLine Value="151"/>
<CursorPos X="3" Y="169"/>
<UsageCount Value="238"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit20>
<Unit21>
<Filename Value="ituExplorerV2.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ExplorerV2"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="7"/>
<TopLine Value="469"/>
<CursorPos Y="493"/>
<UsageCount Value="238"/>
<Bookmarks Count="2">
<Item0 Y="147" ID="9"/>
<Item1 X="8" Y="377" ID="8"/>
</Bookmarks>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit21>
<Unit22>
<Filename Value="ituOQLParams.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="OQLParams"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<CursorPos X="67" Y="12"/>
<UsageCount Value="238"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit22>
<Unit23>
<Filename Value="formMemo.pas"/>
<IsPartOfProject Value="True"/>
<HasResources Value="True"/>
<EditorIndex Value="-1"/>
<TopLine Value="21"/>
<CursorPos X="54" Y="62"/>
<UsageCount Value="238"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit23>
<Unit24>
<Filename Value="ituServiceParameters.pas"/>
<IsPartOfProject Value="True"/>
<HasResources Value="True"/>
<EditorIndex Value="-1"/>
<UsageCount Value="238"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit24>
<Unit25>
<Filename Value="uConnStringTemplates.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ConnStringsTemplates"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<CursorPos X="26"/>
<UsageCount Value="238"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit25>
<Unit26>
<Filename Value="uDBAttributeParameters.pas"/>
<IsPartOfProject Value="True"/>
<HasResources Value="True"/>
<EditorIndex Value="2"/>
<CursorPos X="90" Y="7"/>
<UsageCount Value="238"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit26>
<Unit27>
<Filename Value="acuObjectExplorer.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ObjectExplorer"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Frame"/>
<EditorIndex Value="12"/>
<TopLine Value="7"/>
<CursorPos X="15" Y="25"/>
<UsageCount Value="342"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit27>
<Unit28>
<Filename Value="odbc_dsn_win.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="8"/>
<CursorPos X="51" Y="13"/>
<UsageCount Value="301"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit28>
<Unit29>
<Filename Value="..\StarUML\staruml\src\Core.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="3163"/>
<CursorPos Y="3191"/>
<UsageCount Value="102"/>
</Unit29>
<Unit30>
<Filename Value="..\StarUML\staruml\src\ExtCore.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="1044"/>
<CursorPos Y="1057"/>
<UsageCount Value="102"/>
</Unit30>
<Unit31>
<Filename Value="..\StarUML\staruml\src\GraphicClasses.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="753"/>
<CursorPos X="3" Y="770"/>
<UsageCount Value="102"/>
</Unit31>
<Unit32>
<Filename Value="..\StarUML\staruml\src\StarUMLApp.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="834"/>
<CursorPos Y="852"/>
<UsageCount Value="100"/>
</Unit32>
<Unit33>
<Filename Value="..\StarUML\staruml\src\ProjectMgr.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="948"/>
<CursorPos Y="982"/>
<UsageCount Value="56"/>
</Unit33>
<Unit34>
<Filename Value="..\StarUML\staruml\src\UMLModels.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="15946"/>
<CursorPos Y="15962"/>
<UsageCount Value="143"/>
</Unit34>
<Unit35>
<Filename Value="..\StarUML\staruml\src\UMLFacto.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="312"/>
<CursorPos X="60" Y="329"/>
<UsageCount Value="101"/>
</Unit35>
<Unit36>
<Filename Value="..\StarUML\staruml\src\SelectionMgr.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="85"/>
<CursorPos X="11" Y="106"/>
<UsageCount Value="100"/>
</Unit36>
<Unit37>
<Filename Value="..\StarUML\staruml\src\CmdExec.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="176"/>
<CursorPos X="32" Y="196"/>
<UsageCount Value="100"/>
</Unit37>
<Unit38>
<Filename Value="..\StarUML\staruml\src\ExprParsers.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="63"/>
<CursorPos X="16" Y="80"/>
<UsageCount Value="50"/>
</Unit38>
<Unit39>
<Filename Value="..\StarUML\staruml\src\LayoutDgm.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="564"/>
<CursorPos X="92" Y="596"/>
<UsageCount Value="100"/>
</Unit39>
<Unit40>
<Filename Value="..\curio-framework\server\persistence\sql\acuRepositorySQL.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="140"/>
<CursorPos X="81" Y="168"/>
<UsageCount Value="50"/>
</Unit40>
<Unit41>
<Filename Value="..\StarUML\staruml\packages\evoumlapp.pas"/>
<EditorIndex Value="-1"/>
<UsageCount Value="52"/>
</Unit41>
<Unit42>
<Filename Value="..\curio-framework\package\fpgoldparser.pas"/>
<UnitName Value="fpGOLDParser"/>
<EditorIndex Value="-1"/>
<CursorPos X="21" Y="12"/>
<UsageCount Value="54"/>
</Unit42>
<Unit43>
<Filename Value="..\curio-framework\common\third-party\GoldParser\fasTATE.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="35"/>
<CursorPos Y="37"/>
<UsageCount Value="54"/>
</Unit43>
<Unit44>
<Filename Value="..\curio-framework\common\third-party\GoldParser\GOLDParser.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="239"/>
<CursorPos X="17" Y="255"/>
<UsageCount Value="54"/>
</Unit44>
<Unit45>
<Filename Value="..\curio-framework\common\third-party\GoldParser\Variables.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="31"/>
<CursorPos Y="39"/>
<UsageCount Value="54"/>
</Unit45>
<Unit46>
<Filename Value="..\curio-framework\common\third-party\GoldParser\GOLDObject.pas"/>
<EditorIndex Value="-1"/>
<UsageCount Value="54"/>
</Unit46>
<Unit47>
<Filename Value="..\curio-framework\common\core\utuMessage.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="817"/>
<CursorPos Y="832"/>
<UsageCount Value="103"/>
</Unit47>
<Unit48>
<Filename Value="..\curio-framework\common\core\comm\acuNet.pas"/>
<EditorIndex Value="-1"/>
<CursorPos X="10" Y="11"/>
<UsageCount Value="103"/>
</Unit48>
<Unit49>
<Filename Value="..\curio-framework\server\persistence\core\acuframework.pas"/>
<UnitName Value="acuFramework"/>
<EditorIndex Value="-1"/>
<TopLine Value="1902"/>
<CursorPos Y="1920"/>
<UsageCount Value="151"/>
</Unit49>
<Unit50>
<Filename Value="..\curio-framework\server\persistence\sql\acuOQL.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="235"/>
<CursorPos Y="256"/>
<UsageCount Value="150"/>
</Unit50>
<Unit51>
<Filename Value="D:\lazarus\fpc\3.0.4\source\packages\fcl-registry\src\registry.pp"/>
<EditorIndex Value="10"/>
<TopLine Value="71"/>
<CursorPos X="24" Y="97"/>
<UsageCount Value="133"/>
<Loaded Value="True"/>
</Unit51>
<Unit52>
<Filename Value="..\curio-framework\server\model\acuModel.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="592"/>
<CursorPos X="3" Y="595"/>
<UsageCount Value="147"/>
</Unit52>
<Unit53>
<Filename Value="..\StarUML\staruml\src\MainFrm.pas"/>
<ComponentName Value="MainForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="-1"/>
<CursorPos Y="6"/>
<UsageCount Value="145"/>
<LoadedDesigner Value="True"/>
</Unit53>
<Unit54>
<Filename Value="..\curio-framework\common\core\acuContainers.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="1057"/>
<CursorPos Y="1073"/>
<UsageCount Value="143"/>
</Unit54>
<Unit55>
<Filename Value="D:\lazarus\lcl\include\treeview.inc"/>
<EditorIndex Value="13"/>
<TopLine Value="5419"/>
<CursorPos Y="5436"/>
<UsageCount Value="107"/>
<Loaded Value="True"/>
</Unit55>
<Unit56>
<Filename Value="..\curio-framework\server\persistence\sql\acuQuerySQLODBC.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="185"/>
<CursorPos X="89" Y="210"/>
<UsageCount Value="133"/>
</Unit56>
<Unit57>
<Filename Value="..\curio-framework\server\persistence\sql\acuOQLtoSQLTranslator.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="1290"/>
<CursorPos Y="1306"/>
<UsageCount Value="131"/>
</Unit57>
<Unit58>
<Filename Value="..\curio-framework\server\persistence\sql\acuSQLDialectManager.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="83"/>
<CursorPos Y="103"/>
<UsageCount Value="129"/>
</Unit58>
<Unit59>
<Filename Value="..\curio-framework\common\core\utuFactory.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="54"/>
<CursorPos X="77" Y="76"/>
<UsageCount Value="124"/>
</Unit59>
<Unit60>
<Filename Value="..\StarUML\staruml\src\UMLViews.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="61"/>
<CursorPos Y="90"/>
<UsageCount Value="101"/>
</Unit60>
<Unit61>
<Filename Value="D:\lazarus\lcl\forms.pp"/>
<UnitName Value="Forms"/>
<EditorIndex Value="-1"/>
<TopLine Value="570"/>
<CursorPos X="15" Y="585"/>
<UsageCount Value="57"/>
</Unit61>
<Unit62>
<Filename Value="D:\lazarus\lcl\include\customform.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="923"/>
<CursorPos Y="940"/>
<UsageCount Value="57"/>
</Unit62>
<Unit63>
<Filename Value="D:\lazarus\lcl\lclclasses.pp"/>
<UnitName Value="LCLClasses"/>
<EditorIndex Value="-1"/>
<TopLine Value="121"/>
<CursorPos Y="139"/>
<UsageCount Value="57"/>
</Unit63>
<Unit64>
<Filename Value="D:\lazarus\lcl\include\customdesigncontrol.inc"/>
<EditorIndex Value="-1"/>
<CursorPos Y="23"/>
<UsageCount Value="57"/>
</Unit64>
<Unit65>
<Filename Value="D:\lazarus\lcl\include\customcontrol.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="58"/>
<CursorPos Y="75"/>
<UsageCount Value="57"/>
</Unit65>
<Unit66>
<Filename Value="D:\lazarus\lcl\include\control.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="4529"/>
<CursorPos Y="4548"/>
<UsageCount Value="57"/>
</Unit66>
<Unit67>
<Filename Value="D:\lazarus\lcl\include\application.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="2254"/>
<CursorPos Y="2271"/>
<UsageCount Value="57"/>
</Unit67>
<Unit68>
<Filename Value="D:\lazarus\lcl\include\wincontrol.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="7875"/>
<CursorPos Y="7893"/>
<UsageCount Value="57"/>
</Unit68>
<Unit69>
<Filename Value="..\StarUML\staruml\src\StarUML_TLB.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="1146"/>
<CursorPos X="85" Y="1163"/>
<UsageCount Value="115"/>
</Unit69>
<Unit70>
<Filename Value="..\StarUML\staruml\src\CoreAuto.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="45"/>
<CursorPos Y="54"/>
<UsageCount Value="115"/>
</Unit70>
<Unit71>
<Filename Value="..\StarUML\staruml\src\ExtCoreAuto.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="34"/>
<CursorPos Y="51"/>
<UsageCount Value="115"/>
</Unit71>
<Unit72>
<Filename Value="..\StarUML\staruml\src\StarUMLAppAuto.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="431"/>
<CursorPos Y="454"/>
<UsageCount Value="115"/>
</Unit72>
<Unit73>
<Filename Value="..\StarUML\staruml\src\OptionDeps.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="34"/>
<CursorPos X="3" Y="51"/>
<UsageCount Value="115"/>
</Unit73>
<Unit74>
<Filename Value="..\StarUML\staruml\src\option-manager\OptionNodes.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="18"/>
<CursorPos Y="51"/>
<UsageCount Value="115"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit74>
<Unit75>
<Filename Value="..\StarUML\staruml\src\ShortenSyntaxMgr.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="32"/>
<CursorPos X="12" Y="50"/>
<UsageCount Value="115"/>
</Unit75>
<Unit76>
<Filename Value="..\StarUML\staruml\src\InteractionMgr.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="34"/>
<CursorPos X="9" Y="50"/>
<UsageCount Value="115"/>
</Unit76>
<Unit77>
<Filename Value="..\StarUML\staruml\src\AddInMgr.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="34"/>
<CursorPos Y="51"/>
<UsageCount Value="115"/>
</Unit77>
<Unit78>
<Filename Value="..\StarUML\staruml\src\ConstEdtFrm.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="32"/>
<CursorPos Y="52"/>
<UsageCount Value="115"/>
</Unit78>
<Unit79>
<Filename Value="..\StarUML\staruml\src\Main.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="33"/>
<CursorPos Y="51"/>
<UsageCount Value="115"/>
</Unit79>
<Unit80>
<Filename Value="..\StarUML\staruml\src\UMLAuxAuto.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="27"/>
<CursorPos Y="51"/>
<UsageCount Value="115"/>
</Unit80>
<Unit81>
<Filename Value="..\StarUML\staruml\src\UMLModelsAuto.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="31"/>
<CursorPos Y="54"/>
<UsageCount Value="115"/>
</Unit81>
<Unit82>
<Filename Value="..\StarUML\staruml\src\ViewCoreAuto.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="29"/>
<CursorPos Y="51"/>
<UsageCount Value="115"/>
</Unit82>
<Unit83>
<Filename Value="..\StarUML\staruml\src\UMLViewsAuto.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="34"/>
<CursorPos X="83" Y="46"/>
<UsageCount Value="115"/>
</Unit83>
<Unit84>
<Filename Value="D:\lazarus\fpc\3.0.4\source\packages\winunits-base\src\comobj.pp"/>
<EditorIndex Value="4"/>
<TopLine Value="102"/>
<CursorPos Y="126"/>
<UsageCount Value="18"/>
<Loaded Value="True"/>
</Unit84>
<Unit85>
<Filename Value="D:\lazarus\fpc\3.0.4\source\rtl\inc\objpash.inc"/>
<EditorIndex Value="5"/>
<TopLine Value="229"/>
<CursorPos Y="248"/>
<UsageCount Value="18"/>
<Loaded Value="True"/>
</Unit85>
<Unit86>
<Filename Value="D:\lazarus\fpc\3.0.4\source\rtl\inc\objpas.inc"/>
<EditorIndex Value="6"/>
<TopLine Value="748"/>
<CursorPos X="11" Y="748"/>
<UsageCount Value="18"/>
<Loaded Value="True"/>
</Unit86>
<Unit87>
<Filename Value="..\StarUML\staruml\src\StarUMLintf.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="988"/>
<CursorPos X="52" Y="1010"/>
<UsageCount Value="18"/>
</Unit87>
<Unit88>
<Filename Value="..\StarUML\staruml\packages\evoumlintf.pas"/>
<EditorIndex Value="-1"/>
<UsageCount Value="10"/>
</Unit88>
<Unit89>
<Filename Value="..\StarUML\staruml\src\BasicClasses.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="461"/>
<CursorPos Y="479"/>
<UsageCount Value="10"/>
</Unit89>
</Units>
<JumpHistory Count="5" HistoryIndex="4">
<Position1>
<Filename Value="IntegracaoDelphiSUML.pas"/>
<Caret Line="1553" TopLine="1527"/>
</Position1>
<Position2>
<Filename Value="IntegracaoDelphiSUML.pas"/>
<Caret Line="1555" TopLine="1533"/>
</Position2>
<Position3>
<Filename Value="IntegracaoDelphiSUML.pas"/>
<Caret Line="1558" TopLine="1540"/>
</Position3>
<Position4>
<Filename Value="IntegracaoDelphiSUML.pas"/>
<Caret Line="1560" TopLine="1540"/>
</Position4>
<Position5>
<Filename Value="IntegracaoDelphiSUML.pas"/>
<Caret Line="1561" TopLine="1540"/>
</Position5>
</JumpHistory>
<RunParams>
<FormatVersion Value="2"/>
<Modes Count="1" ActiveMode="default">
<Mode0 Name="default">
<local>
<HostApplicationFilename Value="D:\Users\sandrosantana\Documents\git\StarUML\staruml\src\deploy\StarUML.exe"/>
</local>
</Mode0>
</Modes>
</RunParams>
</ProjectSession>
<Debugging>
<BreakPoints Count="1">
<Item1>
<Kind Value="bpkSource"/>
<WatchScope Value="wpsLocal"/>
<WatchKind Value="wpkWrite"/>
<Source Value="IntegracaoDelphiSUML.pas"/>
<Line Value="1553"/>
</Item1>
</BreakPoints>
<Watches Count="1">
<Item1>
<Expression Value="result"/>
</Item1>
</Watches>
</Debugging>
</CONFIG>
unit DelphiAddInObj;
interface
uses
IntegracaoDelphiSUML;
type
{ TDelphiAddInObj }
TDelphiAddInObj = class
public
// EventPub: IEventPublisher;
// function GetSelectedModel: IModel;
class procedure ActionMenu_GenerateRegisterModelMappings;
class procedure ActionMenu_LoadMethods;
class procedure ActionMenu_GeneratePreview;
class procedure ActionMenu_CodeGenerator;
class procedure ActionMenu_XSDEditor;
class procedure ActionMenu_InsertUseCase;
class procedure ActionMenu_InsertClass;
class procedure ActionMenu_EditClass;
class procedure ActionMenu_EditUseCase;
class procedure ActionMenu_ElementDocumentation;
class procedure ActionMenu_UseCaseXSDsEditor;
class procedure ActionMenu_ConvertXSDsToUseCaseXSD;
class procedure ActionMenu_ExportDiagramClasses;
class procedure ActionMenu_ExportPackageClasses;
class procedure ActionMenu_ExportUseCases;
class procedure ActionMenu_OQLV2;
class procedure ActionMenu_CXOQLV2;
// procedure ListOwnedClasses( piPackage : IUMLPackage ; piObjectList : TInterfaceList ; piStringList : TStringList);
// procedure ListOwnedUseCases ( piPackage : IUMLPackage ; piObjectList : TInterfaceList ; piStringList : TStringList);
class function GetServiceConnectionString: string;
class function DoMenuAction(const ActionID: Integer): Integer;
// function NotifyEvent(AEvent: EventKind): HResult; stdcall;
end;
implementation
uses
windows,
InstantCode, SysUtils, Mostra_Processamento, utuStateMachine, fCodeGen, Controls, Forms,
fModelMappingsGenerationOptions, fXSDEditor, ituDataBaseLogin, cxuSession, formMemo,
utuMessage, uCadastroCasoDeUso, uCadastroClasse, ituServiceParameters, ituExplorerV2,
Registry, uRTFEditor, ituXSDExplorer, ituExportUnits, ituOQLExplorerV2, Classes;
{procedure TDelphiAddInObj.NotifyUpdate(piMsg: string);
begin
MessageDlg(piMsg, mtInformation, [mbOk], 0);
end; }
{procedure TDelphiAddInObj.ProccessUpdates;
var
I: integer;
lModel: IModel;
lClass: IUMLClass;
lAttribute: IUMLAttribute;
lAssoc: IUMLAssociation;
lGen: IUMLGeneralization;
lLog: string;
lElementsList: TInterfaceList;
begin
lElementsList := TInterfaceList.Create;
try
for I := 0 to EventPub.GetEventArgModelCount - 1 do
begin
lModel := EventPub.GetEventArgModelAt(I);
if lModel.QueryInterface(IUMLClass, lClass) = S_OK then
begin
if lElementsList.IndexOf(lClass) < 0 then lElementsList.Add(lClass);
end;
if lModel.QueryInterface(IUMLAssociation, lAssoc) = S_OK then
begin
if lAssoc.GetConnectionAt(0).Participant.QueryInterface(IUMLClass, lClass) = S_OK then
begin
if lElementsList.IndexOf(lClass) < 0 then lElementsList.Add(lClass);
end;
if lAssoc.GetConnectionAt(1).Participant.QueryInterface(IUMLClass, lClass) = S_OK then
begin
if lElementsList.IndexOf(lClass) < 0 then lElementsList.Add(lClass);
end;
end;
if lModel.QueryInterface(IUMLAttribute, lAttribute) = S_OK then
begin
if lAttribute.Owner.QueryInterface(IUMLClass, lClass) = S_OK then
begin
if lElementsList.IndexOf(lClass) < 0 then lElementsList.Add(lClass);
end;
end;
if lModel.QueryInterface(IUMLGeneralization, lGen) = S_OK then
begin
if lGen.Child.QueryInterface(IUMLClass, lClass) = S_OK then
begin
if lElementsList.IndexOf(lClass) < 0 then lElementsList.Add(lClass);
end;
end;
end;
for I := 0 to lElementsList.Count - 1 do
begin
lLog := lLog + '(' + IUMLClass(lElementsList.Items[I]).GetClassName + ')' + ' ' + IUMLClass(lElementsList.Items[I]).Pathname + #13#10;
end;
NotifyUpdate(lLog);
finally
lElementsList.Free;
end;
end; }
//procedure TDelphiAddInObj.ListOwnedClasses(piPackage: IUMLPackage; piObjectList: TInterfaceList; piStringList: TStringList);
//var
// lEnum : Integer;
// lClass: IUMLClass;
// lPackage : IUMLPackage;
//begin
// for lEnum := 0 to piPackage.GetOwnedElementCount - 1 do
// begin
// if piPackage.GetOwnedElementAt(lEnum).QueryInterface(IUMLPackage, lPackage) = S_OK then
// ListOwnedClasses(lPackage,piObjectList,piStringList);
// end;
// for lEnum := 0 to piPackage.GetOwnedElementCount - 1 do
// begin
// if piPackage.GetOwnedElementAt(lEnum).QueryInterface(IUMLClass, lClass) = S_OK then
// begin
// piObjectList.Add(lClass);
// piStringList.Add(lClass.Pathname );
// end;
// end;
//end;
//
//procedure TDelphiAddInObj.ListOwnedUseCases(piPackage: IUMLPackage; piObjectList: TInterfaceList; piStringList: TStringList);
//var
// lEnum : Integer;
// lUseCase: IUMLUseCase;
// lPackage : IUMLPackage;
//begin
// for lEnum := 0 to piPackage.GetOwnedElementCount - 1 do
// begin
// if piPackage.GetOwnedElementAt(lEnum).QueryInterface(IUMLPackage, lPackage) = S_OK then
// ListOwnedUseCases(lPackage,piObjectList,piStringList);
// end;
// for lEnum := 0 to piPackage.GetOwnedElementCount - 1 do
// begin
// if piPackage.GetOwnedElementAt(lEnum).QueryInterface(IUMLUseCase, lUseCase) = S_OK then
// begin
// piObjectList.Add(lUseCase);
// piStringList.Add(lUseCase.Pathname );
// end;
// end;
//end;
class function TDelphiAddInObj.GetServiceConnectionString: string;
var lServiceParamDialog: TitServiceParameters;
lReg: TRegistry;
begin
lServiceParamDialog := TitServiceParameters.Create(nil);
try
lReg := TRegistry.Create;
try
lReg.RootKey := HKEY_CURRENT_USER;
// lReg.OpenKey(cPROJECT_SAVE_OPTIONS_PATH + ExtractFileName(StarUMLApp.ProjectManager.FileName) + '\Service', true);
if lReg.ValueExists('SERVICE_SERVERNAME') then lServiceParamDialog.ServerName := lReg.ReadString('SERVICE_SERVERNAME');
if lReg.ValueExists('SERVICE_PORTNUMBER') then lServiceParamDialog.PortNumber := lReg.ReadInteger('SERVICE_PORTNUMBER');
if lReg.ValueExists('SERVICE_SYSTEMCODE') then lServiceParamDialog.SystemCode := lReg.ReadInteger('SERVICE_SYSTEMCODE');
if lReg.ValueExists('SERVICE_USERNAME') then lServiceParamDialog.UserName := lReg.ReadString('SERVICE_USERNAME');
if lReg.ValueExists('SERVICE_PASSWORD') then lServiceParamDialog.Password := lReg.ReadString('SERVICE_PASSWORD');
//if lServiceParamDialog.ShowModal = mrok then
//begin
// lReg.WriteString('SERVICE_SERVERNAME', lServiceParamDialog.ServerName);
// lReg.WriteInteger('SERVICE_PORTNUMBER', lServiceParamDialog.PortNumber);
// lReg.WriteInteger('SERVICE_SYSTEMCODE', lServiceParamDialog.SystemCode);
// lReg.WriteString('SERVICE_USERNAME', lServiceParamDialog.UserName);
// lReg.WriteString('SERVICE_PASSWORD', lServiceParamDialog.Password);
//
// StarUMLApp.ProjectManager.Project.SetTaggedValueAsInteger('DBMappings', 'ProjectMap', 'SystemCode', lServiceParamDialog.SystemCode);
// StarUMLApp.ProjectManager.Project.SetTaggedValueAsInteger('DBMappings', 'ProjectMap', 'PortNumber', lServiceParamDialog.PortNumber);
//
// result := format('ServerName=%s;PortNumber=%d;SystemCode=%d;UserName=%s;Password=%s;',
// [lServiceParamDialog.ServerName, lServiceParamDialog.PortNumber,
// lServiceParamDialog.SystemCode, lServiceParamDialog.UserName,
// lServiceParamDialog.Password]);
//end
//else
// result := '';
finally
lReg.free;
end;
finally
lServiceParamDialog.Free;
end;
end;
class function TDelphiAddInObj.DoMenuAction(const ActionID: Integer): Integer;
begin
try
Result := S_OK;
case ActionID of
1: ActionMenu_GenerateRegisterModelMappings;
2: ActionMenu_GeneratePreview;
3: ActionMenu_LoadMethods;
6: ActionMenu_CodeGenerator;
7: ActionMenu_XSDEditor;
8: ActionMenu_InsertUseCase;
9: ActionMenu_InsertClass;
10: ActionMenu_EditClass;
11: ActionMenu_EditUseCase;
12: ActionMenu_ElementDocumentation;
13: ActionMenu_UseCaseXSDsEditor;
14: ActionMenu_ConvertXSDsToUseCaseXSD;
15: ActionMenu_ExportDiagramClasses;
16: ActionMenu_ExportPackageClasses;
17: ActionMenu_ExportUseCases;
18: ActionMenu_OQLV2;
19: ActionMenu_CXOQLV2;
end;
except
on E: Exception do
begin
Application.MessageBox(PAnsiChar(e.Message), 'Staruml', MB_ICONERROR);
raise;
end;
end;
end;
class procedure TDelphiAddInObj.ActionMenu_GenerateRegisterModelMappings;
var lsResult: string;
lUtilitario: TUtil;
lProgress: TFShowProgress;
lsModelMappingsFileName, lsModelMappingsPath: string;
lModelMappingsOptionsForm: TModelMappingsGenerationOptions;
lModelMappingsOptions: TModelMappingsOptions;
lMetaModelGenOpt: TMetaModelGenerationOptions;
begin
lsModelMappingsFileName := '';
lsModelMappingsPath := '';
lMetaModelGenOpt.SilentMode := false;
lMetaModelGenOpt.CheckDBAttributeNameLength := true;
lMetaModelGenOpt.CheckDBTableNameLength := true;
/////////////////////////////////////////////////////////////////////////
{ lModelMappingsOptionsForm := TModelMappingsGenerationOptions.Create(nil);
try
if lModelMappingsOptionsForm.ShowModal = mrok then
begin
lsModelMappingsPath := lModelMappingsOptionsForm.dlbDirectory.Directory;
lsModelMappingsFileName := lModelMappingsOptionsForm.edtFileName.Text;
lModelMappingsOptions.IgnoreXSDSchema := lModelMappingsOptionsForm.ckbIgnoreXSD.Checked;
lModelMappingsOptions.FileName := IncludeTrailingBackslash(trim(lsModelMappingsPath)) + lsModelMappingsFileName;
if lModelMappingsOptionsForm.rdObjectPascal.Checked
then lModelMappingsOptions.TargetLanguage := 'O'
else if lModelMappingsOptionsForm.rdCSharp.Checked
then lModelMappingsOptions.TargetLanguage := 'C'
else lModelMappingsOptions.TargetLanguage := 'J';
end
else
lModelMappingsOptions.FileName := '';
finally
lModelMappingsOptionsForm.Free;
end;
}
lModelMappingsOptions.TargetLanguage := 'O';
lModelMappingsOptions.FileName := 'teste.pas';
if lModelMappingsOptions.FileName <> '' then
begin
lProgress := TFShowProgressForm.create('Creating Meta Model...');
try
lUtilitario := TUtil.Create;
try
if lModelMappingsOptions.TargetLanguage = 'O' then
begin
lsResult := lUtilitario.AlimentarMetamodel(lMetaModelGenOpt, lProgress);
lUtilitario.GerarUnitRegisterModelMappings(lModelMappingsOptions, lProgress);
end
else if lModelMappingsOptions.TargetLanguage = 'C' then
begin
lsResult := lUtilitario.AlimentarMetamodel(lMetaModelGenOpt, lProgress);
lUtilitario.GerarUnitRegisterModelMappings_CSharp(lModelMappingsOptions, lProgress);
end
else
begin
lsResult := lUtilitario.AlimentarMetamodel(lMetaModelGenOpt, lProgress);
lUtilitario.GerarUnitRegisterModelMappings_Java(lModelMappingsOptions, lProgress);
end;
finally
lUtilitario.Free;
end;
application.MessageBox(PAnsiChar('File ' + lModelMappingsOptions.FileName + ' was generated.'), 'Staruml', MB_OK + MB_ICONINFORMATION);
finally
lProgress.Free;
end;
end;
end;
class procedure TDelphiAddInObj.ActionMenu_LoadMethods;
var lsResult: string;
lUtilitario: TUtil;
lMetaModelGenOpt: TMetaModelGenerationOptions;
begin
lMetaModelGenOpt.SilentMode := false;
lMetaModelGenOpt.CheckDBAttributeNameLength := true;
lMetaModelGenOpt.CheckDBTableNameLength := true;
// lUtilitario := TUtil.Create(StarUMLApp);
// try
//// lsResult := lUtilitario.AlimentarMetamodel(StarUMLApp);
// if (MessageDlg('This option will overwrite class methods. Continue?', mtConfirmation, [mbYes, mbNo], 0) = mryes) then
// begin
// lsResult := lUtilitario.CarregaMetodo(StarUMLApp);
// Application.MessageBox(PAnsiChar(lsResult), 'Staruml');
// end;
// finally
// lUtilitario.free;
// end;
end;
class procedure TDelphiAddInObj.ActionMenu_InsertClass;
var lCadClasse: TCadastroClasse;
lConnString: string;
// lModel: IModel;
// lUMLPackageAux: IUMLPackage;
begin
//lCadClasse := nil;
//lConnString := GetServiceConnectionString;
//if lConnString <> '' then
//begin
// lModel := StarUMLApp.SelectionManager.GetSelectedModelAt(0);
// try
// if lModel.QueryInterface(IUMLPackage, lUMLPackageAux) = S_OK then
// begin
// lCadClasse := TCadastroClasse.Create(nil, lConnString);
// lCadClasse.FStarUMLAPP := StarUMLApp;
// lCadClasse.ClassPackage := lModel as IUMLPackage;
// end
// else
// begin
// lCadClasse := TCadastroClasse.Create(nil, lConnString);
// lCadClasse.FStarUMLAPP := StarUMLApp;
// end;
// if lCadClasse.ShowModal = mrok then
// StarUMLApp.SelectInModelExplorer(lCadClasse.UMLClass);
// finally
// if assigned(lCadClasse) then lCadClasse.Free;
// end;
//end;
end;
class procedure TDelphiAddInObj.ActionMenu_CodeGenerator;
var lUtilitario: TUtil;
lCodeGen: TCodeGen;
lMetaModelGenOpt: TMetaModelGenerationOptions;
begin
lMetaModelGenOpt.SilentMode := false;
lMetaModelGenOpt.CheckDBAttributeNameLength := true;
lMetaModelGenOpt.CheckDBTableNameLength := true;
lCodeGen := TCodeGen.Create(nil);
//Screen.Cursor := crHourGlass;
//try
// lUtilitario := TUtil.Create(StarUMLApp);
// try
// lUtilitario.AlimentarMetamodel(StarUMLApp, lMetaModelGenOpt, nil);
// lCodeGen.Util := lUtilitario;
// lCodeGen.ShowModal;
// finally
// lUtilitario.Free;
// end;
//finally
// Screen.Cursor := crDefault;
// lCodeGen.Free;
//end;
end;
class procedure TDelphiAddInObj.ActionMenu_ConvertXSDsToUseCaseXSD;
var lsResult: string;
lUtilitario: TUtil;
lProgress: TFShowProgress;
lsModelMappingsFileName, lsModelMappingsPath: string;
lModelMappingsOptions: TModelMappingsOptions;
lMetaModelGenOpt: TMetaModelGenerationOptions;
lFileStream: TFileStream;
lStringStream: TStringStream;
lOld, lNew: string;
begin
lsModelMappingsFileName := '';
lsModelMappingsPath := '';
lMetaModelGenOpt.SilentMode := false;
lMetaModelGenOpt.CheckDBAttributeNameLength := true;
lMetaModelGenOpt.CheckDBTableNameLength := true;
/////////////////////////////////////////////////////////////////////////
// lUtilitario := TUtil.Create(StarUMLApp);
try
if FileExists(IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP')) + 'ConexoTempModelMappingsOld.txt') then
if not DeleteFile(IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP')) + 'ConexoTempModelMappingsOld.txt') then
Raise Exception.Create('Could not delete file ' + IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP')) + 'ConexoTempModelMappingsOld.txt');
lsModelMappingsPath := IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP'));
lsModelMappingsFileName := 'ConexoTempModelMappingsOld.txt';
lModelMappingsOptions.IgnoreXSDSchema := false;
lModelMappingsOptions.FileName := IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP')) + 'ConexoTempModelMappingsOld.txt';
if lModelMappingsOptions.FileName <> '' then
begin
lProgress := TFShowProgressForm.create('Creating Meta Model...');
try
// lsResult := lUtilitario.AlimentarMetamodel(StarUMLApp, lMetaModelGenOpt,lProgress);
// lUtilitario.GerarUnitRegisterModelMappings(lModelMappingsOptions, lProgress);
finally
lProgress.Free;
end;
end;
finally
lUtilitario.Free;
end;
//lUtilitario := TUtil.Create(StarUMLApp);
//try
// lProgress := TFShowProgressForm.create('');
// try
// lUtilitario.ConvertXSDsToUseCaseXSD(lProgress);
// finally
// lProgress.Free;
// end;
//finally
// lUtilitario.Free;
//end;
// lUtilitario := TUtil.Create(StarUMLApp);
try
if FileExists(IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP')) + 'ConexoTempModelMappingsNew.txt') then
if not DeleteFile(IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP')) + 'ConexoTempModelMappingsNew.txt') then
Raise Exception.Create('Could not delete file ' + IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP')) + 'ConexoTempModelMappingsNew.txt');
lsModelMappingsPath := IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP'));
lsModelMappingsFileName := 'ConexoTempModelMappingsNew.txt';
lModelMappingsOptions.IgnoreXSDSchema := false;
lModelMappingsOptions.FileName := IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP')) + 'ConexoTempModelMappingsNew.txt';
if lModelMappingsOptions.FileName <> '' then
begin
lProgress := TFShowProgressForm.create('Creating Meta Model...');
try
// lsResult := lUtilitario.AlimentarMetamodel(StarUMLApp, lMetaModelGenOpt,lProgress);
// lUtilitario.GerarUnitRegisterModelMappings(lModelMappingsOptions, lProgress);
finally
lProgress.Free;
end;
end;
finally
lUtilitario.Free;
end;
lFileStream := TFileStream.Create(IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP')) + 'ConexoTempModelMappingsOld.txt', fmOpenRead);
try
lStringStream := TStringStream.Create('');
try
lStringStream.CopyFrom(lFileStream, 0);
lOld := lStringStream.DataString;
finally
lStringStream.free;
end;
finally
lFileStream.free;
end;
lFileStream := TFileStream.Create(IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP')) + 'ConexoTempModelMappingsNew.txt', fmOpenRead);
try
lStringStream := TStringStream.Create('');
try
lStringStream.CopyFrom(lFileStream, 0);
lNew := lStringStream.DataString;
finally
lStringStream.free;
end;
finally
lFileStream.free;
end;
if lNew = lOld then
begin
// Showmessage('Converso realizada com sucesso.');
end
else
// Showmessage('Erro ao realizar a converso.');
end;
class procedure TDelphiAddInObj.ActionMenu_CXOQLV2;
var
lOQLExplorer: TOQLExplorerV2;
begin
lOQLExplorer := TOQLExplorerV2.Create(nil);
lOQLExplorer.Show;
end;
class procedure TDelphiAddInObj.ActionMenu_EditClass;
var lCadClasse: TCadastroClasse;
lConnString: string;
// lModel: IModel;
// lUMLClassAux: IUMLClass;
begin
// lCadClasse := nil;
//lConnString := GetServiceConnectionString;
//if lConnString <> '' then
//begin
// lModel := StarUMLApp.SelectionManager.GetSelectedModelAt(0);
//
// if lModel.QueryInterface(IUMLClass, lUMLClassAux) = S_OK then
// begin
// lUMLClassAux := lModel as IUMLClass;
// try
// lCadClasse := TCadastroClasse.Create(nil, lConnString, lUMLClassAux);
// lCadClasse.FStarUMLAPP := StarUMLApp;
// if lCadClasse.ShowModal = mrok then
// StarUMLApp.SelectInModelExplorer(lCadClasse.UMLClass);
// finally
// if assigned(lCadClasse) then lCadClasse.Free;
// end;
// end
// else
// raise Exception.Create('This option is avaliable only for classes.');
//end;
end;
class procedure TDelphiAddInObj.ActionMenu_EditUseCase;
//var lCadCasoDeUso: TCadastroCasoDeUso;
// lConnString: string;
//
// lModel: IModel;
//
// lUMLUseCaseAux: IUMLUseCase;
begin
//lCadCasoDeUso := nil;
//lConnString := GetServiceConnectionString;
//if lConnString <> '' then
//begin
// lModel := StarUMLApp.SelectionManager.GetSelectedModelAt(0);
// try
// if lModel.QueryInterface(IUMLUsecase, lUMLUseCaseAux) = S_OK then
// begin
// lUMLUseCaseAux := lModel as IUMLUsecase;
// lCadCasoDeUso := TCadastroCasoDeUso.Create(nil, lConnString, lUMLUseCaseAux);
// lCadCasoDeUso.FStarUMLAPP := StarUMLApp;
// end
// else
// raise exception.Create('This option is only avaliable for Usecases.');
//
// if lCadCasoDeUso.ShowModal = mrok then
// StarUMLApp.SelectInModelExplorer(lCadCasoDeUso.GetUseCase);
// finally
// if assigned(lCadCasoDeUso) then lCadCasoDeUso.Free;
// end;
//end;
end;
class procedure TDelphiAddInObj.ActionMenu_GeneratePreview;
//var lPreview: TPreviewClassCode;
// lUtilitario: TUtil;
// lModel: IModel;
// lUMLClasAux: IUMLClass;
// lUMLAssociationAux: IUMLAssociation;
// lMetaModelGenOpt: TMetaModelGenerationOptions;
begin
// lMetaModelGenOpt.SilentMode := false;
// lMetaModelGenOpt.CheckDBAttributeNameLength := true;
// lMetaModelGenOpt.CheckDBTableNameLength := true;
//
// lUtilitario := TUtil.Create(StarUMLApp);
// try
// lModel := StarUMLApp.SelectionManager.GetSelectedModelAt(0);
// if lModel.QueryInterface(IUMLClass, lUMLClasAux) = S_OK then
// begin
// lUtilitario.AlimentarMetamodel(StarUMLApp, lMetaModelGenOpt, nil);
// lPreview := TPreviewClassCode.Create(nil);
// try
//// inserir preview para oracle
// lPreview.mem_ClassPascal.Lines.Text := lUtilitario.GerarClassPreview_Pascal(lModel as IUMLClass);
// lPreview.mem_ClassCSharp.Lines.Text := lUtilitario.GerarClassPreview_CSharp(lModel as IUMLClass);
// lPreview.mem_ClassJava.Lines.Text := lUtilitario.GerarClassPreview_Java(lModel as IUMLClass);
// lPreview.mem_ClassSQL.Lines.Text := lUtilitario.GerarSQLPreview(lModel);
// lPreview.mem_ClassOracle.Lines.Text := lUtilitario.GerarSQLPreview(lModel, dbvOracle);
// lPreview.ShowModal;
// finally
// FreeAndNil(lPreview);
// end;
// end
// else
// if lModel.QueryInterface(IUMLAssociation, lUMLAssociationAux) = S_OK then
// begin
// lUtilitario.AlimentarMetamodel(StarUMLApp, lMetaModelGenOpt, nil);
// lPreview := TPreviewClassCode.Create(nil);
// try
// lPreview.mem_ClassSQL.Lines.Text := lUtilitario.GerarSQLPreview(lModel);
// lPreview.mem_ClassOracle.Lines.Text := lUtilitario.GerarSQLPreview(lModel, dbvOracle);
// lPreview.ShowModal;
// finally
// FreeAndNil(lPreview);
// end;
// end
// else
// raise Exception.Create('This option is avaliable only for classes and associations between classes.');
// finally
// freeandnil(lUtilitario);
// end;
end;
class procedure TDelphiAddInObj.ActionMenu_OQLV2;
//var form: TDLLDialog;
begin
// form := TDLLDialog.Create(nil);
// form.show;
if not assigned(ExplorerV2) then
begin
Application.CreateForm(TExplorerV2, ExplorerV2);
end;
ExplorerV2.Show;
end;
class procedure TDelphiAddInObj.ActionMenu_ExportDiagramClasses;
var
lEnum : Integer;
listaStrings : TStringList;
listaObjetos : TInterfaceList;
// lClass: IUMLClass;
lForm : TExportUnits;
begin
//listaStrings := TStringList.Create;
//listaObjetos := TInterfaceList.Create;
//try
// for lEnum := 0 to StarUMLApp.SelectionManager.GetSelectedViewCount - 1 do
// begin
// if StarUMLApp.SelectionManager.GetSelectedViewAt(lenum).Model.QueryInterface(IUMLClass, lClass) = S_OK then
// begin
// listaObjetos.Add(lClass);
// listaStrings.Add(lClass.Pathname );
// end;
// end;
//
// lForm := TExportUnits.Create(nil);
// lForm.Position := poScreenCenter;
// Screen.Cursor := crHourGlass;
// try
// for lEnum := 0 to listaStrings.Count - 1 do
// begin
// lForm.lstUsecases.AddItem(listaStrings.Strings[lEnum],nil );
// end;
// lForm.lstUsecases.SelectAll;
// lForm.ShowModal;
// finally
// Screen.Cursor := crDefault;
// lForm.Free;
// end;
//
// finally
// listaStrings.Free;
// listaObjetos.Free;
//end;
end;
class procedure TDelphiAddInObj.ActionMenu_UseCaseXSDsEditor;
var lXSDExplorer: TXSDExplorer;
begin
// lModel := StarUMLApp.SelectionManager.GetSelectedModelAt(0);
//if lModel.GetMetaClass.IsKindOf('UMLUseCase') then
//begin
// lXSDExplorer := TXSDExplorer.Create(nil, StarUMLApp, lModel as IUMLUseCase);
// try
// lXSDExplorer.ShowModal;
// finally
// lXSDExplorer.free;
// end;
//end;
end;
class procedure TDelphiAddInObj.ActionMenu_ElementDocumentation;
//var lModel: IModel;
// lRTFEditor: TRTFEditor;
begin
//lRTFEditor := nil;
//lModel := GetSelectedModel;
//if assigned(lModel) then
//begin
// try
// lRTFEditor := TRTFEditor.Create(nil);
// lRTFEditor.DocWithRTFInformation := lModel.Documentation;
// lRTFEditor.Caption := lModel.Pathname;
// if lRTFEditor.ShowModal = mrok then
// lModel.Documentation := lRTFEditor.DocWithRTFInformation;
// finally
// lRTFEditor.free;
// end;
//end
//else
// raise exception.Create('This option is only avaliable for Usecases.');
end;
class procedure TDelphiAddInObj.ActionMenu_ExportPackageClasses;
//var
// listaStrings : TStringList;
// listaObjetos : TInterfaceList;
// lPackage : IUMLPackage;
// lForm : TExportUnits;
// lEnum : Integer;
begin
//if StarUMLApp.SelectionManager.GetSelectedModelAt(0).QueryInterface(IUMLPackage, lPackage) = S_OK then
//begin
// listaStrings := TStringList.Create;
// listaObjetos := TInterfaceList.Create;
// try
// ListOwnedClasses(lPackage,listaObjetos,listaStrings);
//
// lForm := TExportUnits.Create(nil);
// lForm.Position := poScreenCenter;
// Screen.Cursor := crHourGlass;
// try
// for lEnum := 0 to listaStrings.Count - 1 do
// begin
// lForm.lstUsecases.AddItem(listaStrings.Strings[lEnum],nil );
// end;
// lForm.lstUsecases.SelectAll;
// lForm.ShowModal;
// finally
// Screen.Cursor := crDefault;
// lForm.Free;
// end;
//
// finally
// listaStrings.Free;
// listaObjetos.Free;
// end;
//end;
end;
class procedure TDelphiAddInObj.ActionMenu_ExportUseCases;
//var
// listaStrings : TStringList;
// listaObjetos : TInterfaceList;
// lPackage : IUMLPackage;
// lUseCase: IUMLUseCase;
// lForm : TExportUnits;
// lEnum : Integer;
begin
//listaStrings := TStringList.Create;
//listaObjetos := TInterfaceList.Create;
//try
// if StarUMLApp.SelectionManager.GetSelectedModelAt(0).QueryInterface(IUMLPackage, lPackage) = S_OK then
// begin
// ListOwnedUseCases(lPackage,listaObjetos,listaStrings);
// end
// else
// begin
// if StarUMLApp.SelectionManager.GetSelectedModelAt(0).QueryInterface(IUMLUseCase, lUseCase) = S_OK then
// begin
// listaObjetos.Add(lUseCase);
// listaStrings.Add(lUseCase.Pathname );
// end;
// end;
//
// lForm := TExportUnits.Create(nil);
// lForm.Position := poScreenCenter;
// Screen.Cursor := crHourGlass;
// try
// for lEnum := 0 to listaStrings.Count - 1 do
// begin
// lForm.lstUsecases.AddItem(listaStrings.Strings[lEnum],nil );
// end;
// lForm.lstUsecases.SelectAll;
// lForm.ShowModal;
// finally
// Screen.Cursor := crDefault;
// lForm.Free;
// end;
//
//finally
// listaStrings.Free;
// listaObjetos.Free;
//end;
end;
class procedure TDelphiAddInObj.ActionMenu_InsertUseCase;
//var lCadCasoDeUso: TCadastroCasoDeUso;
// lConnString: string;
//
// lModel: IModel;
//
// lUMLPackageAux: IUMLPackage;
begin
//lCadCasoDeUso := nil;
//lConnString := GetServiceConnectionString;
//if lConnString <> '' then
//begin
// lModel := StarUMLApp.SelectionManager.GetSelectedModelAt(0);
// try
// if lModel.QueryInterface(IUMLPackage, lUMLPackageAux) = S_OK then
// begin
// lCadCasoDeUso := TCadastroCasoDeUso.Create(nil, lConnString);
// lCadCasoDeUso.FStarUMLAPP := StarUMLApp;
// lCadCasoDeUso.UseCasePackage := lModel as IUMLPackage;
// end
// else
// begin
// lCadCasoDeUso := TCadastroCasoDeUso.Create(nil, lConnString);
// lCadCasoDeUso.FStarUMLAPP := StarUMLApp;
// end;
//
// if lCadCasoDeUso.ShowModal = mrok then
// StarUMLApp.SelectInModelExplorer(lCadCasoDeUso.GetUseCase);
// finally
// if assigned(lCadCasoDeUso) then lCadCasoDeUso.Free;
// end;
//end;
end;
class procedure TDelphiAddInObj.ActionMenu_XSDEditor;
//var
// lModel: IModel;
// lUMLTransitionAux: IUMLTransition;
// lXSDEditor: TXSDEdit;
begin
//lModel := StarUMLApp.SelectionManager.GetSelectedModelAt(0);
//if lModel.QueryInterface(IUMLTransition, lUMLTransitionAux) = S_OK then
//begin
// lXSDEditor := TXSDEdit.Create(nil);
// try
// lXSDEditor.StarUMLAPP := self.StarUMLApp;
// lXSDEditor.Transition := lModel as IUMLTransition;
// lXSDEditor.ShowModal;
// except
// FreeAndNil(lXSDEditor);
// end;
//end
//else
// raise Exception.Create('This option is avaliable only for transitions.');
//
end;
// TDelphiAddInObj
////////////////////////////////////////////////////////////////////////////////
end.
(*
* InstantObjects
* Classes
*)
(* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is: Seleqt InstantObjects
*
* The Initial Developer of the Original Code is: Seleqt
*
* Portions created by the Initial Developer are Copyright (C) 2001-2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Carlo Barazzetta, Adrea Petrelli, Marco Cantù, Nando Dessena, Uberto Barbini,
* Riceball Lee
*
* ***** END LICENSE BLOCK ***** *)
unit InstantClasses;
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
{$IFDEF LINUX}
{$I 'InstantDefines.inc'}
{$ELSE}
{$I 'InstantDefines.inc'}
{$ENDIF}
interface
uses {$IFDEF MSWINDOWS}Windows,{$ENDIF}
{$IFDEF FPC}
streamex,
{$ENDIF}
Classes, SysUtils;
const
InstantBufferSize = 4096;
type
TChars = set of Char;
{$IFDEF LINUX}
TDate = type TDateTime;
TTime = type TDateTime;
{$ENDIF}
EInstantError = class(Exception)
private
FOriginalException: TObject;
procedure Initialize(E: TObject);
public
constructor CreateRes(ResStringRec: PResStringRec; E: TObject = nil);
constructor CreateResFmt(ResStringRec: PResStringRec;
const Args: array of const; E: TObject = nil);
constructor Create(const Msg: string; E: TObject = nil);
constructor CreateFmt(const Msg: string;
const Args: array of const; E: TObject = nil);
destructor Destroy; override;
property OriginalException: TObject read FOriginalException;
end;
{$IFDEF FPC}
TAbstractWriter = class(TDelphiWriter);
{$ELSE}
TAbstractWriter = class(TWriter);
{$ENDIF}
{$IFDEF FPC}
TAbstractReader = class(TDelphiReader);
{$ELSE}
TAbstractReader = class(TReader);
{$ENDIF}
TInstantReader = class;
TInstantWriter = class;
TInstantProcessObjectEvent = procedure(Sender: TObject; AObject: TPersistent) of object;
TInstantTextToBinaryConverter = class;
TInstantBinaryToTextConverter = class;
TInstantStreamableClass = class of TInstantStreamable;
TInstantStreamable = class(TPersistent)
protected
class procedure ConvertToBinary(Converter: TInstantTextToBinaryConverter); virtual;
class procedure ConvertToText(Converter: TInstantBinaryToTextConverter); virtual;
class function CreateInstance(Arg: Pointer = nil): TInstantStreamable; virtual;
procedure ReadObject(Reader: TInstantReader); virtual;
procedure WriteObject(Writer: TInstantWriter); virtual;
public
procedure Assign(Source: TPersistent); override;
procedure LoadFromStream(Stream: TStream;
ProcessEvent: TInstantProcessObjectEvent = nil);
procedure SaveToStream(Stream: TStream;
ProcessEvent: TInstantProcessObjectEvent = nil);
end;
TInstantNamedList = class(TList)
protected
function GetName: string; virtual;
procedure SetName(const Name: string); virtual;
public
property Name: string read GetName write SetName;
end;
TInstantCollectionItemClass = class of TInstantCollectionItem;
TInstantCollectionItem = class(TCollectionItem)
private
FName: string;
protected
class procedure ConvertToBinary(Converter: TInstantTextToBinaryConverter); virtual;
class procedure ConvertToText(Converter: TInstantBinaryToTextConverter); virtual;
class function CreateInstance(Arg: Pointer = nil): TInstantCollectionItem; virtual;
function GetDisplayName: string; override;
function GetName: string; virtual;
procedure ReadObject(Reader: TInstantReader); virtual;
procedure SetDisplayName(const Value: string); override;
procedure SetName(const Value: string); virtual;
procedure WriteObject(Writer: TInstantWriter); virtual;
public
procedure Assign(Source: TPersistent); override;
published
property Name: string read GetName write SetName;
end;
TInstantCollectionClass = class of TInstantCollection;
TInstantCollection = class(TCollection)
protected
class procedure ConvertToBinary(Converter: TInstantTextToBinaryConverter); virtual;
class procedure ConvertToText(Converter: TInstantBinaryToTextConverter); virtual;
class function CreateInstance(Arg: Pointer = nil): TInstantCollection; virtual;
procedure ReadObject(Reader: TInstantReader); virtual;
procedure WriteObject(Writer: TInstantWriter); virtual;
public
constructor Create(ItemClass: TInstantCollectionItemClass);
function Find(const AName: string): TInstantCollectionItem;
function Remove(Item: TInstantCollectionItem): Integer;
procedure GetItemNames(List: TStrings);
function IndexOf(const AName: string): Integer; overload;
function IndexOf(Item: TInstantCollectionItem): Integer; overload;
end;
TInstantOwnedCollection = class(TInstantCollection)
private
FOwner: TPersistent;
protected
function GetOwner: TPersistent; override;
public
constructor Create(AOwner: TPersistent; ItemClass: TInstantCollectionItemClass);
procedure Assign(Source: TPersistent); override;
function Owner: TPersistent;
end;
TInstantReader = class(TAbstractReader)
private
FStream: TStream;
protected
procedure SkipBytes(Count: Integer);
procedure ProcessObject(AObject: TPersistent);
public
constructor Create(Stream: TStream; BufSize: Integer = InstantBufferSize);
procedure ReadBinary(ReadData: TStreamProc);
function ReadCharSet: TChars;
function ReadObject(AObject: TPersistent = nil;
Arg: Pointer = nil): TPersistent; virtual;
procedure ReadProperties(AObject: TPersistent);
procedure SkipValue;
property Stream: TStream read FStream;
end;
TInstantWriter = class(TAbstractWriter)
private
FStream: TStream;
protected
procedure ProcessObject(AObject: TPersistent);
public
constructor Create(Stream: TStream; BufSize: Integer = InstantBufferSize);
procedure WriteBinary(WriteData: TStreamProc);
procedure WriteCharSet(CharSet: TChars);
procedure WriteObject(AObject: TPersistent); virtual;
procedure WriteProperties(AObject: TPersistent);
procedure WriteString(const Value: string);
procedure WriteValue(Value: TValueType);
property Stream: TStream read FStream;
end;
TInstantStream = class(TStream)
private
FFreeSource: Boolean;
FSource: TStream;
FOnProcessObject: TInstantProcessObjectEvent;
function GetSource: TStream;
procedure SetSource(Value: TStream);
protected
procedure DoProcessObject(AObject: TPersistent); virtual;
procedure SetSize(Value: Integer); override;
public
constructor Create(ASource: TStream = nil; AFreeSource: Boolean = False);
destructor Destroy; override;
procedure AlignStream;
function Read(var Buffer; Count: Integer): Integer; override;
function ReadObject(AObject: TPersistent = nil; Arg: Pointer = nil): TPersistent;
function ReadObjectRes(AObject: TPersistent = nil; Arg: Pointer = nil): TPersistent;
procedure ReadResHeader;
procedure ReadResourceFileHeader;
function Seek(Offset: Integer; Origin: Word): Integer; override;
function Write(const Buffer; Count: Integer): Integer; override;
procedure WriteObject(AObject: TPersistent);
procedure WriteObjectRes(const ResName: string; AObject: TPersistent);
procedure WriteResourceFileHeader;
procedure WriteResourceHeader(const ResName: string;
DataSize: Cardinal);
property FreeSource: Boolean read FFreeSource write FFreeSource;
property Source: TStream read GetSource write SetSource;
property OnProcessObject: TInstantProcessObjectEvent read FOnProcessObject write FOnProcessObject;
end;
TInstantResourceStream = class(TInstantStream)
public
constructor Create(Instance: THandle; const ResName: string; ResType: PChar);
constructor CreateFromId(Instance: THandle; ResID: Integer; ResType: PChar);
end;
TInstantFileStream = class(TInstantStream)
public
constructor Create(const FileName: string; Mode: Word);
end;
TInstantStringStream = class(TInstantStream)
private
function GetDataString: string;
public
constructor Create(AString: string);
property DataString: string read GetDataString;
end;
TInstantXMLProducer = class(TObject)
private
FStream: TStream;
FTagStack: TStringList;
FWriter: TAbstractWriter;
function GetCurrentTag: string;
function GetEof: Boolean;
function GetPosition: Integer;
function GetTagStack: TStringList;
function GetWriter: TAbstractWriter;
procedure SetPosition(Value: Integer);
procedure WriteString(const S: string);
protected
property TagStack: TStringList read GetTagStack;
property Writer: TAbstractWriter read GetWriter;
public
constructor Create(Stream: TStream);
destructor Destroy; override;
procedure WriteEscapedData(const Data: string);
procedure WriteData(const Data: string);
procedure WriteEndTag;
procedure WriteStartTag(const Tag: string);
property CurrentTag: string read GetCurrentTag;
property Eof: Boolean read GetEof;
property Position: Integer read GetPosition write SetPosition;
property Stream: TStream read FStream;
end;
TInstantXMLToken = (xtTag, xtData);
TInstantXMLProcessor = class(TObject)
private
FReader: TAbstractReader;
FStream: TStream;
function GetEof: Boolean;
function GetPosition: Integer;
function GetReader: TAbstractReader;
function GetToken: TInstantXMLToken;
function ReadEscapedChar: Char;
procedure SetPosition(const Value: Integer);
protected
procedure CheckToken(AToken: TInstantXMLToken);
function PeekChar: Char;
function ReadChar: Char;
procedure SkipBlanks;
property Reader: TAbstractReader read GetReader;
public
constructor Create(Stream: TStream);
destructor Destroy; override;
function PeekTag: string;
function PeekTagName: string;
procedure ReadData(Stream: TStream); overload;
function ReadData: string; overload;
function ReadTag: string;
function ReadTagName: string;
procedure Skip;
property Eof: Boolean read GetEof;
property Position: Integer read GetPosition write SetPosition;
property Stream: TStream read FStream;
property Token: TInstantXMLToken read GetToken;
end;
TInstantConverter = class(TObject)
private
FObjectClassList: TList;
function GetObjectClassName: string;
function GetObjectClass: TClass;
function GetObjectClassList: TList;
protected
function GetInput: TStream; virtual; abstract;
function GetOutput: TStream; virtual; abstract;
procedure InternalConvert; virtual; abstract;
procedure InternalConvertProperties; virtual; abstract;
procedure PopObjectClass;
procedure PushObjectClass(AObjectClass: TClass);
property Input: TStream read GetInput;
property Output: TStream read GetOutput;
property ObjectClassList: TList read GetObjectClassList;
public
destructor Destroy; override;
procedure Convert;
procedure ConvertProperties;
property ObjectClass: TClass read GetObjectClass;
property ObjectClassName: string read GetObjectClassName;
end;
TInstantBinaryToTextConverter = class(TInstantConverter)
private
FProducer: TInstantXMLProducer;
FReader: TInstantReader;
protected
function GetInput: TStream; override;
function GetOutput: TStream; override;
procedure InternalConvert; override;
procedure InternalConvertProperties; override;
public
constructor Create(Input, Output: TStream);
destructor Destroy; override;
property Producer: TInstantXMLProducer read FProducer;
property Reader: TInstantReader read FReader;
end;
TInstantTextToBinaryConverter = class(TInstantConverter)
private
FProcessor: TInstantXMLProcessor;
FWriter: TInstantWriter;
protected
function GetInput: TStream; override;
function GetOutput: TStream; override;
procedure InternalConvert; override;
procedure InternalConvertProperties; override;
public
constructor Create(Input, Output: TStream);
destructor Destroy; override;
property Processor: TInstantXMLProcessor read FProcessor;
property Writer: TInstantWriter read FWriter;
end;
EInstantStreamError = class(EInstantError)
end;
EInstantValidationError = class(EInstantError)
end;
EInstantRangeError = class(EInstantError)
end;
EInstantConversionError = class(EInstantError)
end;
TInstantStreamFormat = (sfBinary, sfXML);
const
AInstantStreamFormatStr : Array[TInstantStreamFormat] of string =
('Binary format',
'XML format');
{$IFDEF D5}
sLineBreak = #13#10;
{$ENDIF}
procedure InstantObjectBinaryToText(Input, Output: TStream);
procedure InstantObjectTextToBinary(Input, Output: TStream);
function InstantReadObject(Stream: TStream; Format: TInstantStreamFormat;
AObject: TPersistent = nil): TPersistent;
function InstantReadObjectFromStream(Stream: TStream;
AObject: TPersistent = nil; ProcessEvent: TInstantProcessObjectEvent = nil;
Arg: Pointer = nil): TPersistent;
procedure InstantReadObjects(Stream: TStream; Format: TInstantStreamFormat; Objects: TList);
procedure InstantWriteObject(Stream: TStream; Format: TInstantStreamFormat; AObject: TPersistent);
procedure InstantWriteObjectToStream(Stream: TStream; AObject: TPersistent;
ProcessEvent: TInstantProcessObjectEvent = nil);
procedure InstantWriteObjects(Stream: TStream; Format: TInstantStreamFormat; Objects: TList);
implementation
uses
TypInfo;
const
ResourceHeader : packed array[0..31] of Byte = ($00,$00,$00,$00,$20,$00,$00,
$00,$FF,$FF,$00,$00,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00);
type
PRaiseFrame = ^TRaiseFrame;
TRaiseFrame = record
NextRaise: PRaiseFrame;
ExceptAddr: Pointer;
ExceptObject: TObject;
{$IFDEF MSWINDOWS}
ExceptionRecord: PExceptionRecord {$IFNDEF VER130}platform{$ENDIF};
{$ENDIF}
{$IFDEF LINUX}
ExceptionAddress: LongWord platform;
AccessAddress: LongWord platform;
SignalNumber: Integer platform;
Exc: Pointer platform;
Private_2: LongWord platform;
{$ENDIF}
end;
{ Global routines }
procedure InstantObjectBinaryToText(Input, Output: TStream);
begin
with TInstantBinaryToTextConverter.Create(Input, Output) do
try
Convert;
finally
Free;
end;
end;
procedure InstantObjectTextToBinary(Input, Output: TStream);
begin
with TInstantTextToBinaryConverter.Create(Input, Output) do
try
Convert;
finally
Free;
end;
end;
function InstantReadObject(Stream: TStream; Format: TInstantStreamFormat;
AObject: TPersistent = nil): TPersistent;
var
MemoryStream: TMemoryStream;
begin
if Format = sfBinary then
Result := InstantReadObjectFromStream(Stream, AObject)
else begin
MemoryStream := TMemoryStream.Create;
try
InstantObjectTextToBinary(Stream, MemoryStream);
MemoryStream.Position := 0;
Result := InstantReadObjectFromStream(MemoryStream, AObject);
finally
MemoryStream.Free;
end;
end;
end;
function InstantReadObjectFromStream(Stream: TStream;
AObject: TPersistent; ProcessEvent: TInstantProcessObjectEvent;
Arg: Pointer): TPersistent;
begin
if Stream is TInstantStream then
with TInstantStream(Stream) do
begin
OnProcessObject := ProcessEvent;
Result := ReadObject(AObject, Arg)
end
else if Assigned(Stream) then
with TInstantStream.Create(Stream) do
try
OnProcessObject := ProcessEvent;
Result := ReadObject(AObject, Arg);
finally
Free;
end
else
Result := nil;
end;
procedure InstantReadObjects(Stream: TStream; Format: TInstantStreamFormat; Objects: TList);
begin
if Assigned(Stream) and Assigned(Objects) then
while Stream.Position < Stream.Size do
Objects.Add(InstantReadObject(Stream, Format));
end;
procedure InstantWriteObject(Stream: TStream; Format: TInstantStreamFormat; AObject: TPersistent);
var
MemoryStream: TMemoryStream;
begin
if Format = sfBinary then
InstantWriteObjectToStream(Stream, AObject)
else begin
MemoryStream := TMemoryStream.Create;
try
InstantWriteObjectToStream(MemoryStream, AObject);
MemoryStream.Position := 0;
InstantObjectBinaryToText(MemoryStream, Stream);
finally
MemoryStream.Free;
end;
end;
end;
procedure InstantWriteObjectToStream(Stream: TStream;
AObject: TPersistent; ProcessEvent: TInstantProcessObjectEvent);
begin
if Stream is TInstantStream then
with TInstantStream(Stream) do
begin
OnProcessObject := ProcessEvent;
WriteObject(AObject)
end
else if Assigned(Stream) then
with TInstantStream.Create(Stream) do
try
OnProcessObject := ProcessEvent;
WriteObject(AObject);
finally
Free;
end
end;
procedure InstantWriteObjects(Stream: TStream; Format: TInstantStreamFormat; Objects: TList);
var
I: Integer;
begin
if Assigned(Stream) and Assigned(Objects) then
for I := 0 to Pred(Objects.Count) do
InstantWriteObject(Stream, Format, Objects[I]);
end;
{ EInstantError }
constructor EInstantError.Create(const Msg: string; E: TObject);
begin
inherited Create(Msg);
Initialize(E);
end;
constructor EInstantError.CreateFmt(const Msg: string;
const Args: array of const; E: TObject);
begin
inherited CreateFmt(Msg, Args);
Initialize(E);
end;
constructor EInstantError.CreateRes(ResStringRec: PResStringRec;
E: TObject);
begin
inherited CreateRes(ResStringRec);
Initialize(E);
end;
constructor EInstantError.CreateResFmt(ResStringRec: PResStringRec;
const Args: array of const; E: TObject);
begin
inherited CreateResFmt(ResStringRec, Args);
Initialize(E);
end;
destructor EInstantError.Destroy;
begin
FreeAndNil(FOriginalException);
inherited;
end;
procedure EInstantError.Initialize(E: TObject);
begin
{$IFDEF D6+}
if ((ExceptObject <> nil) and (ExceptObject = E)) then
FOriginalException := AcquireExceptionObject;
{$ELSE}
if Assigned(E) and (RaiseList <> nil) and
(PRaiseFrame(RaiseList)^.ExceptObject = E) then
begin
PRaiseFrame(RaiseList)^.ExceptObject := nil;
FOriginalException := E;
end;
{$ENDIF}
end;
{ TInstantStreamable }
procedure TInstantStreamable.Assign(Source: TPersistent);
begin
if not (Source is TInstantStreamable) then
inherited;
end;
class procedure TInstantStreamable.ConvertToBinary(
Converter: TInstantTextToBinaryConverter);
begin
end;
class procedure TInstantStreamable.ConvertToText(
Converter: TInstantBinaryToTextConverter);
begin
end;
class function TInstantStreamable.CreateInstance(
Arg: Pointer): TInstantStreamable;
begin
Result := Create;
end;
procedure TInstantStreamable.LoadFromStream(Stream: TStream;
ProcessEvent: TInstantProcessObjectEvent);
begin
if Assigned(Stream) then
InstantReadObjectFromStream(Stream, Self, ProcessEvent);
end;
procedure TInstantStreamable.ReadObject(Reader: TInstantReader);
begin
end;
procedure TInstantStreamable.SaveToStream(Stream: TStream;
ProcessEvent: TInstantProcessObjectEvent);
begin
if Assigned(Stream) then
InstantWriteObjectToStream(Stream, Self, ProcessEvent);
end;
procedure TInstantStreamable.WriteObject(Writer: TInstantWriter);
begin
end;
{ TInstantNamedList }
function TInstantNamedList.GetName: string;
begin
Result := '';
end;
procedure TInstantNamedList.SetName(const Name: string);
begin
end;
{ TInstantCollectionItem }
procedure TInstantCollectionItem.Assign(Source: TPersistent);
begin
if Source is TInstantCollectionItem then
Name := TInstantCollectionItem(Source).Name
else
inherited;
end;
class procedure TInstantCollectionItem.ConvertToBinary(
Converter: TInstantTextToBinaryConverter);
begin
Converter.ConvertProperties;
end;
class procedure TInstantCollectionItem.ConvertToText(
Converter: TInstantBinaryToTextConverter);
begin
Converter.ConvertProperties;
end;
class function TInstantCollectionItem.CreateInstance(
Arg: Pointer): TInstantCollectionItem;
begin
if Assigned(Arg) then
Result := Create(TInstantCollection(Arg))
else
Result := Create(nil)
end;
function TInstantCollectionItem.GetDisplayName: string;
begin
Result := Name
end;
function TInstantCollectionItem.GetName: string;
begin
Result := FName;
end;
procedure TInstantCollectionItem.ReadObject(Reader: TInstantReader);
begin
Reader.ReadProperties(Self);
end;
procedure TInstantCollectionItem.SetDisplayName(const Value: string);
begin
Name := Value;
inherited;
end;
procedure TInstantCollectionItem.SetName(const Value: string);
begin
FName := Value;
end;
procedure TInstantCollectionItem.WriteObject(Writer: TInstantWriter);
begin
Writer.WriteProperties(Self);
end;
{ TInstantCollection }
class procedure TInstantCollection.ConvertToBinary(Converter: TInstantTextToBinaryConverter);
var
ObjectEnd: string;
begin
with Converter do
begin
ObjectEnd := '<' + ObjectClassName + '>';
while not SameText(Processor.PeekTag, ObjectEnd) do
Convert;
Writer.WriteListEnd;
end;
end;
class procedure TInstantCollection.ConvertToText(Converter: TInstantBinaryToTextConverter);
begin
with Converter do
begin
while not Reader.EndOfList do
Convert;
Reader.ReadListEnd;
end;
end;
constructor TInstantCollection.Create(ItemClass: TInstantCollectionItemClass);
begin
inherited Create(ItemClass)
end;
class function TInstantCollection.CreateInstance(
Arg: Pointer): TInstantCollection;
begin
if Assigned(Arg) then
Result := Create(TInstantCollectionItemClass(Arg))
else
Result := Create(TInstantCollectionItem);
end;
function TInstantCollection.Find(const AName: string): TInstantCollectionItem;
var
I: Integer;
begin
I := IndexOf(AName);
if I = -1 then
Result := nil
else
Result := TInstantCollectionItem(Items[I]);
end;
procedure TInstantCollection.GetItemNames(List: TStrings);
var
I: Integer;
begin
List.BeginUpdate;
try
List.Clear;
for I := 0 to Pred(Count) do
with TInstantCollectionItem(Items[I]) do
if Name <> '' then List.Add(Name);
finally
List.EndUpdate;
end;
end;
function TInstantCollection.IndexOf(const AName: string): Integer;
begin
for Result := 0 to Pred(Count) do
if SameText(TInstantCollectionItem(Items[Result]).Name, AName) then
Exit;
Result := -1;
end;
function TInstantCollection.IndexOf(Item: TInstantCollectionItem): Integer;
begin
if Assigned(Item) and (Item.Collection = Self) then
Result := Item.Index
else
Result := -1;
end;
procedure TInstantCollection.ReadObject(Reader: TInstantReader);
begin
Clear;
with Reader do
begin
while not EndOfList do
ReadObject(nil, Self);
ReadListEnd;
end;
end;
function TInstantCollection.Remove(Item: TInstantCollectionItem): Integer;
begin
Result := IndexOf(Item);
if Result <> -1 then
Delete(Result);
end;
procedure TInstantCollection.WriteObject(Writer: TInstantWriter);
var
I: Integer;
begin
for I := 0 to Pred(Count) do
Writer.WriteObject(Items[I]);
Writer.WriteListEnd;
end;
{ TInstantOwnedCollection }
procedure TInstantOwnedCollection.Assign(Source: TPersistent);
begin
inherited;
if Source is TInstantOwnedCollection then
FOwner := TInstantOwnedCollection(Source).FOwner;
end;
constructor TInstantOwnedCollection.Create(AOwner: TPersistent;
ItemClass: TInstantCollectionItemClass);
begin
inherited Create(ItemClass);
FOwner := AOwner;
end;
function TInstantOwnedCollection.GetOwner: TPersistent;
begin
Result := FOwner;
end;
function TInstantOwnedCollection.Owner: TPersistent;
begin
Result := GetOwner;
end;
{ TInstantReader }
constructor TInstantReader.Create(Stream: TStream; BufSize: Integer);
begin
inherited Create(Stream, BufSize);
FStream := Stream;
end;
procedure TInstantReader.ProcessObject(AObject: TPersistent);
begin
if Stream is TInstantStream then
TInstantStream(Stream).DoProcessObject(AObject);
end;
procedure TInstantReader.ReadBinary(ReadData: TStreamProc);
var
Count: Integer;
Stream: TMemoryStream;
begin
if ReadValue <> vaBinary then
begin
Position := Position - 1;
SkipValue;
raise EReadError.Create('Invalid property value');
end;
Stream := TMemoryStream.Create;
try
Read(Count, SizeOf(Count));
Stream.SetSize(Count);
Read(Stream.Memory^, Count);
ReadData(Stream);
finally
Stream.Free;
end;
end;
function TInstantReader.ReadCharSet: TChars;
const
Dots: array[0..1] of Char = '..';
var
I, J: Integer;
lStr: string;
begin
Result := [];
I := 1;
while I <= Length(ReadStr) do
begin
lStr := ReadStr;
if CompareMem(@(lStr[I]), @Dots, Length(Dots)) and
(I > 1) and (Length(ReadStr) > I + 1) then
begin
for J := Ord(ReadStr[I - 1]) to Ord(ReadStr[I + 2]) do
Include(Result, Chr(J));
Inc(I, Length(Dots));
end
else
begin
Include(Result, ReadStr[I]);
Inc(I);
end;
end;
end;
function TInstantReader.ReadObject(AObject: TPersistent;
Arg: Pointer): TPersistent;
function CreateObject(ObjectClass: TPersistentClass): TPersistent;
begin
if ObjectClass.InheritsFrom(TInstantStreamable) then
Result := TInstantStreamableClass(ObjectClass).CreateInstance(Arg)
else if ObjectClass.InheritsFrom(TInstantCollection) then
Result := TInstantCollectionClass(ObjectClass).CreateInstance(Arg)
else if ObjectClass.InheritsFrom(TInstantCollectionItem) then
Result := TInstantCollectionItemClass(ObjectClass).CreateInstance(Arg)
else
raise EInstantStreamError.CreateFmt('Class %s not streamable: ',
[ObjectClass.ClassName]);
end;
var
ObjectClassName: string;
ObjectClass: TPersistentClass;
begin
ObjectClassName := ReadStr;
ObjectClass := FindClass(ObjectClassName);
if Assigned(AObject) then
if ObjectClass.InheritsFrom(AObject.ClassType) then
Result := AObject
else
raise EInstantStreamError.CreateFmt('Unexpected class %s. Expected class %s',
[ObjectClassName, AObject.ClassName])
else
Result := CreateObject(ObjectClass);
if Result is TInstantStreamable then
TInstantStreamable(Result).ReadObject(Self)
else if Result is TInstantCollection then
TInstantCollection(Result).ReadObject(Self)
else if Result is TInstantCollectionItem then
TInstantCollectionItem(Result).ReadObject(Self);
ReadListEnd;
ProcessObject(Result);
end;
procedure TInstantReader.ReadProperties(AObject: TPersistent);
begin
while not EndOfList do
ReadProperty(AObject);
ReadListEnd;
end;
procedure TInstantReader.SkipBytes(Count: Integer);
var
Bytes: array[0..255] of Char;
begin
while Count > 0 do
if Count > SizeOf(Bytes) then
begin
Read(Bytes, SizeOf(Bytes));
Dec(Count, SizeOf(Bytes));
end else
begin
Read(Bytes, Count);
Count := 0;
end;
end;
procedure TInstantReader.SkipValue;
begin
inherited;
end;
{ TInstantWriter }
constructor TInstantWriter.Create(Stream: TStream; BufSize: Integer);
begin
inherited Create(Stream, BufSize);
FStream := Stream;
end;
procedure TInstantWriter.ProcessObject(AObject: TPersistent);
begin
if Stream is TInstantStream then
TInstantStream(Stream).DoProcessObject(AObject);
end;
procedure TInstantWriter.WriteBinary(WriteData: TStreamProc);
begin
inherited WriteBinary(WriteData);
end;
procedure TInstantWriter.WriteCharSet(CharSet: TChars);
var
I, J, L: Integer;
S, Result: string;
begin
Result := '';
for I := 0 to 255 do
if Chr(I) in CharSet then
S := S + Chr(I);
I := 1;
L := Length(S);
Result := '';
while I <= L do
begin
J := 1;
Result := Result + S[I];
while ((I + J) <= L) and (Ord(S[I]) + J = Ord(S[I + J])) do
Inc(J);
if J > 3 then
Result := Result + '..' + S[I + J - 1]
else
while J > 1 do
begin
Inc(I);
Dec(J);
Result := Result + S[I];
end;
I := I + J;
end;
WriteStr(Result);
end;
procedure TInstantWriter.WriteObject(AObject: TPersistent);
begin
WriteStr(AObject.ClassName);
if AObject is TInstantStreamable then
TInstantStreamable(AObject).WriteObject(Self)
else if AObject is TInstantCollection then
TInstantCollection(AObject).WriteObject(Self)
else if AObject is TInstantCollectionItem then
TInstantCollectionItem(AObject).WriteObject(Self)
else
raise EInstantStreamError.CreateFmt('Class %s not streamable: ',
[AObject.ClassName]);
WriteListEnd;
ProcessObject(AObject);
end;
procedure TInstantWriter.WriteProperties(AObject: TPersistent);
begin
inherited WriteProperties(AObject);
WriteListEnd;
end;
procedure TInstantWriter.WriteString(const Value: string);
var
L: Integer;
begin
L := Length(Value);
if L <= 255 then
begin
WriteValue(vaString);
Write(L, SizeOf(Byte));
end else
begin
WriteValue(vaLString);
Write(L, SizeOf(Integer));
end;
Write(Pointer(Value)^, L);
end;
procedure TInstantWriter.WriteValue(Value: TValueType);
begin
inherited;
end;
{ TInstantStream }
procedure TInstantStream.AlignStream;
const
Padding: packed array[0..2] of Byte = ($00,$00,$00);
var
Offset: Integer;
begin
{ Align stream to 32-bit boundary }
Offset := (Source.Position mod 4);
if Offset <> 0 then
if Source.Position = Source.Size then
Source.Write(Padding, 4 - Offset)
else
Source.Seek(4 - Offset, soFromCurrent);
end;
constructor TInstantStream.Create(ASource: TStream; AFreeSource: Boolean);
begin
inherited Create;
FSource := ASource;
FFreeSource := AFreeSource;
end;
destructor TInstantStream.Destroy;
begin
Source := nil;
inherited;
end;
procedure TInstantStream.DoProcessObject(AObject: TPersistent);
begin
if Assigned(FOnProcessObject) then
FOnProcessObject(Self, AObject);
end;
function TInstantStream.GetSource: TStream;
begin
if not Assigned(FSource) then
begin
FSource := TMemoryStream.Create;
FFreeSource := True;
end;
Result := FSource;
end;
function TInstantStream.Read(var Buffer; Count: Integer): Integer;
begin
Result := Source.Read(Buffer, Count);
end;
function TInstantStream.ReadObject(AObject: TPersistent;
Arg: Pointer): TPersistent;
begin
with TInstantReader.Create(Self) do
try
Result := ReadObject(AObject, Arg);
finally
Free;
end;
end;
function TInstantStream.ReadObjectRes(AObject: TPersistent;
Arg: Pointer): TPersistent;
begin
ReadResHeader;
Result := ReadObject(AObject, Arg);
AlignStream;
end;
procedure TInstantStream.ReadResHeader;
var
HeaderSize: Cardinal;
begin
Seek(SizeOf(Cardinal), soFromCurrent);
Read(HeaderSize, SizeOf(Cardinal));
Seek(HeaderSize - 2 * SizeOf(Cardinal), soFromCurrent);
end;
procedure TInstantStream.ReadResourceFileHeader;
begin
Source.Seek(SizeOf(ResourceHeader), soFromCurrent);
end;
function TInstantStream.Seek(Offset: Integer; Origin: Word): Integer;
begin
Result := Source.Seek(OffSet, Origin);
end;
procedure TInstantStream.SetSize(Value: Integer);
begin
Source.Size := Value;
end;
procedure TInstantStream.SetSource(Value: TStream);
begin
if FFreeSource then
Source.Free;
FSource := Value;
FFreeSource := False;
end;
function TInstantStream.Write(const Buffer; Count: Integer): Integer;
begin
Result := Source.Write(Buffer, Count);
end;
procedure TInstantStream.WriteObject(AObject: TPersistent);
begin
with TInstantWriter.Create(Self) do
try
WriteObject(AObject);
finally
Free;
end;
end;
procedure TInstantStream.WriteObjectRes(const ResName: string;
AObject: TPersistent);
var
ObjectStream: TInstantStream;
begin
ObjectStream := TInstantStream.Create;
try
ObjectStream.WriteObject(AObject);
WriteResourceHeader(UpperCase(ResName), ObjectStream.Size);
Write(TMemoryStream(ObjectStream.Source).Memory^, ObjectStream.Size);
AlignStream;
finally
ObjectStream.Free;
end;
end;
procedure TInstantStream.WriteResourceFileHeader;
begin
Source.Write(Resourceheader, SizeOf(ResourceHeader));
end;
procedure TInstantStream.WriteResourceHeader(const ResName: string;
DataSize: Cardinal);
const
ResourceType: packed array[0..3] of Byte = ($FF,$FF,$0A,$00); // RT_RCDATA
DataVersion: Cardinal = 0;
Flags: Word = $30; // Pure and moveable
Language: Word = 1030;
Version: Cardinal = 0;
Characteristics: Cardinal = 0;
var
NameBufferSize: Integer;
HeaderSize: Integer;
begin
NameBufferSize := (Length(ResName) + 1) * SizeOf(WideChar);
HeaderSize := 28 + NameBufferSize;
{ include padding for name alignment in header }
if (NameBufferSize mod SizeOf(Cardinal)) <> 0 then
HeaderSize := HeaderSize + SizeOf(Word);
Write(DataSize, SizeOf(Cardinal));
Write(HeaderSize, SizeOf(Cardinal));
Write(ResourceType, SizeOf(Cardinal));
Write(Pointer(Widestring(ResName))^, NameBufferSize);
AlignStream;
Write(DataVersion, SizeOf(Cardinal));
Write(Flags, SizeOf(Word));
Write(Language, SizeOf(Word));
Write(Version, SizeOf(Cardinal));
Write(Characteristics, SizeOf(Cardinal));
end;
{ TInstantResourceStream }
constructor TInstantResourceStream.Create(Instance: THandle;
const ResName: string; ResType: PChar);
begin
inherited Create(TResourceStream.Create(Instance, UpperCase(ResName),
ResType), True);
end;
constructor TInstantResourceStream.CreateFromId(Instance: THandle;
ResID: Integer; ResType: PChar);
begin
inherited Create(TResourceStream.CreateFromID(Instance, ResID, ResType),
True);
end;
{ TInstantFileStream }
constructor TInstantFileStream.Create(const FileName: string; Mode: Word);
begin
inherited Create(TFileStream.Create(FileName, Mode), True);
end;
{ TInstantStringStream }
constructor TInstantStringStream.Create(AString: string);
begin
inherited Create(TMemoryStream.Create, True);
if Length(AString) > 0 then
Write(AString[1], Length(AString));
Position := 0;
end;
function TInstantStringStream.GetDataString: string;
var
Pos: Integer;
begin
if Size > 0 then
begin
Pos := Position;
try
SetLength(Result, Size);
Position := 0;
Read(Result[1], Size);
finally
Position := Pos;
end;
end else
Result := '';
end;
{ TInstantXMLProducer }
constructor TInstantXMLProducer.Create(Stream: TStream);
begin
inherited Create;
FStream := Stream;
end;
destructor TInstantXMLProducer.Destroy;
begin
FWriter.Free;
FTagStack.Free;
inherited;
end;
function TInstantXMLProducer.GetCurrentTag: string;
begin
Result := TagStack[TagStack.Count - 1];
end;
function TInstantXMLProducer.GetEof: Boolean;
begin
Writer.FlushBuffer;
Result := Writer.Position = Stream.Position;
end;
function TInstantXMLProducer.GetPosition: Integer;
begin
Result := Writer.Position;
end;
function TInstantXMLProducer.GetTagStack: TStringList;
begin
if not Assigned(FTagStack) then
FTagStack := TStringList.Create;
Result := FTagStack;
end;
function TInstantXMLProducer.GetWriter: TAbstractWriter;
begin
if not Assigned(FWriter) then
FWriter := TAbstractWriter.Create(Stream, InstantBufferSize);
Result := FWriter;
end;
procedure TInstantXMLProducer.SetPosition(Value: Integer);
begin
Writer.Position := Value;
end;
procedure TInstantXMLProducer.WriteData(const Data: string);
begin
WriteString(Data);
end;
procedure TInstantXMLProducer.WriteEndTag;
var
Index: Integer;
begin
Index := TagStack.Count - 1;
WriteString('<' + TagStack[Index] + '>');
TagStack.Delete(Index);
end;
procedure TInstantXMLProducer.WriteEscapedData(const Data: string);
const
EscStr = '&%s;';
var
I: Integer;
Esc: string;
C: Char;
begin
for I := 1 to Length(Data) do
begin
C := Data[I];
if C in [#34, #38, #39, #60, #62] then
begin
case C of
#34:
Esc := 'quot';
#38:
Esc := 'amp';
#39:
Esc := 'apos';
#60:
Esc := 'lt';
#62:
Esc := 'gt';
end;
Esc := Format(EscStr, [Esc]);
WriteString(Esc);
end else//MC if C in [#32..#126] then
WriteString(C);
(* MC
else begin
Esc := Format(EscStr, [Format('#%d', [Ord(C)])]);
WriteString(Esc);
end;
*)
end;
end;
procedure TInstantXMLProducer.WriteStartTag(const Tag: string);
begin
WriteString('<'+Tag+'>');
TagStack.Add(Tag);
end;
procedure TInstantXMLProducer.WriteString(const S: string);
begin
Writer.Write(S[1], Length(S));
end;
{ TInstantXMLProcessor }
procedure TInstantXMLProcessor.CheckToken(AToken: TInstantXMLToken);
begin
if not (Token = AToken) then
raise EInstantError.CreateFmt('Invalid token ''%s''',
[GetEnumName(TypeInfo(TInstantXMLToken), Ord(Token))]);
end;
constructor TInstantXMLProcessor.Create(Stream: TStream);
begin
inherited Create;
FStream := Stream;
end;
destructor TInstantXMLProcessor.Destroy;
begin
FReader.Free;
inherited;
end;
function TInstantXMLProcessor.GetEof: Boolean;
begin
Result := Reader.Position = Stream.Size;
end;
function TInstantXMLProcessor.GetPosition: Integer;
begin
Result := Reader.Position;
end;
function TInstantXMLProcessor.GetReader: TAbstractReader;
begin
if not Assigned(FReader) then
FReader := TAbstractReader.Create(Stream, InstantBufferSize);
Result := Freader;
end;
function TInstantXMLProcessor.GetToken: TInstantXMLToken;
begin
if PeekChar = '<' then
Result := xtTag
else
Result := xtData;
end;
function TInstantXMLProcessor.PeekChar: Char;
var
Pos: Integer;
begin
Pos := Position;
try
Result := ReadChar;
finally
Position := Pos;
end;
end;
function TInstantXMLProcessor.PeekTag: string;
var
Pos: Integer;
begin
Pos := Position;
try
Result := ReadTag;
finally
Position := Pos;
end;
end;
function TInstantXMLProcessor.PeekTagName: string;
var
Pos: Integer;
begin
Pos := Position;
try
Result := ReadTagName;
finally
Position := Pos;
end;
end;
function TInstantXMLProcessor.ReadChar: Char;
begin
Reader.Read(Result, SizeOf(Char));
end;
function TInstantXMLProcessor.ReadData: string;
begin
Result := '';
while not (PeekChar = '<') do
begin
Result := Result + ReadEscapedChar;
end;
end;
procedure TInstantXMLProcessor.ReadData(Stream: TStream);
var
C: Char;
CharSize: Integer;
begin
CheckToken(xtData);
CharSize := SizeOf(Char);
while not (PeekChar = '<') do
begin
C := ReadEscapedChar;
Stream.Write(C, CharSize);
end;
end;
function TInstantXMLProcessor.ReadEscapedChar: Char;
procedure UnEscape;
var
S: string;
begin
S := '';
Result := ReadChar;
while Result <> ';' do
begin
S := S + Result;
Result := ReadChar;
end;
if S[1] = '#' then
Result := Char(StrToInt(Copy(S, 2, Length(S) - 1)))
else if S = 'quot' then
Result := #34
else if S = 'amp' then
Result := #38
else if S = 'apos' then
Result := #39
else if S = 'lt' then
Result := #60
else if S = 'gt' then
Result := #62;
end;
begin
Result := ReadChar;
if Result = '&' then
UnEscape;
end;
function TInstantXMLProcessor.ReadTag: string;
var
C: Char;
Pos: Integer;
begin
Pos := Position;
try
SkipBlanks;
CheckToken(xtTag);
except
Position := Pos;
raise;
end;
Result := '';
repeat
C := ReadChar;
Result := Result + C;
until C = '>';
end;
function TInstantXMLProcessor.ReadTagName: string;
begin
Result := ReadTag;
Result := Copy(Result, 2, Length(Result) - 2);
end;
procedure TInstantXMLProcessor.SetPosition(const Value: Integer);
begin
Reader.Position := Value;
end;
procedure TInstantXMLProcessor.Skip;
var
TagName, StartTag, EndTag: string;
Level: Integer;
begin
TagName := ReadTagName;
StartTag := '<'+TagName+'>';
EndTag := '<'+TagName+'>';
Level := 1;
repeat
if Token = xtTag then
begin
TagName := ReadTag;
if SameText(TagName, StartTag) then
Inc(Level)
else if SameText(TagName, EndTag) then
Dec(Level);
end else
ReadData;
until (TagName = EndTag) and (Level = 0);
end;
procedure TInstantXMLProcessor.SkipBlanks;
begin
while PeekChar in [#1..#32] do
ReadChar;
end;
{ TInstantConverter }
procedure TInstantConverter.Convert;
begin
InternalConvert;
end;
procedure TInstantConverter.ConvertProperties;
begin
InternalConvertProperties;
end;
destructor TInstantConverter.Destroy;
begin
FObjectClassList.Free;
inherited;
end;
function TInstantConverter.GetObjectClass: TClass;
begin
Result := TClass(ObjectClassList.Last);
end;
function TInstantConverter.GetObjectClassList: TList;
begin
if not Assigned(FObjectClassList) then
FObjectClassList := TList.Create;
Result := FObjectClassList;
end;
function TInstantConverter.GetObjectClassName: string;
begin
if Assigned(ObjectClass) then
Result := ObjectClass.ClassName
else
Result := '';
end;
procedure TInstantConverter.PopObjectClass;
begin
with ObjectClassList do
Delete(Pred(Count));
end;
procedure TInstantConverter.PushObjectClass(AObjectClass: TClass);
begin
ObjectClassList.Add(AObjectClass);
end;
{ TInstantBinaryToTextConverter }
constructor TInstantBinaryToTextConverter.Create(Input, Output: TStream);
begin
inherited Create;
FProducer := TInstantXMLProducer.Create(Output);
FReader := TInstantReader.Create(Input);
end;
destructor TInstantBinaryToTextConverter.Destroy;
begin
FProducer.Free;
FReader.Free;
inherited;
end;
function TInstantBinaryToTextConverter.GetInput: TStream;
begin
Result := Reader.Stream;
end;
function TInstantBinaryToTextConverter.GetOutput: TStream;
begin
Result := Producer.Stream;
end;
procedure TInstantBinaryToTextConverter.InternalConvert;
begin
PushObjectClass(FindClass(Reader.ReadStr));
try
Producer.WriteStartTag(ObjectClassName);
if ObjectClass.InheritsFrom(TInstantStreamable) then
TInstantStreamableClass(ObjectClass).ConvertToText(Self)
else if ObjectClass.InheritsFrom(TInstantCollection) then
TInstantCollectionClass(ObjectClass).ConvertToText(Self)
else if ObjectClass.InheritsFrom(TInstantCollectionItem) then
TInstantCollectionItemClass(ObjectClass).ConvertToText(Self);
Reader.ReadListEnd;
Producer.WriteEndTag;
finally
PopObjectClass;
end;
end;
procedure TInstantBinaryToTextConverter.InternalConvertProperties;
procedure ConvertPropertyValue;
var
S, SetStr: string;
begin
case Reader.NextValue of
vaInt8, vaInt16, vaInt32:
Producer.WriteData(IntToStr(Reader.ReadInteger));
vaExtended:
Producer.WriteData(FloatToStr(Reader.ReadFloat));
vaCurrency:
Producer.WriteData(CurrToStr(Reader.ReadCurrency));
vaDate:
Producer.WriteData(DateTimeToStr(Reader.ReadDate));
vaString, vaLString:
Producer.WriteEscapedData(Reader.ReadString);
vaSet:
begin
Reader.ReadValue;
SetStr := '';
repeat
S := Reader.ReadStr;
if S <> '' then
begin
if SetStr <> '' then
SetStr := SetStr + ', ';
SetStr := SetStr + S;
end;
until S = '';
Producer.WriteEscapedData(SetStr);
end;
(*
vaList: //CB:
begin
Reader.ReadListBegin;
while not Reader.EndOfList do
begin
Producer.WriteStartTag('ListItem');
ConvertPropertyValue;
Producer.WriteEndTag;
end;
Reader.ReadListEnd;
end;
*)
vaIdent:
Producer.WriteEscapedData(Reader.ReadIdent);
vaFalse:
begin
Reader.ReadValue;
Producer.WriteData('FALSE');
end;
vaTrue:
begin
Reader.ReadValue;
Producer.WriteData('TRUE');
end;
else
raise EInstantStreamError.Create('Invalid value type');
end;
end;
begin
while not Reader.EndOfList do
begin
Producer.WriteStartTag(Reader.ReadStr);
ConvertPropertyValue;
Producer.WriteEndTag;
end;
Reader.ReadListEnd;
end;
{ TInstantToTextToBinaryConverter }
constructor TInstantTextToBinaryConverter.Create(Input, Output: TStream);
begin
inherited Create;
FProcessor := TInstantXMLProcessor.Create(Input);
FWriter := TInstantWriter.Create(Output);
end;
destructor TInstantTextToBinaryConverter.Destroy;
begin
FProcessor.Free;
FWriter.Free;
inherited;
end;
function TInstantTextToBinaryConverter.GetInput: TStream;
begin
Result := Processor.Stream;
end;
function TInstantTextToBinaryConverter.GetOutput: TStream;
begin
Result := Writer.Stream;
end;
procedure TInstantTextToBinaryConverter.InternalConvert;
begin
PushObjectClass(FindClass(Processor.ReadTagName));
try
Writer.WriteStr(ObjectClassName);
if ObjectClass.InheritsFrom(TInstantStreamable) then
TInstantStreamableClass(ObjectClass).ConvertToBinary(Self)
else if ObjectClass.InheritsFrom(TInstantCollection) then
TInstantCollectionClass(ObjectClass).ConvertToBinary(Self)
else if ObjectClass.InheritsFrom(TInstantCollectionItem) then
TInstantCollectionItemClass(ObjectClass).ConvertToBinary(Self);
Processor.ReadTag;
Writer.WriteListEnd;
finally
PopObjectClass;
end;
end;
procedure TInstantTextToBinaryConverter.InternalConvertProperties;
begin
end;
end.
This source diff could not be displayed because it is too large. You can view the blob instead.
{$IFDEF VER130}
{$DEFINE MSWINDOWS}
{$DEFINE D5}
{$DEFINE D5+}
{$ENDIF}
{$IFDEF VER140}
{$DEFINE D5+}
{$DEFINE D6}
{$DEFINE D6+}
{$ENDIF}
{$IFDEF VER150}
{$DEFINE D5+}
{$DEFINE D6+}
{$DEFINE D7}
{$DEFINE D7+}
{$ENDIF}
{$IFDEF VER170}
{$DEFINE D5+}
{$DEFINE D6+}
{$DEFINE D7+}
{$DEFINE D9}
{$DEFINE D9+}
{$ENDIF}
{$IFDEF VER180}
{$DEFINE D5+}
{$DEFINE D6+}
{$DEFINE D7+}
{$DEFINE D9+}
{$DEFINE D10}
{$DEFINE D10+}
{$ENDIF}
{$IFDEF FPC}
{$DEFINE D5+}
{$DEFINE D6+}
{$DEFINE D7+}
{$DEFINE SUPPORTS_WIDESTRING}
{$DEFINE SUPPORTS_INTERFACE}
{$DEFINE SUPPORTS_INT64}
{$DEFINE SUPPORTS_DYNAMICARRAYS}
{$DEFINE SUPPORTS_DEFAULTPARAMS}
{$DEFINE SUPPORTS_OVERLOAD}
{$ASMMODE Intel}
{$UNDEF UseRegAsm}
{$ENDIF}
{$IFDEF D5}
{$A+}
{$ELSE}
{$A8}
{$ENDIF}
{$B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N+,O+,P+,Q-,R-,S-,T+,U-,V+,W-,X+,Y+,Z1}
{$MINSTACKSIZE $00004000}
{$MAXSTACKSIZE $00100000}
{$IMAGEBASE $00400000}
{$IFDEF D6+}
{$WARN SYMBOL_DEPRECATED ON}
{$WARN SYMBOL_LIBRARY ON}
{$WARN SYMBOL_PLATFORM ON}
{$WARN UNIT_LIBRARY ON}
{$WARN UNIT_PLATFORM ON}
{$WARN UNIT_DEPRECATED ON}
{$ENDIF}
{$IFDEF D7+}
{$WARN HRESULT_COMPAT ON}
{$WARN HIDING_MEMBER ON}
{$WARN HIDDEN_VIRTUAL ON}
{$WARN GARBAGE ON}
{$WARN BOUNDS_ERROR ON}
{$WARN ZERO_NIL_COMPAT ON}
{$WARN STRING_CONST_TRUNCED ON}
{$WARN FOR_LOOP_VAR_VARPAR ON}
{$WARN TYPED_CONST_VARPAR ON}
{$WARN ASG_TO_TYPED_CONST ON}
{$WARN CASE_LABEL_RANGE ON}
{$WARN FOR_VARIABLE ON}
{$WARN CONSTRUCTING_ABSTRACT ON}
{$WARN COMPARISON_FALSE ON}
{$WARN COMPARISON_TRUE ON}
{$WARN COMPARING_SIGNED_UNSIGNED ON}
{$WARN COMBINING_SIGNED_UNSIGNED ON}
{$WARN UNSUPPORTED_CONSTRUCT ON}
{$WARN FILE_OPEN ON}
{$WARN FILE_OPEN_UNITSRC ON}
{$WARN BAD_GLOBAL_SYMBOL ON}
{$WARN DUPLICATE_CTOR_DTOR ON}
{$WARN INVALID_DIRECTIVE ON}
{$WARN PACKAGE_NO_LINK ON}
{$WARN PACKAGED_THREADVAR ON}
{$WARN IMPLICIT_IMPORT ON}
{$WARN HPPEMIT_IGNORED ON}
{$WARN NO_RETVAL ON}
{$WARN USE_BEFORE_DEF ON}
{$WARN FOR_LOOP_VAR_UNDEF ON}
{$WARN UNIT_NAME_MISMATCH ON}
{$WARN NO_CFG_FILE_FOUND ON}
{$WARN MESSAGE_DIRECTIVE ON}
{$WARN IMPLICIT_VARIANTS ON}
{$WARN UNICODE_TO_LOCALE ON}
{$WARN LOCALE_TO_UNICODE ON}
{$WARN IMAGEBASE_MULTIPLE ON}
{$WARN SUSPICIOUS_TYPECAST ON}
{$WARN PRIVATE_PROPACCESSOR ON}
{$WARN UNSAFE_TYPE OFF}
{$WARN UNSAFE_CODE OFF}
{$WARN UNSAFE_CAST OFF}
{$ENDIF}
(*
* InstantObjects
* Text Reader/Writer
*)
(* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is: Seleqt InstantObjects
*
* The Initial Developer of the Original Code is: Seleqt
*
* Portions created by the Initial Developer are Copyright (C) 2001-2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Carlo Barazzetta, Adrea Petrelli, Nando Dessena
*
* ***** END LICENSE BLOCK ***** *)
unit InstantTextFiler;
{$IFDEF LINUX}
{$I '../InstantDefines.inc'}
{$ELSE}
{$I 'InstantDefines.inc'}
{$ENDIF}
interface
uses
Classes, InstantClasses;
type
PInstantTextPos = ^TInstantTextPos;
TInstantTextPos = record
Column, Line: Integer;
Offset: Integer;
end;
EInstantTextPosError = class(EInstantError)
private
FPosition: TInstantTextPos;
public
constructor Create(const Msg: string; APosition: TInstantTextPos);
property Position: TInstantTextPos read FPosition;
end;
TInstantTextFiler = class(TObject)
private
FFreeStream: Boolean;
FPosition: TInstantTextPos;
FStream: TStream;
function GetPosition: TInstantTextPos;
procedure SetPosition(const Value: TInstantTextPos);
protected
procedure AdvancePosition(Ch: Char);
procedure DescendPosition(Ch: Char);
function GetBof: Boolean; virtual;
function GetEof: Boolean; virtual;
function GetStreamPos: Integer; virtual;
procedure Initialize; virtual;
function IsSpace(Ch: Char): Boolean; virtual;
function IsText(Ch: Char): Boolean; virtual;
procedure SetStreamPos(Value: Integer); virtual;
property StreamPos: Integer read GetStreamPos write SetStreamPos;
public
constructor Create(AStream: TStream; FreeStream: Boolean = False); overload;
constructor Create(AText: string); overload;
destructor Destroy; override;
procedure Reset; virtual;
property Bof: Boolean read GetBof;
property Eof: Boolean read GetEof;
property Position: TInstantTextPos read GetPosition write SetPosition;
end;
TInstantTextReader = class(TInstantTextFiler)
private
FConstAware: Boolean;
FTokenPos: TInstantTextPos;
protected
function GetBof: Boolean; override;
function GetEof: Boolean; override;
procedure Initialize; override;
function IsNumericPrefix(Ch: Char): Boolean;
function IsStringDelimiter(Ch: Char): Boolean;
public
function AtSpace: Boolean;
function BackChar: Char;
function GotoToken(const Token: string; Skip: Boolean;
IgnoreCase: Boolean = True): Boolean;
function NextChar: Char;
function NextToken: string;
function ReadChar: Char; virtual;
function ReadMatching(const Str: string): Boolean;
function ReadNext(const Str: string; StopBefore: Boolean = False): string;
function ReadNumeric: string; virtual;
function ReadString: string; virtual;
function ReadToken: string;
function SkipSpace: Boolean;
procedure UnreadToken;
property ConstAware: Boolean read FConstAware write FConstAware;
end;
TInstantTextWriter = class(TInstantTextFiler)
public
procedure WriteChar(Ch: Char); virtual;
procedure WriteString(const Str: string);
end;
procedure AdvanceTextPos(var Pos: TInstantTextPos; Ch: Char);
procedure DescendTextPos(var Pos: TInstantTextPos; Ch: Char);
implementation
uses
SysUtils;
function InstantIsNumeric(const Str: string): Boolean;
var
Code: Integer;
D: Double;
begin
Val(Str, D, Code);
if D = D then;
Result := Code = 0;
end;
procedure AdvanceTextPos(var Pos: TInstantTextPos; Ch: Char);
begin
with Pos do
begin
case Ch of
{$IFDEF MSWINDOWS}
#13: Column := 1;
#10: Inc(Line);
{$ENDIF}
{$IFDEF LINUX}
#10:begin
Inc(Line);
Column := 1;
end;
{$ENDIF}
else
Inc(Column);
end;
Inc(Offset);
end;
end;
procedure DescendTextPos(var Pos: TInstantTextPos; Ch: Char);
begin
with Pos do
begin
case Ch of
{$IFDEF MSWINDOWS}
#13: Column := 0; { Unknown }
#10: Dec(Line);
{$ENDIF}
{$IFDEF LINUX}
#10:begin
Dec(Line);
Column := 0;
end;
{$ENDIF}
else
Dec(Column);
end;
Dec(Offset);
end;
end;
{ EInstantTextPosError }
constructor EInstantTextPosError.Create(const Msg: string;
APosition: TInstantTextPos);
begin
inherited Create(Msg);
FPosition := APosition;
end;
{ TInstantTextFiler }
procedure TInstantTextFiler.AdvancePosition(Ch: Char);
begin
AdvanceTextPos(FPosition, Ch);
end;
constructor TInstantTextFiler.Create(AStream: TStream; FreeStream: Boolean);
begin
if not Assigned(AStream) then
raise EInstantError.Create('Unassigned stream');
FStream := AStream;
FFreeStream := FreeStream;
Initialize;
Reset;
end;
constructor TInstantTextFiler.Create(AText: string);
begin
Create(TStringStream.Create(AText), True);
end;
procedure TInstantTextFiler.DescendPosition(Ch: Char);
begin
DescendTextPos(FPosition, Ch);
end;
destructor TInstantTextFiler.Destroy;
begin
inherited;
if FFreeStream then
FStream.Free;
end;
function TInstantTextFiler.GetBof: Boolean;
begin
Result := FStream.Size = 0;
end;
function TInstantTextFiler.GetEof: Boolean;
begin
Result := FStream.Size = 0;
end;
function TInstantTextFiler.GetPosition: TInstantTextPos;
begin
FPosition.Offset := StreamPos;
Result := FPosition;
end;
function TInstantTextFiler.GetStreamPos: Integer;
begin
Result := FStream.Position;
end;
procedure TInstantTextFiler.Initialize;
begin
end;
function TInstantTextFiler.IsSpace(Ch: Char): Boolean;
begin
Result := Ch in [' ', #9, #10, #13];
end;
function TInstantTextFiler.IsText(Ch: Char): Boolean;
begin
Result := Ch in ['a'..'z', 'A'..'Z', '0'..'9', '#', '_'];
end;
procedure TInstantTextFiler.Reset;
begin
FStream.Position := 0;
with FPosition do
begin
Column := 1;
Line := 1;
Offset := 0;
end;
end;
procedure TInstantTextFiler.SetPosition(const Value: TInstantTextPos);
begin
FPosition := Value;
StreamPos := FPosition.Offset;
end;
procedure TInstantTextFiler.SetStreamPos(Value: Integer);
begin
FStream.Position := Value;
end;
{ TInstantTextReader }
function TInstantTextReader.AtSpace: Boolean;
begin
Result := IsSpace(NextChar);
end;
function TInstantTextReader.BackChar: Char;
begin
with FStream do
begin
if Position > 0 then
Position := Position - 1;
Read(Result, SizeOf(Result));
Position := Position - 1;
DescendPosition(Result);
end;
end;
function TInstantTextReader.GetBof: Boolean;
begin
Result := FStream.Position = 0;
end;
function TInstantTextReader.GetEof: Boolean;
begin
Result := FStream.Position = FStream.Size;
end;
function TInstantTextReader.GotoToken(const Token: string; Skip,
IgnoreCase: Boolean): Boolean;
begin
while not Eof do
begin
if SameText(ReadToken, Token) then
begin
if not Skip then
UnreadToken;
Result := True;
Exit;
end;
end;
Result := False;
end;
procedure TInstantTextReader.Initialize;
begin
inherited;
ConstAware := True;
end;
function TInstantTextReader.IsNumericPrefix(Ch: Char): Boolean;
begin
Result := ConstAware and (Ch in ['0'..'9', '.'])
end;
function TInstantTextReader.IsStringDelimiter(Ch: Char): Boolean;
begin
Result := ConstAware and (Ch in ['''', '"']);
end;
function TInstantTextReader.NextChar: Char;
var
SavePos: Integer;
begin
SavePos := FStream.Position;
try
FStream.Read(Result, SizeOf(Result));
finally
FStream.Position := SavePos;
end;
end;
function TInstantTextReader.NextToken: string;
begin
Result := ReadToken;
UnreadToken;
end;
function TInstantTextReader.ReadChar: Char;
begin
FStream.Read(Result, SizeOf(Result));
AdvancePosition(Result);
end;
function TInstantTextReader.ReadMatching(const Str: string): Boolean;
var
SavePos: TInstantTextPos;
I: Integer;
begin
SavePos := Position;
I := 1;
while not Eof do
begin
if I > Length(Str) then
begin
Result := True;
Exit;
end;
if ReadChar = Str[I] then
Inc(I)
else
Break;
end;
Position := SavePos;
Result := False;
end;
function TInstantTextReader.ReadNext(const Str: string;
StopBefore: Boolean): string;
var
Ch: Char;
I: Integer;
SavePos, StartPos: TInstantTextPos;
begin
Result := '';
I := 1;
StartPos := Position;
while not Eof and (I <= Length(Str)) do
begin
SavePos := Position;
Ch := ReadChar;
if IsStringDelimiter(Ch) then
begin
Position := SavePos;
Result := Result + ReadString;
end else
begin
Result := Result + Ch;
if SameText(Ch, Str[I]) then
begin
if I = 1 then
StartPos := SavePos;
Inc(I)
end else
I := 1;
end;
end;
if (I > Length(Str)) and StopBefore then
Position := StartPos;
end;
function TInstantTextReader.ReadNumeric: string;
var
SavePos: TInstantTextPos;
Ch: Char;
begin
Result := '';
SavePos := Position;
SkipSpace;
Ch := ReadChar;
if IsNumericPrefix(Ch) then
begin
Result := Ch;
while not EOF and InstantIsNumeric(Result + NextChar) do
Result := Result + ReadChar;
end;
if Result = '' then
Position := SavePos;
end;
function TInstantTextReader.ReadString: string;
var
Ch, Delimiter: Char;
SavePos: TInstantTextPos;
begin
Result := '';
SavePos := Position;
SkipSpace;
Ch := ReadChar;
if IsStringDelimiter(Ch) then
begin
Delimiter := Ch;
while not Eof do
begin
Result := Result + Ch;
Ch := ReadChar;
if Ch = Delimiter then
begin
Result := Result + Ch;
if NextChar = Delimiter then
Ch := ReadChar
else
Break;
end;
end;
end else
Position := SavePos;
end;
function TInstantTextReader.ReadToken: string;
var
Ch: Char;
SavePos: TInstantTextPos;
begin
Result := '';
if Eof then
Exit;
FTokenPos := Position;
Ch := ReadChar;
while IsSpace(Ch) do
begin
FTokenPos := Position;
if Eof then
Exit;
Ch := ReadChar;
end;
if IsStringDelimiter(Ch) then
begin
Position := FTokenPos;
Result := ReadString;
Exit;
end;
if IsNumericPrefix(Ch) then
begin
Position := FTokenPos;
Result := ReadNumeric;
if Result <> '' then
Exit;
end;
while IsText(Ch) do
begin
Result := Result + Ch;
if Eof then
Exit;
SavePos := Position;
Ch := ReadChar;
end;
if Result = '' then
Result := Ch
else
Position := SavePos;
end;
function TInstantTextReader.SkipSpace: Boolean;
begin
while not Eof do
if not IsSpace(ReadChar) then
begin
BackChar;
Break;
end;
Result := Eof;
end;
procedure TInstantTextReader.UnreadToken;
begin
Position := FTokenPos;
end;
{ TInstantTextWriter }
procedure TInstantTextWriter.WriteChar(Ch: Char);
begin
FStream.Write(Ch, SizeOf(Ch));
AdvancePosition(Ch);
end;
procedure TInstantTextWriter.WriteString(const Str: string);
var
I: Integer;
begin
for I := 1 to Length(Str) do
WriteChar(Str[I]);
end;
end.
This source diff could not be displayed because it is too large. You can view the blob instead.
Copyright (C) Evológica 2017
object FMostra_Processamento: TFMostra_Processamento
Left = 220
Top = 220
BorderStyle = bsDialog
ClientHeight = 65
ClientWidth = 548
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = True
Position = poScreenCenter
PixelsPerInch = 96
TextHeight = 13
object pnlMensagem: TPanel
Left = 0
Top = 38
Width = 548
Height = 27
Align = alBottom
BevelInner = bvLowered
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -12
Font.Name = 'MS Sans Serif'
Font.Style = [fsBold]
ParentFont = False
TabOrder = 0
ExplicitTop = 54
end
object Panel2: TPanel
Left = 0
Top = 0
Width = 548
Height = 38
Align = alClient
BevelInner = bvLowered
TabOrder = 1
ExplicitHeight = 68
object pgbBarraDeProgresso: TProgressBar
Left = 9
Top = 10
Width = 533
Height = 18
Smooth = True
TabOrder = 0
end
end
end
unit Mostra_Processamento;
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
interface
uses
{$IFnDEF FPC}
Windows,
{$ELSE}
LCLIntf, LCLType, LMessages,
{$ENDIF}
Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, ExtCtrls;
type
TFMostra_Processamento = class(TForm)
pnlMensagem: TPanel;
Panel2: TPanel;
pgbBarraDeProgresso: TProgressBar;
private
{ Private declarations }
public
{ Public declarations }
end;
TFShowProgress = class
public
constructor create(piMsg: string = ''; piPosition: integer = 0; piTotal: integer = 0); virtual; abstract;
procedure ChangeMessage (piMsg: string); overload; virtual; abstract;
procedure ChangeMessage (piMsg: string; piPosition: integer; piTotal: integer); overload;
procedure ChangeCounters (piPosition: integer; piTotal: integer); virtual; abstract;
procedure Inc (piSize: integer = 1); virtual; abstract;
end;
TFShowProgressForm = class(TFShowProgress)
private
fFormProgress: TFMostra_Processamento;
public
destructor Destroy; override;
constructor create(piMsg: string = ''; piPosition: integer = 0; piTotal: integer = 0); override;
procedure ChangeMessage (piMsg: string); override;
procedure ChangeCounters (piPosition: integer; piTotal: integer); override;
procedure Inc (piSize: integer = 1); override;
end;
implementation
{$R *.dfm}
{ TFShowProgressForm }
procedure TFShowProgressForm.ChangeCounters(piPosition, piTotal: integer);
begin
fFormProgress.pgbBarraDeProgresso.Max := piTotal;
fFormProgress.pgbBarraDeProgresso.Position := piPosition;
Application.ProcessMessages;
end;
procedure TFShowProgressForm.ChangeMessage(piMsg: string);
begin
fFormProgress.pnlMensagem.Caption := piMsg;
Application.ProcessMessages;
end;
constructor TFShowProgressForm.create(piMsg: string; piPosition, piTotal: integer);
begin
fFormProgress := TFMostra_Processamento.Create(nil);
fFormProgress.pgbBarraDeProgresso.Max := piTotal;
fFormProgress.pgbBarraDeProgresso.Position := piPosition;
fFormProgress.pnlMensagem.Caption := piMsg;
fFormProgress.Show;
Application.ProcessMessages;
end;
destructor TFShowProgressForm.destroy;
begin
fFormProgress.Free;
inherited;
end;
procedure TFShowProgressForm.Inc(piSize: integer);
begin
fFormProgress.pgbBarraDeProgresso.Position := fFormProgress.pgbBarraDeProgresso.Position + piSize;
Application.ProcessMessages;
end;
{ TFShowProgress }
procedure TFShowProgress.ChangeMessage(piMsg: string; piPosition, piTotal: integer);
begin
Self.ChangeMessage(piMsg);
Self.ChangeCounters(piPosition, piTotal);
end;
end.
staruml-evologica-plugin
unit Utility;
{******************************************************************************}
{ }
{ StarUML - The Open Source UML/MDA Platform. }
{ }
{ Copyright (C) 2002-2005 - Plastic Software, Inc. }
{ }
{ }
{ This program is free software; you can redistribute it and/or modify it }
{ under the terms of the GNU General Public License as published by the Free }
{ Software Foundation; either version 2 of the License, or (at your option) }
{ any later version. }
{ }
{ This program is distributed in the hope that it will be useful, but WITHOUT }
{ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or }
{ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for }
{ more details. }
{ }
{ You should have received a copy of the GNU General Public License along with }
{ this program; if not, write to the Free Software Foundation, Inc., 51 }
{ Franklin St, Fifth Floor, Boston, MA 02110-1301 USA }
{ }
{ Linking StarUML statically or dynamically with other modules is making a }
{ combined work based on StarUML. Thus, the terms and conditions of the GNU }
{ General Public License cover the whole combination. }
{ }
{ In addition, as a special exception, Plastic Software give you permission to }
{ combine StarUML program with free software programs or libraries that are }
{ released under the GNU LGPL/Mozilla/Apache/BSD and with code included in the }
{ standard release of ExpressBar, ExpressNavBar, ExpressInspector, }
{ ExpressPageControl, ProGrammar, NextGrid under the commercial license (or }
{ modified versions of such code, with unchanged license). You may copy and }
{ distribute such a system following the terms of the GNU GPL for StarUML and }
{ the licenses of the other code concerned, provided that you include the }
{ source code of that other code when and as the GNU GPL requires distribution }
{ of source code. Plastic Software also give you permission to combine StarUML }
{ program with dynamically linking plug-in (or add-in) programs that are }
{ released under the GPL-incompatible and proprietary license. }
{ }
{ Note that people who make modified versions of StarUML are not obligated to }
{ grant this special exception for their modified versions; it is their choice }
{ whether to do so. The GNU General Public License gives permission to release }
{ a modified version without this exception; this exception also makes it }
{ possible to release a modified version which carries forward this exception. }
{******************************************************************************}
interface
uses
StdCtrls, Classes;
function GetDllDirectory: string;
type
// PStringWriter
PStringWriter = class
private
Buffer: TStringList;
OnCurLine: Boolean;
FTabToSpace: Boolean;
FSpaceCnt: Integer;
FIndentationCount: Integer;
FHeader: string;
FFooter: string;
function GetIntentationStr: string;
public
constructor Create;
destructor Destroy; override;
procedure Indent(Count: Integer); overload;
procedure Outdent(Count: Integer); overload;
procedure Indent; overload;
procedure Outdent; overload;
procedure Clear;
procedure WriteLine(const S: string); overload;
procedure WriteLine(const FormatStr: string; const Args: array of const); overload;
procedure WriteLine; overload;
procedure Write(const S: string); overload;
procedure Write(const FormatStr: string; const Args: array of const); overload;
procedure Append(Writer: PStringWriter);
procedure SaveToFile(FileName: string; DirectoryCreation: Boolean = True);
function AsString(): String;
property IndentationCount: Integer read FIndentationCount write FIndentationCount;
property TabToSpace: Boolean read FTabToSpace write FTabToSpace ;
property SpaceCnt: Integer read FSpaceCnt write FSpaceCnt;
property Header: string read FHeader write FHeader;
property Footer: string read FFooter write FFooter;
end;
implementation
uses
Windows, SysUtils,Forms;
////////////////////////////////////////////////////////////////////////////////
// PStringWriter
constructor PStringWriter.Create;
begin
inherited;
Buffer := TStringList.Create;
FSpaceCnt := 4;
FIndentationCount := 0;
end;
destructor PStringWriter.Destroy;
begin
Buffer.Free;
Buffer := nil;
inherited;
end;
procedure PStringWriter.Indent(Count: Integer);
begin
FIndentationCount := FIndentationCount + Count;
if FIndentationCount < 0 then
FIndentationCount := 0;
end;
procedure PStringWriter.Outdent(Count: Integer);
begin
FIndentationCount := FIndentationCount - Count;
if FIndentationCount < 0 then
FIndentationCount := 0;
end;
procedure PStringWriter.Indent;
begin
Indent(1);
end;
procedure PStringWriter.Outdent;
begin
Outdent(1);
end;
function PStringWriter.AsString: String;
begin
Result := Buffer.Text;
end;
procedure PStringWriter.Clear;
begin
Buffer.Clear;
OnCurLine := False;
FSpaceCnt := 4;
FIndentationCount := 0;
end;
procedure PStringWriter.WriteLine(const S: string);
begin
if OnCurLine then
Buffer[Buffer.Count - 1] := Buffer[Buffer.Count - 1] + S
else
Buffer.Add(GetIntentationStr + S);
OnCurLine := False;
end;
function PStringWriter.GetIntentationStr: string;
begin
if FTabToSpace then
Result := StringOfChar(#32, FSpaceCnt * FIndentationCount)
else
Result := StringOfChar(#9, FIndentationCount);
end;
procedure PStringWriter.WriteLine(const FormatStr: string; const Args: array of const);
var
S : string;
begin
S := TrimLeft(Format(FormatStr, Args));
while S <> StringReplace(S, ' ', ' ', [rfReplaceAll]) do
S := StringReplace(S, ' ', ' ', [rfReplaceAll]);
WriteLine(S);
end;
procedure PStringWriter.WriteLine;
begin
WriteLine('');
end;
procedure PStringWriter.Write(const S: string);
begin
if not OnCurLine then
Buffer.Add(GetIntentationStr + S)
else begin
Buffer[Buffer.Count - 1] := Buffer[Buffer.Count - 1] + S;
end;
OnCurLine := True;
end;
procedure PStringWriter.Write(const FormatStr: string; const Args: array of const);
var
S : string;
begin
S := TrimLeft(Format(FormatStr, Args));
while S <> StringReplace(S, ' ', ' ', [rfReplaceAll]) do
S := StringReplace(S, ' ', ' ', [rfReplaceAll]);
Write(S);
end;
procedure PStringWriter.Append(Writer: PStringWriter);
var
I: Integer;
begin
for I := 0 to Writer.Buffer.Count - 1 do
WriteLine(Writer.Buffer[I]);
end;
procedure PStringWriter.SaveToFile(FileName: string; DirectoryCreation: Boolean = True);
var
Dir: string;
begin
Dir := ExtractFilePath(FileName);
if DirectoryCreation and not DirectoryExists(Dir) then
if not ForceDirectories(Dir) then
raise Exception.Create('Directory Create Error');
Buffer.SaveToFile(FileName);
end;
// PStringWriter
////////////////////////////////////////////////////////////////////////////////
function GetDllDirectory: string;
var
ModuleName : array[0..1023] of char;
Path: string;
begin
FillChar(ModuleName, Sizeof(ModuleName), #10);
GetModuleFileName(HInstance, ModuleName, Sizeof(ModuleName));
Path := ExtractFileDir(ModuleName);
Result := Path;
end;
end.
object ObjectExplorer: TObjectExplorer
Left = 0
Height = 240
Top = 0
Width = 320
ClientHeight = 240
ClientWidth = 320
TabOrder = 0
TabStop = True
DesignLeft = 2471
DesignTop = 505
object tvExplorer: TTreeView
Left = 0
Height = 240
Top = 0
Width = 320
Align = alClient
BorderStyle = bsNone
ReadOnly = True
ScrollBars = ssAutoBoth
ShowLines = False
TabOrder = 0
OnExpanding = tvExplorerItemExpanding
OnGetSelectedIndex = tvExplorerGetSelectedIndex
Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowRoot, tvoToolTips, tvoThemedDraw]
end
end
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TObjectExplorer','FORMDATA',[
'TPF0'#15'TObjectExplorer'#14'ObjectExplorer'#4'Left'#2#0#6'Height'#3#240#0#3
+'Top'#2#0#5'Width'#3'@'#1#12'ClientHeight'#3#240#0#11'ClientWidth'#3'@'#1#8
+'TabOrder'#2#0#7'TabStop'#9#0#9'TTreeView'#10'tvExplorer'#4'Left'#2#0#6'Heig'
+'ht'#3#240#0#3'Top'#2#0#5'Width'#3'@'#1#5'Align'#7#8'alClient'#9'ShowLines'#8
+#8'TabOrder'#2#0#7'Options'#11#17'tvoAutoItemHeight'#16'tvoHideSelection'#21
+'tvoKeepCollapsedNodes'#14'tvoShowButtons'#11'tvoShowRoot'#11'tvoToolTips'#13
+'tvoThemedDraw'#0#0#0#0
]);
unit acuObjectExplorer;
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
interface
uses
{$IFnDEF FPC}
Windows,
{$ELSE}
LCLIntf, LCLType, LMessages,
{$ENDIF}
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, acuModel, acuframework;
type
{ TObjectExplorer }
TObjectExplorer = class(TFrame)
tvExplorer: TTreeView;
procedure tvExplorerGetSelectedIndex(Sender: TObject; Node: TTreeNode);
procedure tvExplorerItemExpanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean);
private
{ Private declarations }
public
{ Public declarations }
procedure SetSession(piSession: acPersistenceSession);
procedure SetList(piList: acPersistentObjectList; piDesc: string);
procedure SetPersistenceManager(piPersistenceManager: acPersistenceManager);
end;
implementation
{$R *.lfm}
uses TypInfo, acuObject;
procedure TObjectExplorer.SetList(piList: acPersistentObjectList; piDesc: string);
var lNode: TTreeNode;
begin
tvExplorer.Items.Clear;
if assigned(piList) then
begin
lNode := tvExplorer.Items.AddChildObject(nil, piDesc, piList);
lNode.HasChildren := True;
lNode.Expand(False);
end;
end;
procedure TObjectExplorer.SetPersistenceManager(piPersistenceManager: acPersistenceManager);
var lNode: TTreeNode;
begin
if assigned(piPersistenceManager) then
begin
lNode := tvExplorer.Items.AddChildObject(nil, 'Objects Repository', piPersistenceManager);
lNode.HasChildren := True;
lNode.Expand(False);
end;
end;
procedure TObjectExplorer.SetSession(piSession: acPersistenceSession);
var lNode: TTreeNode;
begin
tvExplorer.Items.Clear;
if assigned(piSession) then
begin
lNode := tvExplorer.Items.AddChildObject(nil, piSession.Name, piSession);
lNode.HasChildren := True;
lNode.Expand(False);
end;
end;
procedure TObjectExplorer.tvExplorerItemExpanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean);
var lSession: acPersistenceSession;
lPatriarca: acPatriarca;
lPersistentObject: acPersistentObject;
lClassTicket: acClassTicket;
lObject: acObject;
lEnumerator: acEnumerator;
lImageIndex, li: integer;
lAttribute: acAttribute;
lAttributeTicket: acAttributeTicket;
lPropertyName: String;
lRelation: acRelationTicket;
lNode: TTreeNode;
begin
if Node.HasChildren and (Node.Count = 0)then
begin
Node.Owner.BeginUpdate;
try
if (TObject(Node.Data) is acPersistenceManager) then
begin
lEnumerator := acPersistenceManager(Node.Data).GetSessionsEnumerator;
li := 1;
while not lEnumerator.EOL do
begin
lSession := acPersistenceSession(lEnumerator.Current);
Node.Owner.AddChildObject(Node, 'Session ' + inttostr(li) + ': ' + lSession.Name, lSession).HasChildren := True;
lEnumerator.MoveNext;
inc(li);
end;
end
else if (TObject(Node.Data) is acPersistenceSession) then
begin
lSession := acPersistenceSession(Node.Data);
lEnumerator := lSession.getPatriarcsEnumerator;
while not lEnumerator.EOL do
begin
lPatriarca := acPatriarca(lEnumerator.Current);
Node.Owner.AddChildObject(Node, lPatriarca.ClassTicket.PersistentObjectClassName, lPatriarca).HasChildren := True;
lEnumerator.MoveNext;
end;
end
else if (TObject(Node.Data) is acPatriarca) then
begin
lPatriarca := acPatriarca(Node.Data);
lEnumerator := lPatriarca.Objects.GetEnumerator;
while not lEnumerator.EOL do
begin
lPersistentObject := acPersistentObject(lEnumerator.Current);
Node.Owner.AddChildObject(Node, lPersistentObject.ClassTicket.PersistentObjectClassName + ' (OID:' + lPersistentObject.IDO.AsString + ')', lPersistentObject).HasChildren := True;
lEnumerator.MoveNext;
end;
lEnumerator := lPatriarca.NewObjects.GetEnumerator;
while not lEnumerator.EOL do
begin
lPersistentObject := acPersistentObject(lEnumerator.Current);
Node.Owner.AddChildObject(Node, lPersistentObject.ClassTicket.PersistentObjectClassName + ' (OID:' + lPersistentObject.IDO.AsString + ')', lPersistentObject).HasChildren := True;
lEnumerator.MoveNext;
end;
end
else if (TObject(Node.Data) is acPersistentObject) or (TObject(Node.Data) is acRelationPartnerShip) then
begin
if (TObject(Node.Data) is acPersistentObject)
then lPersistentObject := acPersistentObject(Node.Data)
else lPersistentObject := acRelationPartnerShip(Node.Data).Partner;
lClassTicket := lPersistentObject.ClassTicket;
while lClassTicket <> nil do
begin
for li := 0 to pred(lClassTicket.Attributes.Count) do
begin
lAttributeTicket := acAttributeTicket(lClassTicket.Attributes.Objects[li]);
if lAttributeTicket.Mandatory
then lImageIndex := 5
else lImageIndex := 0;
lAttribute := lPersistentObject.AttributeByName(lAttributeTicket.AttributeName);
if assigned(lAttribute) then
begin
if lAttribute.IsNull
then Node.Owner.AddChildObject(Node, lAttributeTicket.AttributeName+ ': '+lAttributeTicket.AttributeType+' (null)', lAttribute).ImageIndex := lImageIndex
else Node.Owner.AddChildObject(Node, lAttributeTicket.AttributeName+ ': '+lAttributeTicket.AttributeType+' ('+lAttribute.AsString + ')', lAttribute).ImageIndex := lImageIndex;
end;
end;
lClassTicket := lClassTicket.ParentClassTicket;
end;
lClassTicket := lPersistentObject.ClassTicket;
while lClassTicket <> nil do
begin
for li := 0 to pred(lClassTicket.RelationTicketsIn.Count) do
begin
lRelation := (lClassTicket.RelationTicketsIn.Objects[li] as acRelationTicket);
lPropertyName := lRelation.DestinationPropertyName;
if (lPropertyName <> '') then
begin
if lRelation.DestinationMaxMultiplicity <= 1 then
begin
if lRelation.DestinationMinMultiplicity > 0 then lImageIndex := 3 else lImageIndex := 1;
lObject := acObject(lPersistentObject.PartnerShipByName(lPropertyName));
if acRelationPartnerShip(lObject).Status = acRelationPartnerStatus.PSLoaded then
begin
if assigned(acRelationPartnerShip(lObject).Partner)
then begin
lNode := Node.Owner.AddChildObject(Node, lPropertyName+ ': ' + acRelationPartnerShip(lObject).RelationTicket.OriginClassTicket.PersistentObjectClassName + ' (OID:' + acRelationPartnerShip(lObject).Partner.IDO.AsString + ')', acRelationPartnerShip(lObject).Partner);
lNode.HasChildren := True;
end
else lNode := Node.Owner.AddChildObject(Node, lPropertyName+ ': ' + acRelationPartnerShip(lObject).RelationTicket.OriginClassTicket.PersistentObjectClassName + ' (null)', lObject);
end
else
begin
if assigned(acRelationPartnerShip(lObject).PartnerOID)
then begin
lNode := Node.Owner.AddChildObject(Node, lPropertyName+ ': ' + acRelationPartnerShip(lObject).RelationTicket.OriginClassTicket.PersistentObjectClassName + ' (OID:' + acRelationPartnerShip(lObject).PartnerOID.AsString + ')', lObject);
lNode.HasChildren := True;
end
else lNode := Node.Owner.AddChildObject(Node, lPropertyName+ ': ' + acRelationPartnerShip(lObject).RelationTicket.OriginClassTicket.PersistentObjectClassName + ' (null)', lObject)
end;
end
else
begin
if lRelation.DestinationMinMultiplicity > 0 then lImageIndex := 4 else lImageIndex := 2;
lObject := acObject(lPersistentObject.PartnerListByName(lPropertyName));
lNode := Node.Owner.AddChildObject(Node, lPropertyName, lObject);
lNode.HasChildren := True;
end;
lNode.ImageIndex := lImageIndex;
end;
end;
for li := 0 to pred(lClassTicket.RelationTicketsOut.Count) do
begin
lRelation := (lClassTicket.RelationTicketsOut.Objects[li] as acRelationTicket);
lPropertyName := lRelation.OriginPropertyName;
if (lPropertyName <> '') then
begin
if lRelation.OriginMaxMultiplicity <= 1 then
begin
if lRelation.OriginMinMultiplicity > 0 then lImageIndex := 3 else lImageIndex := 1;
lObject := acObject(lPersistentObject.PartnerShipByName(lPropertyName));
if acRelationPartnerShip(lObject).Status = acRelationPartnerStatus.PSLoaded then
if assigned(acRelationPartnerShip(lObject).Partner)
then begin
lNode := Node.Owner.AddChildObject(Node, lPropertyName+ ': ' + acRelationPartnerShip(lObject).RelationTicket.DestinationClassTicket.PersistentObjectClassName + ' (OID:' + acRelationPartnerShip(lObject).Partner.IDO.AsString + ')', acRelationPartnerShip(lObject).Partner);
lNode.HasChildren := True;
end
else Node.Owner.AddChildObject(Node, lPropertyName+ ': ' + acRelationPartnerShip(lObject).RelationTicket.DestinationClassTicket.PersistentObjectClassName + ' (null)', lObject)
else
if assigned(acRelationPartnerShip(lObject).PartnerOID)
then begin
lNode := Node.Owner.AddChildObject(Node, lPropertyName+ ': ' + acRelationPartnerShip(lObject).RelationTicket.DestinationClassTicket.PersistentObjectClassName + ' (OID:' + acRelationPartnerShip(lObject).PartnerOID.AsString + ')', lObject);
lNode.HasChildren := True;
end
else lNode := Node.Owner.AddChildObject(Node, lPropertyName+ ': ' + acRelationPartnerShip(lObject).RelationTicket.DestinationClassTicket.PersistentObjectClassName + ' (null)', lObject);
end
else
begin
if lRelation.OriginMinMultiplicity > 0 then lImageIndex := 4 else lImageIndex := 2;
lObject := acObject(lPersistentObject.PartnerListByName(lPropertyName));
lNode := Node.Owner.AddChildObject(Node, lPropertyName, lObject);
lNode.HasChildren := True;
end;
lNode.ImageIndex := lImageIndex;
end;
end;
lClassTicket := lClassTicket.ParentClassTicket;
end;
end
else if (TObject(Node.Data) is acPersistentObjectList) then
begin
lEnumerator := acPersistentObjectList(Node.Data).GetEnumerator;
while not lEnumerator.EOL do
begin
lPersistentObject := acPersistentObject(lEnumerator.Current);
lNode := Node.Owner.AddChildObject(Node, lPersistentObject.ClassTicket.PersistentObjectClassName + ' (OID:' + lPersistentObject.IDO.AsString + ')', lPersistentObject);
lNode.HasChildren := True;
lNode.ImageIndex := 8;
lEnumerator.MoveNext;
end;
end;
finally
Node.Owner.EndUpdate;
end;
end;
end;
procedure TObjectExplorer.tvExplorerGetSelectedIndex(Sender: TObject; Node: TTreeNode);
begin
Node.SelectedIndex := Node.ImageIndex;
end;
end.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{0aa63ba3-8e77-4647-ae64-1b824689865a}</ProjectGuid>
</PropertyGroup>
<ItemGroup />
<ItemGroup>
<Projects Include="CurioAddIn.dproj" />
<Projects Include="src\DelphiAddIn.dproj" />
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Default.Personality</Borland.Personality>
<Borland.ProjectType />
<BorlandProject>
<BorlandProject xmlns=""> <Default.Personality> </Default.Personality> </BorlandProject></BorlandProject>
</ProjectExtensions>
<Target Name="CurioAddIn">
<MSBuild Projects="CurioAddIn.dproj" Targets="" />
</Target>
<Target Name="CurioAddIn:Clean">
<MSBuild Projects="CurioAddIn.dproj" Targets="Clean" />
</Target>
<Target Name="CurioAddIn:Make">
<MSBuild Projects="CurioAddIn.dproj" Targets="Make" />
</Target>
<Target Name="DelphiAddIn">
<MSBuild Projects="src\DelphiAddIn.dproj" Targets="" />
</Target>
<Target Name="DelphiAddIn:Clean">
<MSBuild Projects="src\DelphiAddIn.dproj" Targets="Clean" />
</Target>
<Target Name="DelphiAddIn:Make">
<MSBuild Projects="src\DelphiAddIn.dproj" Targets="Make" />
</Target>
<Target Name="Build">
<CallTarget Targets="CurioAddIn;DelphiAddIn" />
</Target>
<Target Name="Clean">
<CallTarget Targets="CurioAddIn:Clean;DelphiAddIn:Clean" />
</Target>
<Target Name="Make">
<CallTarget Targets="CurioAddIn:Make;DelphiAddIn:Make" />
</Target>
<Import Condition="Exists('$(MSBuildBinPath)\Borland.Group.Targets')" Project="$(MSBuildBinPath)\Borland.Group.Targets" />
</Project>
\ No newline at end of file
unit cxuCadastroCasoDeUso;
interface
uses cxuUseCase, utuMessage;
type
cxCadatroCasoDeUso = class(cxUseCase)
private
protected
function GetUseCaseCode: String; override;
public
procedure rmObtemContexto(piField: utField; const piResponseField: utField = nil);
procedure rmIncluiObjeto(piField: utField; const piResponseField: utField = nil);
procedure rmExcluiObjeto(piField: utField; const piResponseField: utField = nil);
procedure rmEditaObjeto(piField: utField; const piResponseField: utField = nil);
procedure rmSalvaObjeto(piField: utField; const piResponseField: utField = nil);
procedure rmConsultaObjeto(piField: utField; const piResponseField: utField = nil);
end;
implementation
{ cxCadatroCasoDeUso }
procedure cxCadatroCasoDeUso.rmObtemContexto(piField: utField; const piResponseField: utField);
var lRequestMessage: mxRequestMessage;
lResponseMessage: mxAnswerMessage;
begin
lRequestMessage := self.NewRequest('RM_OBTEM_CONTEXTO', piField);
try
lResponseMessage := self.Session.SendRequest(lRequestMessage);
try
if assigned(piResponseField) then piResponseField.Assign(lResponseMessage.RootField);
finally
lResponseMessage.free;
end;
finally
lRequestMessage.Free;
end;
end;
procedure cxCadatroCasoDeUso.rmSalvaObjeto(piField: utField; const piResponseField: utField);
var lRequestMessage: mxRequestMessage;
lResponseMessage: mxAnswerMessage;
begin
lRequestMessage := self.NewRequest('RM_SALVA_OBJETO', piField);
try
lResponseMessage := self.Session.SendRequest(lRequestMessage);
try
if assigned(piResponseField) then piResponseField.Assign(lResponseMessage.RootField);
finally
lResponseMessage.free;
end;
finally
lRequestMessage.Free;
end;
end;
procedure cxCadatroCasoDeUso.rmExcluiObjeto(piField: utField; const piResponseField: utField);
var lRequestMessage: mxRequestMessage;
lResponseMessage: mxAnswerMessage;
begin
lRequestMessage := self.NewRequest('RM_EXCLUI_OBJETO', piField);
try
lResponseMessage := self.Session.SendRequest(lRequestMessage);
try
if assigned(piResponseField) then piResponseField.Assign(lResponseMessage.RootField);
finally
lResponseMessage.free;
end;
finally
lRequestMessage.Free;
end;
end;
procedure cxCadatroCasoDeUso.rmIncluiObjeto(piField: utField; const piResponseField: utField);
var lRequestMessage: mxRequestMessage;
lResponseMessage: mxAnswerMessage;
begin
lRequestMessage := self.NewRequest('RM_INCLUI_OBJETO', piField);
try
lResponseMessage := self.Session.SendRequest(lRequestMessage);
try
if assigned(piResponseField) then piResponseField.Assign(lResponseMessage.RootField);
finally
lResponseMessage.free;
end;
finally
lRequestMessage.Free;
end;
end;
procedure cxCadatroCasoDeUso.rmConsultaObjeto(piField: utField; const piResponseField: utField);
var lRequestMessage: mxRequestMessage;
lResponseMessage: mxAnswerMessage;
begin
lRequestMessage := self.NewRequest('RM_CONSULTA_OBJETO', piField);
try
lResponseMessage := self.Session.SendRequest(lRequestMessage);
try
if assigned(piResponseField) then piResponseField.Assign(lResponseMessage.RootField);
finally
lResponseMessage.free;
end;
finally
lRequestMessage.Free;
end;
end;
procedure cxCadatroCasoDeUso.rmEditaObjeto(piField: utField; const piResponseField: utField);
var lRequestMessage: mxRequestMessage;
lResponseMessage: mxAnswerMessage;
begin
lRequestMessage := self.NewRequest('RM_EDITA_OBJETO', piField);
try
lResponseMessage := self.Session.SendRequest(lRequestMessage);
try
if assigned(piResponseField) then piResponseField.Assign(lResponseMessage.RootField);
finally
lResponseMessage.free;
end;
finally
lRequestMessage.Free;
end;
end;
function cxCadatroCasoDeUso.GetUseCaseCode: String;
begin
result := '441';
end;
end.
unit cxuCadastroClasse;
interface
uses cxuUseCase, utuMessage;
type
cxCadastroClasse = class(cxUseCase)
protected
function GetUseCaseCode: String; override;
public
procedure rmObtemContexto(piField: utField; const piResponseField: utField = nil);
procedure rmIncluiObjeto(piField: utField; const piResponseField: utField = nil);
procedure rmExcluiObjeto(piField: utField; const piResponseField: utField = nil);
procedure rmEditaObjeto(piField: utField; const piResponseField: utField = nil);
procedure rmSalvaObjeto(piField: utField; const piResponseField: utField = nil);
procedure rmConsultaObjeto(piField: utField; const piResponseField: utField = nil);
end;
implementation
{ cxCadastroClasse }
procedure cxCadastroClasse.rmObtemContexto(piField: utField; const piResponseField: utField);
var lRequestMessage: mxRequestMessage;
lResponseMessage: mxAnswerMessage;
begin
lRequestMessage := self.NewRequest('RM_OBTEM_CONTEXTO', piField);
try
lResponseMessage := self.Session.SendRequest(lRequestMessage);
try
if assigned(piResponseField) then piResponseField.Assign(lResponseMessage.RootField);
finally
lResponseMessage.free;
end;
finally
lRequestMessage.Free;
end;
end;
procedure cxCadastroClasse.rmSalvaObjeto(piField: utField; const piResponseField: utField);
var lRequestMessage: mxRequestMessage;
lResponseMessage: mxAnswerMessage;
begin
lRequestMessage := self.NewRequest('RM_SALVA_OBJETO', piField);
try
lResponseMessage := self.Session.SendRequest(lRequestMessage);
try
if assigned(piResponseField) then piResponseField.Assign(lResponseMessage.RootField);
finally
lResponseMessage.free;
end;
finally
lRequestMessage.Free;
end;
end;
procedure cxCadastroClasse.rmExcluiObjeto(piField: utField; const piResponseField: utField);
var lRequestMessage: mxRequestMessage;
lResponseMessage: mxAnswerMessage;
begin
lRequestMessage := self.NewRequest('RM_EXCLUI_OBJETO', piField);
try
lResponseMessage := self.Session.SendRequest(lRequestMessage);
try
if assigned(piResponseField) then piResponseField.Assign(lResponseMessage.RootField);
finally
lResponseMessage.free;
end;
finally
lRequestMessage.Free;
end;
end;
procedure cxCadastroClasse.rmIncluiObjeto(piField: utField; const piResponseField: utField);
var lRequestMessage: mxRequestMessage;
lResponseMessage: mxAnswerMessage;
begin
lRequestMessage := self.NewRequest('RM_INCLUI_OBJETO', piField);
try
lResponseMessage := self.Session.SendRequest(lRequestMessage);
try
if assigned(piResponseField) then piResponseField.Assign(lResponseMessage.RootField);
finally
lResponseMessage.free;
end;
finally
lRequestMessage.Free;
end;
end;
procedure cxCadastroClasse.rmConsultaObjeto(piField: utField; const piResponseField: utField);
var lRequestMessage: mxRequestMessage;
lResponseMessage: mxAnswerMessage;
begin
lRequestMessage := self.NewRequest('RM_CONSULTA_OBJETO', piField);
try
lResponseMessage := self.Session.SendRequest(lRequestMessage);
try
if assigned(piResponseField) then piResponseField.Assign(lResponseMessage.RootField);
finally
lResponseMessage.free;
end;
finally
lRequestMessage.Free;
end;
end;
procedure cxCadastroClasse.rmEditaObjeto(piField: utField; const piResponseField: utField);
var lRequestMessage: mxRequestMessage;
lResponseMessage: mxAnswerMessage;
begin
lRequestMessage := self.NewRequest('RM_EDITA_OBJETO', piField);
try
lResponseMessage := self.Session.SendRequest(lRequestMessage);
try
if assigned(piResponseField) then piResponseField.Assign(lResponseMessage.RootField);
finally
lResponseMessage.free;
end;
finally
lRequestMessage.Free;
end;
end;
function cxCadastroClasse.GetUseCaseCode: String;
begin
result := '1080';
end;
end.
object CodeGen: TCodeGen
Left = 546
Height = 616
Top = 210
Width = 889
Caption = 'CodeGen'
ClientHeight = 616
ClientWidth = 889
Color = clBtnFace
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
OnShow = FormShow
Position = poDesktopCenter
LCLVersion = '2.1.0.0'
object PageControl1: TPageControl
Left = 0
Height = 616
Top = 0
Width = 889
ActivePage = TabSheet1
Align = alClient
TabIndex = 0
TabOrder = 0
object TabSheet1: TTabSheet
Caption = 'UseCase'
ClientHeight = 590
ClientWidth = 881
object Panel3: TPanel
Left = 0
Height = 590
Top = 0
Width = 881
Align = alClient
BevelOuter = bvLowered
ClientHeight = 590
ClientWidth = 881
TabOrder = 0
object Panel2: TPanel
Left = 1
Height = 465
Top = 124
Width = 280
Align = alLeft
BevelOuter = bvNone
ClientHeight = 465
ClientWidth = 280
TabOrder = 0
object Panel4: TPanel
Left = 0
Height = 41
Top = 0
Width = 280
Align = alTop
ClientHeight = 41
ClientWidth = 280
TabOrder = 0
object SpeedButton1: TSpeedButton
Left = 10
Height = 22
Top = 13
Width = 23
Flat = True
Glyph.Data = {
36050000424D3605000000000000360400002800000010000000100000000100
080000000000000100000000000000000000000100000001000089370000983D
0000A2410000AA440000AF460000B4480000B74A0000BA4B0100BB4D0200BE51
0600C0560A00C45B0F00C8611600CD691C00D1712500D77A2E00DA7F3300DC82
3600DD843700DC823600DA803400D77C3100D3772E00D0732A00CC6D2600C767
2100C15F1B00BA561500AF490C00A23B04009D3603009A330200993202009832
020096310300942F0300912D03008E2B03008A28040086250400852504008424
04008424040083240400802204007A210400721E0300631A0300561703004011
02002F0D010020080100150601001C07010022090100290B0100310D0100380F
0200401102004B1403005A1803006C1E040073200500792206007F2609007C27
0C0077291000732C14006E2E1A0068322100623628005E392D005B3C3100593E
350057413A0055443E0052474300504A48004E4E4E004F4F4F00505050005151
5100525252005353530054545400555555005656560057575700585858005959
59005A5A5A005B5B5B005C5C5C005D5D5D005E5E5E005F5F5F00606060006161
6100626262006363630064646400656565006666660067676700686868006969
69006A6A6A006B6B6B006C6C6C006D6D6D006E6E6E006F6F6F00707070007171
7100727272007373730074747400757575007676760077777700787878007979
79007A7A7A007B7B7B007C7C7C007D7D7D007E7E7E007F7F7F00808080008181
8100828282008383830084848400858585008686860087878700888888008989
89008A8A8A008B8B8B008C8C8C008D8D8D008E8E8E008F8F8F00909090009191
9100929292009393930094949400959595009696960097979700989898009999
99009A9A9A009B9B9B009C9C9C009D9D9D009E9E9E009F9F9F00A0A0A000A1A1
A100A2A2A200A3A3A300A4A4A400A5A5A500A6A6A600A7A7A700A8A8A800A9A9
A900AAAAAA00ABABAB00ACACAC00ADADAD00AEAEAE00AFAFAF00B0B0B000B1B1
B100B2B2B200B3B3B300B4B4B400B5B5B500B6B6B600B7B7B700B8B8B800BDB9
B500C2BAB200C6BBB000C9BDAE00CCBDAC00D1BEA800D5BFA600D7C0A500DBC1
A200D9C1A600D8C2A800D6C3AD00D2C4B300D9A9BE00E47CCE00EE51DF00F728
EE00FB0CFB00FE03FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00EF00FD00D201F900B802F600A102
F4008E03F1007D04EF006D04ED005F05EC005305EA004705E9003C06E8003306
E7002A06E6002006E4001707E3000E07E2000B07E2000C07E200DDDD08DDDDDD
2A2A2A2A2ADDDDDDDDDDDDDD080808082AC1120D2ADDDDDDDDDDDDDD08DDDDDD
2B2A292B2ADDDDDDDDDDDDDD08DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD08DDDDDD
2A2A2A2A2ADDDDDDDDDDDDDD080808082AC1120D2ADDDDDDDDDDDDDD08DDDDDD
2B2A292B2ADDDDDDDDDDDDDD08DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD08DDDDDD
2A2A2A2A2ADDDDDDDDDDDDDD080808082AC1120D2ADDDDDDDDDDDDDD08DDDDDD
2B2A292B2ADDDDDDDDDD2A2A2A2A2ADDDDDDDDDDDD34343434DD2AC1120D2ADD
DDDDDDDDDD34DDFE34DD2B2A292B2ADDDDDDDDDDDD34FEDDFEDDDDDDDDDDDDDD
DDDDDDDDDD34343434FEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFE
}
OnClick = SpeedButton1Click
end
object SpeedButton2: TSpeedButton
Left = 39
Height = 22
Top = 13
Width = 23
Flat = True
Glyph.Data = {
36030000424D3603000000000000360000002800000010000000100000000100
18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF
C2A6A4C2A6A4C2A6A4C2A6A4C2A6A4C2A6A4C2A6A4C2A6A4C2A6A4C2A6A4C2A6
A4C2A6A4FF00FFFF00FFFF00FFFF00FFC2A6A4FEFCFBFEFCFBFEFCFBFEFCFBFE
FCFBFEFCFBFEFCFBFEFCFBFEFCFBFEFCFBC2A6A4FF00FFFF00FFFF00FFFF00FF
C2A6A4FEFCFB993300993300993300993300993300993300993300993300FEFC
FBC2A6A4FF00FFFF00FFFF00FFFF00FFC2A6A4FEFBF7993300FEFEFEFEFEFEFE
FEFE8EA4FDB8C6FDFEFEFE993300FEFBF7C2A6A4FF00FFFF00FFFF00FFFF00FF
C2A6A4FEF9F4993300FEFEFEFAFBFE7E98FC0335FB597AFCFEFEFE993300FEF9
F4C2A6A4FF00FFFF00FFFF00FFFF00FFC2A6A4FEF7F0993300D6DEFE4368FC03
35FB4066FC0436FBD9E0FE993300FEF7F0C2A6A4FF00FFFF00FFFF00FFFF00FF
C2A6A4FEF5EC9933005274FC1442FBBCC9FDEFF2FE1A47FB4F72FC973304FEF5
ECC2A6A4FF00FFFF00FFFF00FFFF00FFC2A6A4FEF3E9993300E4EAFED9E0FEFE
FEFEFEFEFE98ACFD0335FB643459FEF3E9C2A6A4FF00FFFF00FFFF00FFFF00FF
C2A6A4FFF1E5993300FEFEFEFEFEFEFEFEFEFEFEFEFEFEFE5677FC0335FBFFF1
E5C2A6A4FF00FFFF00FFFF00FFFF00FFC2A6A4FFF0E299330099330099330099
33009933009933008F33112235C80335FBC2A6A4FF00FFFF00FFFF00FFFF00FF
C2A6A4FFEEDEFFEEDEFFEEDEFFEEDEFFEEDEFFEEDEC5B5A9C3B4A8C2B3A70335
FB0335FB0335FBFF00FFFF00FFFF00FFC2A6A4FFECDAFFECDAFFECDAFFECDAFF
ECDAFFECDAB0A296B0A296B0A296B0A296C2A6A40335FBFF00FFFF00FFFF00FF
C2A6A4FFEAD7FFEAD7FFEAD7FFEAD7FFEAD7C9B9ACFBF8F4FBF8F4E6DAD9C2A6
A4FF00FFFF00FFFF00FFFF00FFFF00FFC2A6A4FFE8D3FFE8D3FFE8D3FFE8D3FF
E8D3C9B9ACFBF8F4DFCEC7C2A6A4FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
C2A6A4FFE6D0FFE6D0FFE6D0FFE6D0FFE6D0C9B9ACDFCEC7C2A6A4FF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFC2A6A4C2A6A4C2A6A4C2A6A4C2A6A4C2
A6A4C2A6A4C2A6A4FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
}
OnClick = SpeedButton2Click
end
object SpeedButton3: TSpeedButton
Left = 68
Height = 22
Top = 13
Width = 23
Flat = True
Glyph.Data = {
36050000424D3605000000000000360400002800000010000000100000000100
0800000000000001000000000000000000000001000000010000000000000101
0100020202000303030004040400050505000606060007070700080808000909
09000A0A0A000B0B0B000C0C0C000D0D0D000E0E0E000F0F0F00101010001111
1100121212001313130014141400151515001616160017171700181818001919
19001A1A1A001B1B1B001C1C1C001D1D1D001E1E1E001F1F1F00202020002121
2100222222002323230024242400252525002626260027272700282828002929
29002A2A2A002B2B2B002C2C2C002D2D2D002E2E2E002F2F2F00303030003131
3100323232003333330034343400353535003636360037373700383838003939
39003A3A3A003B3B3B003C3C3C003D3D3D003E3E3E003F3F3F00404040004141
4100424242004343430044444400454545004646460047474700484848004C4C
4C00505050005353530055555500575757005B5B5B005E5E5E00636363006565
650067676700696969006C6C6C006D6D6D006F6F6F0070707000717171007272
7200737373007373730073737300737373007474740074747400767676007777
770079797900797979007A7A7A007A7A7A007B7B7B007B7B7B007B7B7B007B7B
7B007B7B7B007B7B7B007B7B7B007C7C7C007C7C7C007C7C7C007D7D7D007F7F
7F00828282008484840086868600878787008787870087878700888888008888
8800898989008A8A8A008B8B8B008B8B8B008C8C8C008D8D8D008D8D8D008D8D
8D008E8E8E008E8E8E008E8E8E008E8E8E008F8F8F0090909000919191009393
93009595950098989800999999009A9A9A009C9C9C009D9D9D009F9F9F00A1A1
A100A2A2A200A3A3A300A3A3A300A4A4A400A4A4A400A4A4A400A3A3A300A3A3
A300A2A2A200A2A2A200A2A2A200A1A1A100A1A1A100A1A1A100A2A2A200A2A2
A200A3A3A300A4A4A400A5A5A500A5A5A500A6A6A600A7A7A700A7A7A700A8A8
A800A8A8A800A9A9A900ADADAD00B2B2B200B6B6B600BABABA00BDBDBD00BFBF
BF00C1C1C100C3C3C300C5C5C500C5C5C500C6C6C600C6C6C600C6C6C600C5C5
C500C4C4C400C4C4C400C3C3C300C3C3C300C2C2C200C2C2C200C3C3C300C1C1
C100C2C2C200C3C3C300C7C7C700CACACA00CCCCCC00CFCFCF00D1D1D100D4D4
D400D7D7D700D9D9D900DBDBDB00DDCBDD00E6A4E600EF76EF00F64EF600FA37
FA00FC29FC00FD1CFD00FE0EFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00EAEA84EAEAEA
6E6E6E6E6EEAEAEAEAEAEAEA848484876ECCC5AC6EEAEAEAEAEAEAEA84EAEAEA
696E6E696EEAEAEAEAEAEAEA84EAEAEAEAEAEAEAEAEAEAEAEAEAEAEA84EAEAEA
6E6E6E6E6EEAEAEAEAEAEAEA848484846ECCC5AC6EEAEAEAEAEAEAEA84EAEAEA
696E6E696EEAEAEAEAEAEAEA84EAEAEAEAEAEAEAEAEAEAEAEAEAEAEA84EAEAEA
6E6E6E6E6EEAEAEAEAEAEAEA848484846ECCC5AC6EEAEAEAEAEAEAEA84EAEAEA
696E6E696EEAEAEAEAEA6E6E6E6E6EEAEAEAEAEAEA52525252EA6ECCC5AC6EEA
EAEAEAEAEA52EAAB52EA696E6E696EEAEAEAEAEAEA52ABEAABEAEAEAEAEAEAEA
EAEAEAEAEA52525252ABEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAAB
}
OnClick = SpeedButton3Click
end
end
object lvUseCases: TListView
Left = 0
Height = 380
Top = 41
Width = 280
Align = alClient
Checkboxes = True
Columns = <
item
Caption = 'UseCase'
Width = 250
end>
MultiSelect = True
ReadOnly = True
RowSelect = True
SortType = stText
TabOrder = 1
ViewStyle = vsReport
OnChange = lvUseCasesChange
end
object Panel13: TPanel
Left = 0
Height = 44
Top = 421
Width = 280
Align = alBottom
BevelInner = bvLowered
ClientHeight = 44
ClientWidth = 280
TabOrder = 2
object Label2: TLabel
Left = 2
Height = 40
Top = 2
Width = 276
Align = alClient
Caption = 'If there is a usecase that is not appearing in this list and should appears, make sure the usecase inherits from ucUseCase and it is not marked as abstract.'
Color = 11206655
ParentColor = False
Transparent = False
WordWrap = True
end
end
end
object PageControl2: TPageControl
Left = 281
Height = 465
Top = 124
Width = 599
ActivePage = TabSheet3
Align = alClient
TabIndex = 1
TabOrder = 1
object TabSheet2: TTabSheet
Caption = 'Usecase'
ClientHeight = 439
ClientWidth = 591
object Panel5: TPanel
Left = 0
Height = 439
Top = 0
Width = 591
Align = alClient
BevelInner = bvLowered
Caption = 'Panel5'
ClientHeight = 439
ClientWidth = 591
TabOrder = 0
object Panel6: TPanel
Left = 2
Height = 20
Top = 2
Width = 587
Align = alTop
BevelInner = bvLowered
Caption = 'UseCase code preview'
TabOrder = 0
end
inline memCode: TSynEdit
Left = 2
Height = 415
Top = 22
Width = 587
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 1
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
end
object TabSheet3: TTabSheet
Caption = 'XSD'
ClientHeight = 439
ClientWidth = 591
ImageIndex = 1
object lvXSD: TListView
Left = 0
Height = 129
Top = 0
Width = 591
Align = alTop
Columns = <
item
Caption = 'StateMachine'
Width = 150
end
item
Caption = 'Transition Name'
Width = 150
end
item
Caption = 'Triggers'
Width = 150
end
item
Caption = 'Source State'
Width = 150
end
item
Caption = 'Target State'
Width = 150
end>
MultiSelect = True
ReadOnly = True
RowSelect = True
SortType = stText
TabOrder = 0
ViewStyle = vsReport
OnChange = lvXSDChange
end
object PageControl3: TPageControl
Left = 0
Height = 310
Top = 129
Width = 591
ActivePage = TabSheet5
Align = alClient
TabIndex = 1
TabOrder = 1
object TabSheet4: TTabSheet
Caption = 'XSD In'
ClientHeight = 0
ClientWidth = 0
inline memXSDIn: TSynEdit
Left = 0
Height = 278
Top = 0
Width = 583
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
object TabSheet5: TTabSheet
Caption = 'XSD Out'
ClientHeight = 284
ClientWidth = 583
ImageIndex = 1
inline memXSDOut: TSynEdit
Left = 0
Height = 284
Top = 0
Width = 583
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
end
end
end
object General: TPageControl
Left = 1
Height = 123
Top = 1
Width = 879
ActivePage = TabSheet7
Align = alTop
TabIndex = 0
TabOrder = 2
object TabSheet7: TTabSheet
Caption = 'General'
ClientHeight = 97
ClientWidth = 871
object Panel1: TPanel
Left = 0
Height = 97
Top = 0
Width = 871
Align = alClient
Caption = 'General'
ClientHeight = 97
ClientWidth = 871
TabOrder = 0
object SpeedButton6: TSpeedButton
Left = 764
Height = 71
Top = 15
Width = 100
Anchors = [akTop]
Glyph.Data = {
361B0000424D361B000000000000360000002800000030000000300000000100
180000000000001B0000120B0000120B00000000000000000000FF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FF0066000066000066000066000066000066000066000066000066
000066002D792DB5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5
B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3006600
006600006600006600006600006600006600006600006600006600006600FF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE00009900008C0000
7300007300007300007300007300007300006600227422B5B3B3B5B3B3B5B3B3
B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3
B3B5B3B3B5B3B3B5B3B3B5B3B300660000660000660000660000660000660000
6B00007100007300007300006900006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE000099000099000099000099000099000099000099000099
00006600006600A4A3A3B6B5B4C7C6C4D6D4D2E3E0DEEDE9E7F4F1EEF9F6F3FC
F9F6FEFAF7FBF7F5F5F2F0F0EDEBEAE8E6E4E2E1DEDDDDDAD9D9DAD9D9006600
006600006600006600006600006600007A000091000099000099000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE0000990000990000
9900009900009900009900009900009900006600006600A0A0A0A0A0A0B9B8B7
CBC9C7D9D6D5E5E2E0EEEBE8F5F2EFFAF6F3FDF9F6FEFAF7FAF6F4F4F1EFEFEC
EAE9E7E5E3E1E0DDDCDCDAD9D900660000660000660000660000660000660000
7A00009100009900009900007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE000099000099000099000099000099000099000099000099
00006600006600A2A1A1A2A1A1006600006600006600006600006600006600F6
F3F0FBF7F4FDF9F6FDF9F6F9F5F3F3F0EEEDEBE9E8E6E4E2E0E0DCDBDB006600
006600006600006600006600006600007A000091000099000099000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE0000990000990000
9900009900009900009900009900009900006600006600A5A4A3A5A4A3006600
006600006600006600006600006600F1EEEBF7F4F1FBF7F5FDF9F7FDF9F6F8F4
F2F2EFEDECEAE8E7E5E4E1DFDF00660000660000660000660000660000660000
7A00009100009900009900007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE000099000099000099000099000099000099000099000099
00006600006600A9A6A6A9A6A6006600006600006600006600006600006600EA
E7E5F2EFECF8F4F2FCF8F5FEFAF7FCF8F6F7F3F1F1EEECEBE9E7E6E4E3006600
006600006600006600006600006600007A000091000099000099000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE0000990000990000
9900009900009900009900009900009900006600006600AEA9A8AEA9A8006600
006600006600006600006600006600E2DFDDECE9E6F4F0EDF9F5F2FCF8F5FEFA
F7FBF8F5F6F3F0F0EDEBEAE8E700660000660000660000660000660000660000
7A00009100009900009900007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE000099000099000099000099000099000099000099000099
00006600006600B2ADACB2ADAC006600006600006600006600006600006600D8
D6D4E4E1DFEEEAE8F5F1EFFAF6F3FDF9F6FEFAF7FAF7F4F5F1EFEFECEA006600
006600006600006600006600006600007A000091000099000099000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE0000990000990000
9900009900009900009900009900009900006600006600B8B0AFB8B0AF006600
006600006600006600006600006600CCCAC9DAD8D6E6E3E1EFECE9F6F2F0FAF7
F4FDF9F6FEFAF7F9F6F3F4F0EE00660000660000660000660000660000660000
7A00009100009900009900007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE000099000099000099000099000099000099000099000099
00006600006600BEB4B3BEB4B3006600006600006600006600006600006600BF
BDBCCFCDCBDDDAD8E8E5E3F1EDEAF7F3F0FBF7F4FDF9F6FDF9F6F8F5F2006600
006600006600006600006600006600007A000091000099000099000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE0000990000990000
9900009900009900009900009900009900006600006600C4B9B7C4B9B7006600
006600006600006600006600006600AFAEAEC2C0BFD2D0CEDFDCDAEAE6E4F2EE
ECF8F4F1FCF8F5FEFAF7FDF9F600660000660000660000660000660000660000
7A00009100009900009900007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE000099000099000099000099000099000099000099000099
00006600006600CBBEBBCBBEBB006600006600006600006600006600006600A2
A2A2B3B2B1C5C3C2D4D2D0E1DEDCEBE8E6F3F0EDF9F5F2FCF8F5FEFAF7006600
006600006600006600006600006600007A000091000099000099000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE0000990000990000
9900009900009900009900009900009900006600006600D2C2C0D2C2C0006600
006600006600006600006600006600A0A0A0A4A4A4B6B5B5C8C6C5D7D5D3E3E0
DEEDEAE7F4F1EEF9F6F3FDF9F600660000660000660000660000660000660000
7A00009100009900009900007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE000099000099000099000099000099000099000099000099
00006600006600D8C7C4D8C7C4CEC0BEC6BAB8BEB5B3B7B0AFB1ABAAABA7A7A3
A2A2A0A0A0A7A6A6BAB9B8CBC9C8D9D7D5E5E2E0EFEBE9F6F2EFFAF6F3006600
006600006600006600006600006600007A000091000099000099000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE0000990000990000
9900009900009900009900009900009900006600006600DBC9C6DBC9C6CEC0BE
C6BAB8BEB5B3B7B0AFB1ABAAABA7A7A6A4A4A2A1A1A0A0A0AAAAA9BDBCBBCECC
CADCD9D7E7E4E2F0EDEAF7F3F000660000660000660000660000660000660000
7A00009100009900009900007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE000099000099000099000099000099000099000099000099
0000990000990000990000990000990000990000990000990000990000990000
9900009900009900009900009900009900009900009900009900009900009900
0099000099000099000099000099000099000099000099000099000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE0000990000990000
9900009900009900009900009900009900009900009900009900009900009900
0099000099000099000099000099000099000099000099000099000099000099
0000990000990000990000990000990000990000990000990000990000990000
9900009900009900009900007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE000099000099000099000099000099000099000099000099
0000990000990000990000990000990000990000990000990000990000990000
9900009900009900009900009900009900009900009900009900009900009900
0099000099000099000099000099000099000099000099000099000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE0000990000990000
9900009900009900009900009900009900009900009900009900009900009900
0099000099000099000099000099000099000099000099000099000099000099
0000990000990000990000990000990000990000990000990000990000990000
9900009900009900009900007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE00009900008C0000660000660000660007740E1187211998
3321A84328B5512EC05C31C86433CB6733CB6733CB6733CB6733CB6733CB6733
CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB67
33CB6733CB6733CB6733CB6733CB670099000099000099000099000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE00009900008C0000
660000660000660007740E11872119983321A84328B5512EC05C31C86433CB67
33CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB
6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6700
9900009900009900009900007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE00009900008C000066003F893DFAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F265D58A009900009900007C000073000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE00009900008C0000
66003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F265D58A00
9900009900007300006600007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE00009900008C000066003F893DFAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F265D58A0099000099000073000066000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE00009900008C0000
66003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F265D58A00
9900009900007300006600007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE00009900008C000066003F893DFAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F265D58A0099000099000073000066000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE00009900008C0000
66003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F265D58A00
9900009900007300006600007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE00009900008C000066003F893DFAF3F2FAF3F2FAF3F2FAF3
F2C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0FAF3F2FAF3F2FAF3F265D58A0099000099000073000066000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE00009900008C0000
66003F893DFAF3F2FAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FAF3F2FAF3F265D58A00
9900009900007300006600007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE00009900008C000066003F893DFAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F265D58A0099000099000073000066000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE00009900008C0000
66003F893DFAF3F2FAF3F2FAF3F2FAF3F2ECE6E6FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F265D58A00
9900009900007300006600007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE00009900008C000066003F893DFAF3F2FAF3F2FAF3F2FAF3
F2C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0FAF3F2FAF3F2FAF3F265D58A0099000099000073000066000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE00009900008C0000
66003F893DFAF3F2FAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FAF3F2FAF3F265D58A00
9900009900007300006600007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE00009900008C000066003F893DFAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F265D58A0099000099000073000066000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE00009900008C0000
66003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F265D58A00
9900009900007300006600007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE00009900008C000066003F893DFAF3F2FAF3F2FAF3F2FAF3
F2C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0FAF3F2FAF3F2FAF3F265D58A0099000099000073000066000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE00009900008C0000
66003F893DFAF3F2FAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FAF3F2FAF3F265D58A00
9900009900007300006600007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE00009900008C000066003F893DFAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F265D58A0099000099000073000066000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE00009900008C0000
66003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F265D58A00
9900009900007300006600007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE00009900008C000066003F893DFAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F265D58A0099000099000073000066000073000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000AE00009900008C0000
66003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F265D58A00
9900009900007300006600007300006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF00660000AE0000AE00009900006600348034FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2
FAF3F2FAF3F2FAF3F2FAF3F23FCE700099000073000069000066000069000066
00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00660000660000660000
6600317D31C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2
C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2
C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C257C97E33CB6700
6600006600006600006600006600FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
}
OnClick = SpeedButton6Click
end
object rdgType: TRadioGroup
Left = 10
Height = 84
Top = 5
Width = 95
AutoFill = True
Caption = 'Type'
ChildSizing.LeftRightSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 66
ClientWidth = 91
ItemIndex = 0
Items.Strings = (
'Server'
'Client'
)
OnClick = rdgTypeClick
TabOrder = 0
end
object rdgLanguage: TRadioGroup
Left = 111
Height = 84
Top = 5
Width = 98
AutoFill = True
Caption = 'Language'
ChildSizing.LeftRightSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 66
ClientWidth = 94
ItemIndex = 0
Items.Strings = (
'Delphi'
'Java'
'C# .Net'
)
OnClick = rdgLanguageClick
TabOrder = 1
end
object GroupBox1: TGroupBox
Left = 215
Height = 84
Top = 7
Width = 537
Caption = 'Output directory'
ClientHeight = 66
ClientWidth = 533
TabOrder = 2
object SpeedButton5: TSpeedButton
Left = 503
Height = 22
Top = 33
Width = 26
Flat = True
Glyph.Data = {
36030000424D3603000000000000360000002800000010000000100000000100
18000000000000030000120B0000120B00000000000000000000FF00FF0274AC
0274AC0274AC0274AC0274AC0274AC0274AC0274AC0274AC0274AC0274AC0274
ACFF00FFFF00FFFF00FF0274AC138AC456B6E16ACBF84BBFF74ABFF74ABFF74A
BFF74ABFF64ABFF74ABFF64BC0F72398CC0C81BAFF00FFFF00FF0274AC33AAE0
2392C489D9FA54C7F854C7F753C7F854C7F754C7F854C7F854C7F853C7F7279D
CEBAEBEF0274ACFF00FF0274AC57CAF80274AC99E2FB5ED1FA5ED1FA5ED1FA5E
D1FA5ED1FA5FD1FA5ED1F85ED1F82CA1CEBAEBEF0274ACFF00FF0274AC5ED3FA
0B81B782D5EF79E0FB6ADCFA69DCFB69DCFB6ADCFB69DCFB69DCFA6ADDFB2FA6
CFBAEBEF097EB4FF00FF0274AC68DAFB2BA4D14AB1D796EBFB74E5FB74E5FB74
E5FC74E5FC74E5FB74E5FC74E5FB33A9CFBAEBEFBAEBEF0274AC0274AC70E3FB
5CD1EF1184B7FEFFFFB8F4FCBAF4FCBAF4FCBAF4FEB8F4FEBAF4FCB8F4FE83C9
DEE3FEFEC5EFF60274AC0274AC7AEBFE7AEBFC0A7FB50274AC0274AC0274AC02
74AC0274AC0274AC0274AC0274AC0274AC0274AC0274AC0274AC0274AC83F2FE
82F3FE82F3FE83F2FC83F3FE82F3FE83F2FE82F3FC83F2FE82F3FE82F3FE036F
A7FF00FFFF00FFFF00FF0274ACFEFEFE89FAFF89FAFE89FAFE8AF8FE8AFAFE89
F8FE8AFAFE8AFAFF89FAFF8AFAFF036FA7FF00FFFF00FFFF00FFFF00FF0274AC
FEFEFE8FFEFF8FFEFF8FFEFF0274AC0274AC0274AC0274AC0274AC0274ACFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FF0274AC0274AC0274AC0274ACFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
}
OnClick = SpeedButton5Click
end
object edtDirectory: TEdit
Left = 10
Height = 21
Top = 33
Width = 487
TabOrder = 0
end
end
end
end
object Options: TTabSheet
Caption = 'Options'
ClientHeight = 97
ClientWidth = 871
ImageIndex = 1
object Panel9: TPanel
Left = 380
Height = 97
Top = 0
Width = 491
Align = alClient
BevelInner = bvLowered
ClientHeight = 97
ClientWidth = 491
TabOrder = 0
object PageControl4: TPageControl
Left = 2
Height = 93
Top = 2
Width = 487
ActivePage = TabSheet8
Align = alClient
TabIndex = 0
TabOrder = 0
object TabSheet8: TTabSheet
Caption = 'Java'
ClientHeight = 67
ClientWidth = 479
object Label1: TLabel
Left = 10
Height = 13
Top = 10
Width = 73
Caption = 'Package name:'
ParentColor = False
end
object edtJavaPackageName: TEdit
Left = 89
Height = 21
Top = 5
Width = 376
OnChange = edtJavaPackageNameChange
TabOrder = 0
Text = 'Set.Package.Name.At.Options.Tab'
end
end
end
end
object Panel10: TPanel
Left = 0
Height = 97
Top = 0
Width = 380
Align = alLeft
BevelInner = bvLowered
ClientHeight = 97
ClientWidth = 380
TabOrder = 1
object ckbExportsXSD: TCheckBox
Left = 11
Height = 19
Top = 9
Width = 145
Caption = 'Export XSD file if avaliable'
Checked = True
State = cbChecked
TabOrder = 0
end
object ckbExportJPG: TCheckBox
Left = 11
Height = 19
Top = 33
Width = 335
Caption = 'Export a statemachine diagram JPG file for each selected usecase'
Checked = True
State = cbChecked
TabOrder = 1
end
end
end
end
end
end
object TabSheet6: TTabSheet
Caption = 'SQL'
ClientHeight = 590
ClientWidth = 881
ImageIndex = 1
object PageControl5: TPageControl
Left = 0
Height = 590
Top = 0
Width = 881
ActivePage = TabSheet9
Align = alClient
TabIndex = 0
TabOrder = 0
object TabSheet9: TTabSheet
Caption = 'SQL Server'
ClientHeight = 564
ClientWidth = 873
object Panel7: TPanel
Left = 0
Height = 564
Top = 0
Width = 873
Align = alClient
BevelOuter = bvLowered
ClientHeight = 564
ClientWidth = 873
TabOrder = 0
object Panel8: TPanel
Left = 1
Height = 40
Top = 1
Width = 871
Align = alTop
ClientHeight = 40
ClientWidth = 871
TabOrder = 0
object SpeedButton4: TSpeedButton
Left = 9
Height = 28
Top = 6
Width = 105
Caption = 'Generate'
OnClick = SpeedButton4Click
end
end
inline memSQLServer: TSynEdit
Left = 1
Height = 522
Top = 41
Width = 871
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 1
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
end
object TabSheet10: TTabSheet
Caption = 'Oracle'
ClientHeight = 564
ClientWidth = 873
ImageIndex = 1
object Panel11: TPanel
Left = 0
Height = 564
Top = 0
Width = 873
Align = alClient
BevelOuter = bvLowered
ClientHeight = 564
ClientWidth = 873
TabOrder = 0
object Panel12: TPanel
Left = 1
Height = 40
Top = 1
Width = 871
Align = alTop
ClientHeight = 40
ClientWidth = 871
TabOrder = 0
object SpeedButton7: TSpeedButton
Left = 9
Height = 28
Top = 6
Width = 105
Caption = 'Generate'
OnClick = SpeedButton7Click
end
end
inline memSQLOracle: TSynEdit
Left = 1
Height = 522
Top = 41
Width = 871
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 1
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
end
object TabSheet11: TTabSheet
Caption = 'DB2'
ClientHeight = 564
ClientWidth = 873
ImageIndex = 2
object Panel14: TPanel
Left = 0
Height = 564
Top = 0
Width = 873
Align = alClient
BevelOuter = bvLowered
ClientHeight = 564
ClientWidth = 873
TabOrder = 0
object Panel15: TPanel
Left = 1
Height = 40
Top = 1
Width = 871
Align = alTop
ClientHeight = 40
ClientWidth = 871
TabOrder = 0
object SpeedButton8: TSpeedButton
Left = 9
Height = 28
Top = 6
Width = 105
Caption = 'Generate'
OnClick = SpeedButton8Click
end
end
inline memSQLDB2: TSynEdit
Left = 1
Height = 522
Top = 41
Width = 871
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 1
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
end
end
end
end
end
unit fCodeGen;
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
interface
uses
{$IFnDEF FPC}
Windows,
{$ELSE}
LCLIntf, LCLType, LMessages,
{$ENDIF}
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, SynEdit,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, acuframework, IntegracaoDelphiSUML,
Buttons, utuStateMachine, acuContainers, acuModel;
const cServer = 0; cClient = 1;
cDelphi = 0; cJava = 1; cCCharp = 2;
type
TCodeGen = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Panel3: TPanel;
Panel2: TPanel;
Panel4: TPanel;
lvUseCases: TListView;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
PageControl2: TPageControl;
TabSheet2: TTabSheet;
Panel5: TPanel;
Panel6: TPanel;
memCode: TSynEdit;
TabSheet3: TTabSheet;
lvXSD: TListView;
PageControl3: TPageControl;
TabSheet4: TTabSheet;
TabSheet5: TTabSheet;
memXSDIn: TSynEdit;
memXSDOut: TSynEdit;
TabSheet6: TTabSheet;
General: TPageControl;
TabSheet7: TTabSheet;
Options: TTabSheet;
Panel1: TPanel;
SpeedButton6: TSpeedButton;
rdgType: TRadioGroup;
rdgLanguage: TRadioGroup;
GroupBox1: TGroupBox;
SpeedButton5: TSpeedButton;
edtDirectory: TEdit;
Panel9: TPanel;
PageControl4: TPageControl;
TabSheet8: TTabSheet;
Panel10: TPanel;
ckbExportsXSD: TCheckBox;
ckbExportJPG: TCheckBox;
Label1: TLabel;
edtJavaPackageName: TEdit;
PageControl5: TPageControl;
TabSheet9: TTabSheet;
TabSheet10: TTabSheet;
Panel7: TPanel;
Panel8: TPanel;
SpeedButton4: TSpeedButton;
memSQLServer: TSynEdit;
Panel11: TPanel;
Panel12: TPanel;
SpeedButton7: TSpeedButton;
memSQLOracle: TSynEdit;
Panel13: TPanel;
Label2: TLabel;
TabSheet11: TTabSheet;
Panel14: TPanel;
Panel15: TPanel;
SpeedButton8: TSpeedButton;
memSQLDB2: TSynEdit;
procedure FormShow(Sender: TObject);
procedure lvUseCasesChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure rdgTypeClick(Sender: TObject);
procedure rdgLanguageClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure lvXSDChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure SpeedButton4Click(Sender: TObject);
procedure edtJavaPackageNameChange(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
private
{ Private declarations }
fUtil: TUtil;
fFileExtension: string;
procedure ListUseCases;
function GetGenerateCodeProcedure: TProcCodeGen;
procedure ShowCodePreview(piUseCase: acUseCaseTicket);
procedure GetTransitionsWithXsd(const piStateMachine: utStateMachine; const poTransitions: acObjectList);
function SuggestFileName(piValue: string; piExtension: boolean = false): string;
Function GenCode(piUseCaseCode: String): string;
public
{ Public declarations }
property Util: TUtil read fUtil write fUtil;
property GenerateCodeProcedure: TProcCodeGen read GetGenerateCodeProcedure;
property FileExtension: string read fFileExtension write fFileExtension;
end;
var
CodeGen: TCodeGen;
implementation
uses acuObject, FileCtrl, strutils;
{$R *.dfm}
{ TCodeGen }
procedure TCodeGen.edtJavaPackageNameChange(Sender: TObject);
begin
if Assigned(lvUseCases.Selected) then
ShowCodePreview(acUseCaseTicket(lvUseCases.Selected.Data));
end;
procedure TCodeGen.FormShow(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
try
ListUseCases;
finally
Screen.Cursor := crDefault;
end;
end;
procedure TCodeGen.ShowCodePreview(piUseCase: acUseCaseTicket);
var lTransitions: acObjectList;
lItem: TListItem;
lTransition: utTransition;
lEnum: acEnumerator;
lTriggerEnum: acEnumerator;
lTrigger: utTrigger;
lTriggersName: string;
begin
memCode.Lines.Text := GenCode(piUseCase.Code);
if memCode.Lines.Text = '' then memCode.Lines.Text := 'Language not yet supported';
lTransitions := acObjectList.Create();
try
GetTransitionsWithXsd(piUseCase.StateMachine, lTransitions);
lvXSD.Clear;
lEnum := lTransitions.GetEnumerator;
while not lEnum.EOL do
begin
lTransition := utTransition(lEnum.Current);
lTriggersName := '';
lTriggerEnum := lTransition.GetTriggersEnumerator;
try
while not lTriggerEnum.EOL do
begin
lTrigger := utTrigger(lTriggerEnum.Current);
lTriggersName := lTriggersName + lTrigger.Name + '; ';
lTriggerEnum.MoveNext;
end;
finally
lTriggerEnum.free;
end;
if lTriggersName <> '' then lTriggersName := LeftStr(lTriggersName, Length(lTriggersName) - 2);
lItem := lvXSD.Items.Add;
lItem.Caption := lTransition.Owner.Owner.Name;
lItem.SubItems.Add(lTransition.Name);
lItem.SubItems.Add(lTriggersName);
lItem.SubItems.Add(lTransition.SourceState.Name);
lItem.SubItems.Add(lTransition.TargetState.Name);
lItem.Data := lTransition;
lEnum.MoveNext;
end;
finally
lTransitions.Free;
end;
end;
procedure TCodeGen.SpeedButton1Click(Sender: TObject);
var I: integer;
begin
for I := 0 to lvUseCases.Items.Count - 1 do
lvUseCases.Items[i].Checked := true;
end;
procedure TCodeGen.SpeedButton2Click(Sender: TObject);
var I: integer;
begin
for I := 0 to lvUseCases.Items.Count - 1 do
if lvUseCases.Items[i].Selected then
lvUseCases.Items[i].Checked := true;
end;
procedure TCodeGen.SpeedButton3Click(Sender: TObject);
var I: integer;
begin
for I := 0 to lvUseCases.Items.Count - 1 do
lvUseCases.Items[i].Checked := false;
end;
procedure TCodeGen.SpeedButton4Click(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
try
memSQLServer.Clear;
memSQLServer.Lines.Text := Util.GerarFullSQLPreview(dbvSQLServer);
finally
Screen.Cursor := crDefault;
end;
end;
procedure TCodeGen.SpeedButton5Click(Sender: TObject);
var lDir: string;
begin
lDir := '';
SelectDirectory('Generate code to', '', lDir);
edtDirectory.Text := ldir;
end;
procedure TCodeGen.SpeedButton6Click(Sender: TObject);
var I: integer;
lCode: TStrings;
lTransitions: acObjectList;
lTransition: utTransition;
lEnum: acEnumerator;
lTargetDir, lDocTargetDir: string;
begin
if (Trim(edtDirectory.Text) = '') then
raise Exception.Create('Directory not specified.');
lTargetDir := IncludeTrailingPathDelimiter(edtDirectory.Text);
if not DirectoryExists(lTargetDir) then
raise Exception.Create('Directory "' + lTargetDir + '" does not exists.');
if not assigned(GenerateCodeProcedure) then
raise Exception.Create('Language not yet supported.');
Screen.Cursor := crHourGlass;
try
lCode := TStringList.Create;
try
for I := 0 to lvUseCases.Items.Count - 1 do
if lvUseCases.Items[i].Checked then
begin
lDocTargetDir := IncludeTrailingPathDelimiter(lTargetDir + lvUseCases.Items[i].Caption);
if not DirectoryExists(lDocTargetDir) then
CreateDir(lDocTargetDir);
lCode.Clear;
lCode.Text := GenCode(acUseCaseTicket(lvUseCases.Items[i].Data).Code);
lCode.SaveToFile(lTargetDir + SuggestFileName(lvUseCases.Items[i].Caption,true));
// if ckbExportJPG.Checked then
// Util.SaveUseCaseDiagramJPG(lvUseCases.Items[i].Caption, lDocTargetDir);
if ckbExportsXSD.Checked then
begin
//XSDs
lTransitions := acObjectList.Create();
try
GetTransitionsWithXsd(acUseCaseTicket(lvUseCases.Items[i].Data).StateMachine, lTransitions);
lvXSD.Clear;
lEnum := lTransitions.GetEnumerator;
while not lEnum.EOL do
begin
lTransition := utTransition(lEnum.Current);
if lTransition.XsdIn.XML <> '' then
begin
lCode.Clear;
lCode.Text := lTransition.XsdIn.XML;
lCode.SaveToFile(lDocTargetDir + lvUseCases.Items[i].Caption + '_' + lTransition.Name + '_XsdIn.xsd');
end;
if lTransition.XsdOut.XML <> '' then
begin
lCode.Clear;
lCode.Text := lTransition.XsdOut.XML;
lCode.SaveToFile(lDocTargetDir + lvUseCases.Items[i].Caption + '_' + lTransition.Name + '_XsdOut.xsd');
end;
lEnum.MoveNext;
end;
finally
lTransitions.Free;
end;
end;
end;
finally
lCode.Free;
end;
//? if ckbExportJPG.Checked then
//? Util.SaveAllDiagrams(lTargetDir);
finally
Screen.Cursor := crDefault;
end;
Application.MessageBox('Code generated successefully.','Conexo', MB_ICONINFORMATION);
end;
procedure TCodeGen.SpeedButton7Click(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
try
memSQLOracle.Clear;
memSQLOracle.Lines.Text := Util.GerarFullSQLPreview(dbvOracle);
finally
Screen.Cursor := crDefault;
end;
end;
procedure TCodeGen.SpeedButton8Click(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
try
memSQLDB2.Clear;
memSQLDB2.Lines.Text := Util.GerarFullSQLPreview(dbvDB2);
finally
Screen.Cursor := crDefault;
end;
end;
function TCodeGen.SuggestFileName(piValue: string; piExtension: boolean = false): string;
var lFileName: string;
begin
case rdgLanguage.ItemIndex of
cDelphi:
begin
lFileName := copy(piValue,1,2) + 'u' + copy(piValue,3,length(piValue)-2);
end;
cJava:
begin
lFileName := copy(piValue,1,2) + copy(piValue,3,length(piValue)-2);
end;
cCCharp:
begin
lFileName := copy(piValue,1,2) + copy(piValue,3,length(piValue)-2);
end;
end;
if piExtension then
lFileName := lFileName + FileExtension;
result := lFileName;
end;
function TCodeGen.GenCode(piUseCaseCode: String): string;
var lCodeGenParams: TCodeGenParams;
begin
lCodeGenParams := nil;
result := '';
if assigned(@GenerateCodeProcedure) then
begin
try
case rdgLanguage.ItemIndex of
cDelphi:
begin
lCodeGenParams := TCodeGenParamsUseCase.Create;
end;
cJava:
begin
lCodeGenParams := TCodeGenParamsUseCaseJava.Create;
TCodeGenParamsUseCaseJava(lCodeGenParams).JavaClientPackageName := edtJavaPackageName.Text;
end;
cCCharp:
begin
lCodeGenParams := TCodeGenParamsUseCase.Create;
end;
end;
TCodeGenParamsUseCase(lCodeGenParams).UseCaseCode := piUseCaseCode;
result := GenerateCodeProcedure(lCodeGenParams);
finally
if assigned(lCodeGenParams) then lCodeGenParams.Free;
end;
end;
end;
function TCodeGen.GetGenerateCodeProcedure: TProcCodeGen;
begin
case rdgLanguage.ItemIndex of
cDelphi:
begin
FileExtension := '.pas';
// memCode.Highlighter := hlPascal;
case rdgType.ItemIndex of
cServer: result := Util.GerarUseCaseServerPreview_Pascal;
cClient: result := nil;
end;
end;
cJava:
begin
FileExtension := '.java';
// memCode.Highlighter := hlJava;
case rdgType.ItemIndex of
cServer: result := nil;
cClient: result := Util.GerarUseCaseClientPreview_Java;
end;
end;
cCCharp:
begin
FileExtension := '.cs';
// memCode.Highlighter := hlCSharp;
case rdgType.ItemIndex of
cServer: result := nil;
cClient: result := Util.GerarUseCaseClientPreview_DotNet;
end;
end;
end;
end;
procedure TCodeGen.GetTransitionsWithXsd(const piStateMachine: utStateMachine; const poTransitions: acObjectList);
var lTransitionEnum, lStateEnum: acEnumerator;
lState: utState;
lTransition: utTransition;
begin
lStateEnum := piStateMachine.GetStatesEnumerator;
try
while not lStateEnum.EOL do
begin
lState := utState(lStateEnum.Current);
lTransitionEnum := lState.GetOutgoingTransitionsEnumerator;
try
while not lTransitionEnum.EOL do
begin
lTransition := utTransition(lTransitionEnum.Current);
if (lTransition.XsdIn.XML <> '') or (lTransition.XsdOut.XML <> '') then
poTransitions.Add(lTransition);
// lTriggersEnum := lTransition.GetTriggersEnumerator;
// try
// while not lTriggersEnum.EOL do
// begin
// lTrigger := utTrigger(lTriggersEnum.Current);
//
// lTriggersEnum.MoveNext;
// end;
// finally
// lTriggersEnum.Free;
// end;
lTransitionEnum.MoveNext;
end;
finally
lTransitionEnum.Free;
end;
if lState is utSubMachineState then
GetTransitionsWithXsd(utSubMachineState(lState).StateMachine, poTransitions);
lStateEnum.MoveNext;
end;
finally
lStateEnum.Free;
end;
end;
procedure TCodeGen.ListUseCases;
var lListItem: TListItem;
lEnum: acEnumerator;
lMetaModel: acMetaModel;
lUseCaseTicket: acUseCaseTicket;
begin
lMetaModel := Util.MetaModel;
lEnum := lMetaModel.UseCaseTickets.GetEnumerator;
try
while not lEnum.EOL do
begin
lUseCaseTicket := acUseCaseTicket(lEnum.Current);
lListItem := lvUseCases.Items.Add;
lListItem.Caption := lUseCaseTicket.Name;
lListItem.Data := lUseCaseTicket;
lEnum.MoveNext;
end;
finally
lEnum.Free;
end;
end;
procedure TCodeGen.lvUseCasesChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
if Assigned(lvUseCases.Selected) then
ShowCodePreview(acUseCaseTicket(lvUseCases.Selected.Data));
end;
procedure TCodeGen.lvXSDChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
if Assigned(lvXSD.Selected) then
begin
memXSDIn.Lines.Text := utTransition(lvXSD.Selected.Data).XsdIn.XML;
memXSDOut.Lines.Text := utTransition(lvXSD.Selected.Data).XsdOut.XML;
end;
end;
procedure TCodeGen.rdgLanguageClick(Sender: TObject);
begin
if Assigned(lvUseCases.Selected) then
ShowCodePreview(acUseCaseTicket(lvUseCases.Selected.Data));
end;
procedure TCodeGen.rdgTypeClick(Sender: TObject);
begin
if Assigned(lvUseCases.Selected) then
ShowCodePreview(acUseCaseTicket(lvUseCases.Selected.Data));
end;
end.
object ModelMappingsGenerationOptions: TModelMappingsGenerationOptions
Left = 640
Height = 464
Top = 251
Width = 376
BorderStyle = bsDialog
Caption = 'Model Mappings options'
ClientHeight = 464
ClientWidth = 376
Color = clBtnFace
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
OnDestroy = FormDestroy
OnShow = FormShow
Position = poDesktopCenter
LCLVersion = '2.1.0.0'
object Panel1: TPanel
Left = 0
Height = 48
Top = 416
Width = 376
Align = alBottom
ClientHeight = 48
ClientWidth = 376
TabOrder = 0
object BitBtn1: TBitBtn
Left = 199
Height = 34
Top = 8
Width = 75
Caption = 'Generate'
Default = True
Glyph.Data = {
36050000424D3605000000000000360400002800000010000000100000000100
0800000000000001000000000000000000000001000000010000009800000098
0000009800000098000000980000009800000098000000980000009800000098
000000970000009700000095000000920000018E010001880100028002000475
040007630700095409000C450C000F3A0F0010341000132D1300152715001720
17001A1A1A001B1B1B001C1C1C001D1D1D001E1E1E001F1F1F00202020002121
2100222222002323230024242400252525002626260027272700282828002929
29002A2A2A002B2B2B002C2C2C002D2D2D002E2E2E002F2F2F00303030003131
3100323232003333330034343400353535003636360037373700383838003939
39003A3A3A003B3B3B003C3C3C003D3D3D003E3E3E003F3F3F00404040004141
4100424242004343430044444400454545004646460047474700484848004949
49004A4A4A004B4B4B004C4C4C004D4D4D004E4E4E004F4F4F00505050005151
5100525252005353530054545400555555005656560057575700585858005959
59005A5A5A005B5B5B005C5C5C005D5D5D005E5E5E006867650073706C007D78
7300958F8800A9A29A00B9B2AA00CAC2B800D9D0C500E8DED200F1E8DD00F8F0
E700FBF5ED00FDF8F200FEF9F500FEFAF600FEFBF700FEFCF800FEFCF900FEFC
FA00FEFCFA00FEFCFA00FEFCFA00FEFCF900FEFBF800FEFBF700FEFAF400FEF9
F200FEF8F000FEF7EF00FEF7EE00FEF6ED00FEF6EC00FEF5EB00FEF5EA00FEF4
E900FEF4E800FEF3E600FEF2E400FEF1E200FEF0DE00FEEFDD00FEEEDB00FEED
DA00FEEDD900FEEDD900FEEDD800FEECD800FEECD700FEEBD600FEEBD500FEEB
D400FEEAD300FEE9D100FEE8CF00FEE8CE00FEE7CC00FEE5C900FEE3C500FEE2
C200FEE1C000FEE0BE00FEDFBD00FEDFBC00FEDFBC00FEDEBB00FEDEBA00FEDD
B900FEDDB800FDDCB700FDDCB600FDDBB500FDDBB500FCDBB700FBDBB800F9DB
B900F6DABA00F1D7BA00EAD3BA00E2CFB900D9C9B700CBC0B400C1BAB200B5B3
B100B2B2B200B3B3B300B4B4B400B5B5B500B6B6B600B7B7B700B8B8B800B9B9
B900BABABA00BBBBBB00BCBCBC00BDBDBD00BEBEBE00BFBFBF00C0C0C000C4B5
C400C9A9C900CD9FCD00D295D200D58BD500DB7ADB00E263E200E850E800ED40
ED00F133F100F526F500F916F900FB0CFB00FD07FD00FD04FD00FE02FE00FE01
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE01FC00FA0CE500F420C000EC3A8C00E5515F00DE653700DB712100D87A
0F00D77E0700D6800200D6810100D6810000D6810000D5820000D5820000D582
0000D5820000D5820000D5820000D5820000D5820000D5820000DEDEDEDEDEDE
DEDEDEDEDEDEDEDEDEDEDEDEFBFBFBFBFBFBFBFBFBFBFBFBDEDEDEFB88909496
98999DA2A5A5A5A5FBDEDEFB868990939798999CA2A5A5A5FBDEDEFB84090909
09090909090909A5FBDEDEFB80848688909496989A9DA2A5FBDEDEFB7C090909
09090909090909A2FBDEDEFB797C80838688909497989A9DFBDEDEFB6E090909
090909090909099AFBDEDEFB726E797C8184868890949698FBDEDEFB71090909
0909090909090997FBDEDEFB7171756E797C808387889094FBDEDEFB71090909
0909090909090990FBDEDEFB71717171756E797C80838688FBDEDEDEFBFBFBFB
FBFBFBFBFBFBFBFBDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDE
}
OnClick = BitBtn1Click
TabOrder = 1
end
object BitBtn2: TBitBtn
Left = 289
Height = 34
Top = 8
Width = 75
Cancel = True
Caption = 'Cancel'
Glyph.Data = {
DE010000424DDE01000000000000760000002800000024000000120000000100
0400000000006801000000000000000000001000000000000000000000000000
80000080000000808000800000008000800080800000C0C0C000808080000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
333333333333333333333333000033338833333333333333333F333333333333
0000333911833333983333333388F333333F3333000033391118333911833333
38F38F333F88F33300003339111183911118333338F338F3F8338F3300003333
911118111118333338F3338F833338F3000033333911111111833333338F3338
3333F8330000333333911111183333333338F333333F83330000333333311111
8333333333338F3333383333000033333339111183333333333338F333833333
00003333339111118333333333333833338F3333000033333911181118333333
33338333338F333300003333911183911183333333383338F338F33300003333
9118333911183333338F33838F338F33000033333913333391113333338FF833
38F338F300003333333333333919333333388333338FFF830000333333333333
3333333333333333333888330000333333333333333333333333333333333333
0000
}
ModalResult = 2
NumGlyphs = 2
TabOrder = 0
end
object BitBtn3: TBitBtn
Left = 7
Height = 19
Top = 23
Width = 111
Caption = 'Retrieve last params'
OnClick = BitBtn3Click
TabOrder = 2
end
object ckbDefault: TCheckBox
Left = 7
Height = 19
Top = 3
Width = 55
Caption = 'Default'
Checked = True
State = cbChecked
TabOrder = 3
end
end
object Panel2: TPanel
Left = 0
Height = 416
Top = 0
Width = 376
Align = alClient
ClientHeight = 416
ClientWidth = 376
TabOrder = 1
object Label1: TLabel
Left = 14
Height = 13
Top = 17
Width = 84
Caption = 'Output directory:'
ParentColor = False
end
object SpeedButton1: TSpeedButton
Left = 341
Height = 22
Top = 7
Width = 23
Flat = True
Glyph.Data = {
36030000424D3603000000000000360000002800000010000000100000000100
18000000000000030000120B0000120B00000000000000000000FF00FF078DBE
078DBE078DBE078DBE078DBE078DBE078DBE078DBE078DBE078DBE078DBE078D
BE078DBEFF00FFFF00FF078DBE25A1D172C7E785D7FA66CDF965CDF965CDF965
CDF965CDF865CDF965CDF866CEF939ADD8078DBEFF00FFFF00FF078DBE4CBCE7
39A8D1A0E2FB6FD4FA6FD4F96ED4FA6FD4F96FD4FA6FD4FA6FD4FA6ED4F93EB1
D984D7EB078DBEFF00FF078DBE72D6FA078DBEAEEAFC79DCFB79DCFB79DCFB79
DCFB79DCFB7ADCFB79DCFA79DCFA44B5D9AEF1F9078DBEFF00FF078DBE79DDFB
1899C79ADFF392E7FB84E4FB83E4FC83E4FC84E4FC83E4FC83E4FB84E5FC48B9
DAB3F4F9078DBEFF00FF078DBE82E3FC43B7DC65C3E0ACF0FD8DEBFC8DEBFC8D
EBFD8DEBFD8DEBFC8DEBFD0C85184CBBDAB6F7F96DCAE0078DBE078DBE8AEAFC
77DCF3229CC6FDFFFFC8F7FEC9F7FEC9F7FEC9F7FEC8F7FE0C85183CBC5D0C85
18DEF9FBD6F6F9078DBE078DBE93F0FE93F0FD1697C5078DBE078DBE078DBE07
8DBE078DBE0C851852D97F62ED9741C4650C8518078DBE078DBE078DBE9BF5FE
9AF6FE9AF6FE9BF5FD9BF6FE9AF6FE9BF5FE0C851846CE6C59E48858E18861EB
9440C1650C8518FF00FF078DBEFEFEFEA0FBFFA0FBFEA0FBFEA1FAFEA1FBFE0C
85180C85180C85180C851856E18447CD6E0C85180C85180C8518FF00FF078DBE
FEFEFEA5FEFFA5FEFFA5FEFF078CB643B7DC43B7DC43B7DC0C85184EDD7936BA
540C8518FF00FFFF00FFFF00FFFF00FF078DBE078DBE078DBE078DBEFF00FFFF
00FFFF00FFFF00FF0C851840D0650C8518FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0C85182AB7432DBA490C85
18FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FF0C851821B5380C8518FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FF0C85180C85180C85180C8518FF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0C85180C85180C
85180C8518FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
}
OnClick = SpeedButton1Click
end
object GroupBox1: TGroupBox
Left = 8
Height = 56
Top = 248
Width = 360
Caption = 'Output file name'
ClientHeight = 38
ClientWidth = 356
TabOrder = 2
object lblFileExists: TLabel
Left = 13
Height = 14
Top = 43
Width = 194
Caption = 'File already exists at specified directory.'
Font.CharSet = ANSI_CHARSET
Font.Color = clRed
Font.Height = -11
Font.Name = 'Arial'
ParentColor = False
ParentFont = False
end
object edtFileName: TEdit
Left = 8
Height = 21
Top = 0
Width = 338
OnChange = edtFileNameChange
TabOrder = 0
end
end
object GroupBox2: TGroupBox
Left = 8
Height = 48
Top = 296
Width = 360
Caption = 'Options'
ClientHeight = 30
ClientWidth = 356
TabOrder = 0
object ckbIgnoreXSD: TCheckBox
Left = 6
Height = 19
Top = 0
Width = 113
Caption = 'Ignore XSD schema'
TabOrder = 0
end
end
object GroupBox3: TGroupBox
Left = 8
Height = 56
Top = 352
Width = 360
Caption = 'Target Code Laguage'
ClientHeight = 38
ClientWidth = 356
TabOrder = 1
object rdObjectPascal: TRadioButton
Left = 13
Height = 19
Top = 8
Width = 85
Caption = 'Object Pascal'
TabOrder = 0
end
object rdCSharp: TRadioButton
Left = 145
Height = 19
Top = 8
Width = 35
Caption = 'C#'
TabOrder = 1
end
object rdJava: TRadioButton
Left = 238
Height = 19
Top = 8
Width = 43
Caption = 'Java'
TabOrder = 2
end
end
object dlbDirectory: TShellTreeView
Left = 8
Height = 192
Top = 40
Width = 360
FileSortType = fstNone
TabOrder = 3
ObjectTypes = [otFolders]
end
end
object OpenDialog1: TOpenDialog
Filter = '.pas|*.pas'
Left = 184
Top = 24
end
end
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TModelMappingsGenerationOptions','FORMDATA',[
'TPF0'#31'TModelMappingsGenerationOptions'#30'ModelMappingsGenerationOptions'
+#4'Left'#3#128#2#6'Height'#3#208#1#3'Top'#3#251#0#5'Width'#3'x'#1#11'BorderS'
+'tyle'#7#8'bsDialog'#7'Caption'#6#22'Model Mappings options'#12'ClientHeight'
+#3#208#1#11'ClientWidth'#3'x'#1#5'Color'#7#9'clBtnFace'#10'Font.Color'#7#12
+'clWindowText'#11'Font.Height'#2#245#9'Font.Name'#6#6'Tahoma'#9'OnDestroy'#7
+#11'FormDestroy'#6'OnShow'#7#8'FormShow'#8'Position'#7#15'poDesktopCenter'#10
+'LCLVersion'#6#7'2.1.0.0'#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'Height'#2'0'#3
+'Top'#3#160#1#5'Width'#3'x'#1#5'Align'#7#8'alBottom'#12'ClientHeight'#2'0'#11
+'ClientWidth'#3'x'#1#8'TabOrder'#2#0#0#7'TBitBtn'#7'BitBtn1'#4'Left'#3#199#0
+#6'Height'#2'"'#3'Top'#2#8#5'Width'#2'K'#7'Caption'#6#8'Generate'#7'Default'
+#9#10'Glyph.Data'#10':'#5#0#0'6'#5#0#0'BM6'#5#0#0#0#0#0#0'6'#4#0#0'('#0#0#0
+#16#0#0#0#16#0#0#0#1#0#8#0#0#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#1#0#0#0#1#0#0#0
+#152#0#0#0#152#0#0#0#152#0#0#0#152#0#0#0#152#0#0#0#152#0#0#0#152#0#0#0#152#0
+#0#0#152#0#0#0#152#0#0#0#151#0#0#0#151#0#0#0#149#0#0#0#146#0#0#1#142#1#0#1
+#136#1#0#2#128#2#0#4'u'#4#0#7'c'#7#0#9'T'#9#0#12'E'#12#0#15':'#15#0#16'4'#16
+#0#19'-'#19#0#21''''#21#0#23' '#23#0#26#26#26#0#27#27#27#0#28#28#28#0#29#29
+#29#0#30#30#30#0#31#31#31#0' '#0'!!!'#0'"""'#0'###'#0'$$$'#0'%%%'#0'&&&'#0
+''''''''#0'((('#0')))'#0'***'#0'+++'#0',,,'#0'---'#0'...'#0'///'#0'000'#0'11'
+'1'#0'222'#0'333'#0'444'#0'555'#0'666'#0'777'#0'888'#0'999'#0':::'#0';;;'#0
+'<<<'#0'==='#0'>>>'#0'???'#0'@@@'#0'AAA'#0'BBB'#0'CCC'#0'DDD'#0'EEE'#0'FFF'#0
+'GGG'#0'HHH'#0'III'#0'JJJ'#0'KKK'#0'LLL'#0'MMM'#0'NNN'#0'OOO'#0'PPP'#0'QQQ'#0
+'RRR'#0'SSS'#0'TTT'#0'UUU'#0'VVV'#0'WWW'#0'XXX'#0'YYY'#0'ZZZ'#0'[[['#0'\\\'#0
+']]]'#0'^^^'#0'hge'#0'spl'#0'}xs'#0#149#143#136#0#169#162#154#0#185#178#170#0
+#202#194#184#0#217#208#197#0#232#222#210#0#241#232#221#0#248#240#231#0#251
+#245#237#0#253#248#242#0#254#249#245#0#254#250#246#0#254#251#247#0#254#252
+#248#0#254#252#249#0#254#252#250#0#254#252#250#0#254#252#250#0#254#252#250#0
+#254#252#249#0#254#251#248#0#254#251#247#0#254#250#244#0#254#249#242#0#254
+#248#240#0#254#247#239#0#254#247#238#0#254#246#237#0#254#246#236#0#254#245
+#235#0#254#245#234#0#254#244#233#0#254#244#232#0#254#243#230#0#254#242#228#0
+#254#241#226#0#254#240#222#0#254#239#221#0#254#238#219#0#254#237#218#0#254
+#237#217#0#254#237#217#0#254#237#216#0#254#236#216#0#254#236#215#0#254#235
+#214#0#254#235#213#0#254#235#212#0#254#234#211#0#254#233#209#0#254#232#207#0
+#254#232#206#0#254#231#204#0#254#229#201#0#254#227#197#0#254#226#194#0#254
+#225#192#0#254#224#190#0#254#223#189#0#254#223#188#0#254#223#188#0#254#222
+#187#0#254#222#186#0#254#221#185#0#254#221#184#0#253#220#183#0#253#220#182#0
+#253#219#181#0#253#219#181#0#252#219#183#0#251#219#184#0#249#219#185#0#246
+#218#186#0#241#215#186#0#234#211#186#0#226#207#185#0#217#201#183#0#203#192
+#180#0#193#186#178#0#181#179#177#0#178#178#178#0#179#179#179#0#180#180#180#0
+#181#181#181#0#182#182#182#0#183#183#183#0#184#184#184#0#185#185#185#0#186
+#186#186#0#187#187#187#0#188#188#188#0#189#189#189#0#190#190#190#0#191#191
+#191#0#192#192#192#0#196#181#196#0#201#169#201#0#205#159#205#0#210#149#210#0
+#213#139#213#0#219'z'#219#0#226'c'#226#0#232'P'#232#0#237'@'#237#0#241'3'#241
+#0#245'&'#245#0#249#22#249#0#251#12#251#0#253#7#253#0#253#4#253#0#254#2#254#0
+#254#1#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254
+#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0
+#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254
+#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0
+#254#1#252#0#250#12#229#0#244' '#192#0#236':'#140#0#229'Q_'#0#222'e7'#0#219
+'q!'#0#216'z'#15#0#215'~'#7#0#214#128#2#0#214#129#1#0#214#129#0#0#214#129#0#0
+#213#130#0#0#213#130#0#0#213#130#0#0#213#130#0#0#213#130#0#0#213#130#0#0#213
+#130#0#0#213#130#0#0#213#130#0#0#222#222#222#222#222#222#222#222#222#222#222
+#222#222#222#222#222#222#222#251#251#251#251#251#251#251#251#251#251#251#251
+#222#222#222#251#136#144#148#150#152#153#157#162#165#165#165#165#251#222#222
+#251#134#137#144#147#151#152#153#156#162#165#165#165#251#222#222#251#132#9#9
+#9#9#9#9#9#9#9#9#165#251#222#222#251#128#132#134#136#144#148#150#152#154#157
+#162#165#251#222#222#251'|'#9#9#9#9#9#9#9#9#9#9#162#251#222#222#251'y|'#128
+#131#134#136#144#148#151#152#154#157#251#222#222#251'n'#9#9#9#9#9#9#9#9#9#9
+#154#251#222#222#251'rny|'#129#132#134#136#144#148#150#152#251#222#222#251'q'
+#9#9#9#9#9#9#9#9#9#9#151#251#222#222#251'qquny|'#128#131#135#136#144#148#251
+#222#222#251'q'#9#9#9#9#9#9#9#9#9#9#144#251#222#222#251'qqqquny|'#128#131#134
+#136#251#222#222#222#251#251#251#251#251#251#251#251#251#251#251#251#222#222
+#222#222#222#222#222#222#222#222#222#222#222#222#222#222#222#222#7'OnClick'#7
+#12'BitBtn1Click'#8'TabOrder'#2#1#0#0#7'TBitBtn'#7'BitBtn2'#4'Left'#3'!'#1#6
+'Height'#2'"'#3'Top'#2#8#5'Width'#2'K'#6'Cancel'#9#7'Caption'#6#6'Cancel'#10
,'Glyph.Data'#10#226#1#0#0#222#1#0#0'BM'#222#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0
+'$'#0#0#0#18#0#0#0#1#0#4#0#0#0#0#0'h'#1#0#0#0#0#0#0#0#0#0#0#16#0#0#0#0#0#0#0
+#0#0#0#0#0#0#128#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0
+#192#192#192#0#128#128#128#0#0#0#255#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0
+#255#0#255#255#0#0#255#255#255#0'333333333333333333'#0#0'33'#136'33333333?33'
+'3333'#0#0'39'#17#131'33'#152'3333'#136#243'33?33'#0#0'39'#17#24'39'#17#131
+'338'#243#143'3?'#136#243'3'#0#0'39'#17#17#131#145#17#24'338'#243'8'#243#248
+'3'#143'3'#0#0'33'#145#17#24#17#17#24'338'#243'3'#143#131'38'#243#0#0'339'#17
+#17#17#17#131'333'#143'3833'#248'3'#0#0'333'#145#17#17#24'33338'#243'33?'#131
+'3'#0#0'3331'#17#17#131'33333'#143'33833'#0#0'3339'#17#17#131'333338'#243'3'
+#131'33'#0#0'333'#145#17#17#131'33333833'#143'33'#0#0'339'#17#24#17#24'33333'
+#131'33'#143'33'#0#0'33'#145#17#131#145#17#131'333838'#243'8'#243'3'#0#0'33'
+#145#24'39'#17#24'333'#143'3'#131#143'3'#143'3'#0#0'339'#19'33'#145#17'333'
+#143#248'38'#243'8'#243#0#0'3333339'#25'3338'#131'33'#143#255#131#0#0'333333'
+'3333333338'#136'3'#0#0'333333333333333333'#0#0#11'ModalResult'#2#2#9'NumGly'
+'phs'#2#2#8'TabOrder'#2#0#0#0#7'TBitBtn'#7'BitBtn3'#4'Left'#2#7#6'Height'#2
+#19#3'Top'#2#23#5'Width'#2'o'#7'Caption'#6#20'Retrieve last params'#7'OnClic'
+'k'#7#12'BitBtn3Click'#8'TabOrder'#2#2#0#0#9'TCheckBox'#10'ckbDefault'#4'Lef'
+'t'#2#7#6'Height'#2#19#3'Top'#2#3#5'Width'#2'7'#7'Caption'#6#7'Default'#7'Ch'
+'ecked'#9#5'State'#7#9'cbChecked'#8'TabOrder'#2#3#0#0#0#6'TPanel'#6'Panel2'#4
+'Left'#2#0#6'Height'#3#160#1#3'Top'#2#0#5'Width'#3'x'#1#5'Align'#7#8'alClien'
+'t'#12'ClientHeight'#3#160#1#11'ClientWidth'#3'x'#1#8'TabOrder'#2#1#0#6'TLab'
+'el'#6'Label1'#4'Left'#2#14#6'Height'#2#13#3'Top'#2#17#5'Width'#2'T'#7'Capti'
+'on'#6#17'Output directory:'#11'ParentColor'#8#0#0#12'TSpeedButton'#12'Speed'
+'Button1'#4'Left'#3'U'#1#6'Height'#2#22#3'Top'#2#7#5'Width'#2#23#4'Flat'#9#10
+'Glyph.Data'#10':'#3#0#0'6'#3#0#0'BM6'#3#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0
+#0#16#0#0#0#1#0#24#0#0#0#0#0#0#3#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#255
+#0#255#7#141#190#7#141#190#7#141#190#7#141#190#7#141#190#7#141#190#7#141#190
+#7#141#190#7#141#190#7#141#190#7#141#190#7#141#190#7#141#190#255#0#255#255#0
+#255#7#141#190'%'#161#209'r'#199#231#133#215#250'f'#205#249'e'#205#249'e'#205
+#249'e'#205#249'e'#205#248'e'#205#249'e'#205#248'f'#206#249'9'#173#216#7#141
+#190#255#0#255#255#0#255#7#141#190'L'#188#231'9'#168#209#160#226#251'o'#212
+#250'o'#212#249'n'#212#250'o'#212#249'o'#212#250'o'#212#250'o'#212#250'n'#212
+#249'>'#177#217#132#215#235#7#141#190#255#0#255#7#141#190'r'#214#250#7#141
+#190#174#234#252'y'#220#251'y'#220#251'y'#220#251'y'#220#251'y'#220#251'z'
+#220#251'y'#220#250'y'#220#250'D'#181#217#174#241#249#7#141#190#255#0#255#7
+#141#190'y'#221#251#24#153#199#154#223#243#146#231#251#132#228#251#131#228
+#252#131#228#252#132#228#252#131#228#252#131#228#251#132#229#252'H'#185#218
+#179#244#249#7#141#190#255#0#255#7#141#190#130#227#252'C'#183#220'e'#195#224
+#172#240#253#141#235#252#141#235#252#141#235#253#141#235#253#141#235#252#141
+#235#253#12#133#24'L'#187#218#182#247#249'm'#202#224#7#141#190#7#141#190#138
+#234#252'w'#220#243'"'#156#198#253#255#255#200#247#254#201#247#254#201#247
+#254#201#247#254#200#247#254#12#133#24'<'#188']'#12#133#24#222#249#251#214
+#246#249#7#141#190#7#141#190#147#240#254#147#240#253#22#151#197#7#141#190#7
+#141#190#7#141#190#7#141#190#7#141#190#12#133#24'R'#217#127'b'#237#151'A'#196
+'e'#12#133#24#7#141#190#7#141#190#7#141#190#155#245#254#154#246#254#154#246
+#254#155#245#253#155#246#254#154#246#254#155#245#254#12#133#24'F'#206'lY'#228
+#136'X'#225#136'a'#235#148'@'#193'e'#12#133#24#255#0#255#7#141#190#254#254
+#254#160#251#255#160#251#254#160#251#254#161#250#254#161#251#254#12#133#24#12
+#133#24#12#133#24#12#133#24'V'#225#132'G'#205'n'#12#133#24#12#133#24#12#133
+#24#255#0#255#7#141#190#254#254#254#165#254#255#165#254#255#165#254#255#7#140
+#182'C'#183#220'C'#183#220'C'#183#220#12#133#24'N'#221'y6'#186'T'#12#133#24
+#255#0#255#255#0#255#255#0#255#255#0#255#7#141#190#7#141#190#7#141#190#7#141
+#190#255#0#255#255#0#255#255#0#255#255#0#255#12#133#24'@'#208'e'#12#133#24
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#12#133#24'*'#183'C-'#186'I'#12
+#133#24#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#12#133#24'!'#181'8'#12#133
+#24#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#12#133#24#12#133#24#12#133#24#12#133#24
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#12#133#24#12#133#24#12#133#24#12#133#24#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7'OnClick'#7#17
+'SpeedButton1Click'#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#2#8#6'Height'#2'8'
,#3'Top'#3#248#0#5'Width'#3'h'#1#7'Caption'#6#16'Output file name'#12'ClientH'
+'eight'#2'&'#11'ClientWidth'#3'd'#1#8'TabOrder'#2#2#0#6'TLabel'#13'lblFileEx'
+'ists'#4'Left'#2#13#6'Height'#2#14#3'Top'#2'+'#5'Width'#3#194#0#7'Caption'#6
+'+File already exists at specified directory.'#12'Font.CharSet'#7#12'ANSI_CH'
+'ARSET'#10'Font.Color'#7#5'clRed'#11'Font.Height'#2#245#9'Font.Name'#6#5'Ari'
+'al'#11'ParentColor'#8#10'ParentFont'#8#0#0#5'TEdit'#11'edtFileName'#4'Left'
+#2#8#6'Height'#2#21#3'Top'#2#0#5'Width'#3'R'#1#8'OnChange'#7#17'edtFileNameC'
+'hange'#8'TabOrder'#2#0#0#0#0#9'TGroupBox'#9'GroupBox2'#4'Left'#2#8#6'Height'
+#2'0'#3'Top'#3'('#1#5'Width'#3'h'#1#7'Caption'#6#7'Options'#12'ClientHeight'
+#2#30#11'ClientWidth'#3'd'#1#8'TabOrder'#2#0#0#9'TCheckBox'#12'ckbIgnoreXSD'
+#4'Left'#2#6#6'Height'#2#19#3'Top'#2#0#5'Width'#2'q'#7'Caption'#6#17'Ignore '
+'XSD schema'#8'TabOrder'#2#0#0#0#0#9'TGroupBox'#9'GroupBox3'#4'Left'#2#8#6'H'
+'eight'#2'8'#3'Top'#3'`'#1#5'Width'#3'h'#1#7'Caption'#6#19'Target Code Lagua'
+'ge'#12'ClientHeight'#2'&'#11'ClientWidth'#3'd'#1#8'TabOrder'#2#1#0#12'TRadi'
+'oButton'#14'rdObjectPascal'#4'Left'#2#13#6'Height'#2#19#3'Top'#2#8#5'Width'
+#2'U'#7'Caption'#6#13'Object Pascal'#8'TabOrder'#2#0#0#0#12'TRadioButton'#8
+'rdCSharp'#4'Left'#3#145#0#6'Height'#2#19#3'Top'#2#8#5'Width'#2'#'#7'Caption'
+#6#2'C#'#8'TabOrder'#2#1#0#0#12'TRadioButton'#6'rdJava'#4'Left'#3#238#0#6'He'
+'ight'#2#19#3'Top'#2#8#5'Width'#2'+'#7'Caption'#6#4'Java'#8'TabOrder'#2#2#0#0
+#0#14'TShellTreeView'#12'dlbDirectory'#4'Left'#2#8#6'Height'#3#192#0#3'Top'#2
+'('#5'Width'#3'h'#1#12'FileSortType'#7#7'fstNone'#8'TabOrder'#2#3#11'ObjectT'
+'ypes'#11#9'otFolders'#0#0#0#0#11'TOpenDialog'#11'OpenDialog1'#6'Filter'#6#10
+'.pas|*.pas'#4'Left'#3#184#0#3'Top'#2#24#0#0#0
]);
unit fModelMappingsGenerationOptions;
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
interface
uses
{$IFnDEF FPC}
Windows,
{$ELSE}
LCLIntf, LCLType, LMessages,
{$ENDIF}
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons, ShellCtrls, Registry, IntegracaoDelphiSUML;
const cPROJECT_SAVE_OPTIONS_PATH = 'Software\StarUML\Options\' + cOPTIONSCHEMAID + '\Projects\';
type
{ TModelMappingsGenerationOptions }
TModelMappingsGenerationOptions = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Label1: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
GroupBox1: TGroupBox;
edtFileName: TEdit;
GroupBox2: TGroupBox;
ckbIgnoreXSD: TCheckBox;
lblFileExists: TLabel;
BitBtn3: TBitBtn;
dlbDirectory: TShellTreeView;
SpeedButton1: TSpeedButton;
OpenDialog1: TOpenDialog;
ckbDefault: TCheckBox;
GroupBox3: TGroupBox;
rdObjectPascal: TRadioButton;
rdCSharp: TRadioButton;
rdJava: TRadioButton;
procedure FormShow(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure edtFileNameChange(Sender: TObject);
procedure dlbDirectoryClick(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
// FStarUMLApp: IStarUMLApplication;
// procedure SetStarUMLApp(const Value: IStarUMLApplication);
procedure CheckFile;
procedure GetParameters;
{ Private declarations }
public
{ Public declarations }
// property StarUMLApp: IStarUMLApplication read FStarUMLApp write SetStarUMLApp;
end;
var
ModelMappingsGenerationOptions: TModelMappingsGenerationOptions;
implementation
{$R *.dfm}
{ TModelMappingsGenerationOptions }
procedure TModelMappingsGenerationOptions.BitBtn1Click(Sender: TObject);
var lReg: TRegistry;
begin
ModalResult := mrnone;
if edtFileName.Text = '' then
Application.MessageBox('Model mappings file name must be specified.', 'Attention', MB_ICONINFORMATION)
else
begin
if ckbDefault.Checked then
begin
lReg := TRegistry.Create;
try
lReg.RootKey := HKEY_CURRENT_USER;
// lReg.OpenKey(cPROJECT_SAVE_OPTIONS_PATH + ExtractFileName(StarUMLApp.ProjectManager.FileName), true);
// lReg.WriteString('MODELMAPPINGS_IGNORE_XSD_SCHEMA', BoolToStr(ckbIgnoreXSD.Checked, true));
// lReg.WriteString('MODELMAPPINGS_OUTPUT_DIRECTORY', dlbDirectory.Directory);
lReg.WriteString('MODELMAPPINGS_FILENAME', edtFileName.Text);
if rdObjectPascal.Checked then
begin
lReg.WriteString('MODELMAPPINGS_TARGET_LANGUAGE', 'O');
end
else if rdCSharp.Checked then
begin
lReg.WriteString('MODELMAPPINGS_TARGET_LANGUAGE', 'C');
end
else
begin
lReg.WriteString('MODELMAPPINGS_TARGET_LANGUAGE', 'J');
end;
finally
lReg.free;
end;
end;
ModalResult := mrOk;
end;
end;
procedure TModelMappingsGenerationOptions.BitBtn3Click(Sender: TObject);
begin
GetParameters;
end;
procedure TModelMappingsGenerationOptions.CheckFile;
begin
lblFileExists.Visible := FileExists(IncludeTrailingPathDelimiter(dlbDirectory.Path) + edtFileName.Text);
end;
procedure TModelMappingsGenerationOptions.dlbDirectoryClick(Sender: TObject);
begin
CheckFile;
end;
procedure TModelMappingsGenerationOptions.edtFileNameChange(Sender: TObject);
begin
CheckFile;
end;
procedure TModelMappingsGenerationOptions.FormDestroy(Sender: TObject);
begin
end;
procedure TModelMappingsGenerationOptions.FormShow(Sender: TObject);
begin
GetParameters;
end;
procedure TModelMappingsGenerationOptions.GetParameters;
var lReg: TRegistry;
begin
lReg := TRegistry.Create;
try
lReg.RootKey := HKEY_CURRENT_USER;
// lReg.OpenKey(cPROJECT_SAVE_OPTIONS_PATH + ExtractFileName(StarUMLApp.ProjectManager.FileName), true);
ckbIgnoreXSD.Checked := StrToBoolDef(lReg.ReadString('MODELMAPPINGS_IGNORE_XSD_SCHEMA'), false);
if lReg.ReadString('MODELMAPPINGS_OUTPUT_DIRECTORY') <> '' then
// dlbDirectory.Directory := lReg.ReadString('MODELMAPPINGS_OUTPUT_DIRECTORY')
else
// dlbDirectory.Directory := ExtractFilePath(StarUMLApp.ProjectManager.FileName);
if lReg.ReadString('MODELMAPPINGS_FILENAME') <> '' then
edtFileName.Text := lReg.ReadString('MODELMAPPINGS_FILENAME')
else
edtFileName.Text := 'acuRegisterModelMappings.pas';
if lReg.ReadString('MODELMAPPINGS_TARGET_LANGUAGE') <> '' then
begin
if lReg.ReadString('MODELMAPPINGS_TARGET_LANGUAGE') = 'O' then
rdObjectPascal.Checked := True
else if lReg.ReadString('MODELMAPPINGS_TARGET_LANGUAGE') = 'C' then
rdCSharp.Checked := True
else
rdJava.Checked := True;
end
else
rdObjectPascal.Checked := True;
finally
lReg.free;
end;
CheckFile;
end;
procedure TModelMappingsGenerationOptions.SpeedButton1Click(Sender: TObject);
begin
OpenDialog1.InitialDir := dlbDirectory.Path;
if OpenDialog1.Execute then
begin
dlbDirectory.Path := ExtractFilePath(OpenDialog1.FileName);
edtFileName.Text := ExtractFileName(OpenDialog1.FileName);
CheckFile;
end;
end;
end.
object XSDEdit: TXSDEdit
Left = 0
Height = 534
Top = 0
Width = 701
Caption = 'XSDEdit'
ClientHeight = 534
ClientWidth = 701
Color = clBtnFace
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
OnClose = FormClose
OnCreate = FormCreate
OnShow = FormShow
Position = poDesktopCenter
LCLVersion = '2.1.0.0'
object pnlTransition: TPanel
Left = 0
Height = 23
Top = 0
Width = 701
Align = alTop
TabOrder = 0
end
object Panel2: TPanel
Left = 0
Height = 52
Top = 23
Width = 701
Align = alTop
ClientHeight = 52
ClientWidth = 701
TabOrder = 1
object btnSalvar: TSpeedButton
Left = 20
Height = 40
Top = 6
Width = 53
Flat = True
Glyph.Data = {
360C0000424D360C000000000000360000002800000020000000200000000100
180000000000000C0000120B0000120B00000000000000000000FF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF0066000066000066000066000066000066005B8D5AB5B3B3B5B3B3B5B3
B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B32D792D00660000
6600006600006600006600006600FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
006600008300008C00008C00008C00008C00007000367C36FAF6F3FDF9F6FDF9
F6FDF9F6FDF9F6FDF9F6F9F6F3F0EEECE7E5E4DEDDDDDEDDDD327E3200660000
6600006600007500008A00008300006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300297528FAF6F30066000066
00006600006600FAF6F3FDF9F6F9F6F3F0EEECE7E5E4DEDDDD37833600660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000073002A7629F6F0ED0066000066
00006600006600F3F0EDFBF7F4FDF9F7F8F4F2EFECEAE6E4E338843800660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000073002B772AEFE8E40066000066
00006600006600E9E6E4F5F2EFFCF8F5FDF9F6F6F3F0EDEBE93A863900660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000073002D782BE8DEDB0066000066
00006600006600DBD8D7ECE9E6F7F3F0FCF9F6FCF9F6F5F1EF3C883B00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300307A2DE0D4D10066000066
00006600006600C9C7C5DEDCDAEEEBE8F8F4F1FDF9F6FBF8F53E893C00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300327C2FDACCC90066000066
00006600006600B2B1B0CDCBCAE2DFDDF0EDEAF9F5F3FDF9F63F8B3E00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300357E30D6C6C30066000066
00006600006600A2A1A1B7B6B5D1CFCDE5E2E0F2EFECFAF7F43F8B3E00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300377F32D6C6C3C9BDBABDB4
B2B2ADACA9A6A6A3A2A1A3A3A3BCBBBAD5D3D1E8E4E2F4F0EE3E8A3D00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000099000099000099000099000099
0000990000990000990000990000990000990000990000990000990000990000
9900009900009900009800008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000099000099000099000099000099
0000990000990000990000990000990000990000990000990000990000990000
9900009900009900009900008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009300008C00018E01049408079B0F0AA0140CA4180DA61A0DA6
1A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0D
A61A0DA61A0AA213009900008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00008000006600036B051187211EA13C29B65130C56133CB6733CB
6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733
CB6733CB6726BF4D009900008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
0066000083000079003B863AFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BB4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF006600006600317D31C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2
C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3
C2C2D6BCBB26B24D006600006600FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
}
OnClick = btnSalvarClick
end
object btnSendExternalEditor: TSpeedButton
Left = 95
Height = 40
Top = 6
Width = 53
Flat = True
Glyph.Data = {
360C0000424D360C000000000000360000002800000020000000200000000100
180000000000000C0000120B0000120B00000000000000000000FF00FF1897C9
1897C91897C91897C91897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C935A4D0
BBE4F35EC3EA4EBBE539ADDA1897C91897C91897C91897C91897C9FF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0A7812FF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C91897C9
D8EEF672D4F872D4F872D4F872D4F86CCFF466C9F24EBBE53EB0DD1897C91897
C91897C91897C91897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0A78120A
7812FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C94EBEE2
99D0E6A7E4F972D4F872D4F872D4F872D4F872D4F872D4F872D4F872D4F86CCF
F460C7EE4EBBE539ADDA1897C91897C91897C91897C91897C9FF00FF0A781211
A11D0A7812FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C957C3E4
4AAFD6D1F0FB72D4F872D4F872D4F872D4F872D4F872D4F872D4F872D4F872D4
F872D4F872D4F872D4F872D4F86CCFF460C7EE4AB7E339ADDA1897C90A781254
BE5E11A11D0A7812FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C951BEE1
41B4DCD2EBF37BD7F872D4F872D4F872D4F872D4F872D4F872D4F872D4F80A78
120A78120A78120A78120A78120A78120A78120A78120A78120A78120A78125A
C1645AC16411A11D0A7812FF00FFFF00FFFF00FFFF00FFFF00FF1897C951BEE1
57C3E47CC4E0A7E4F975D7F875D7F875D7F875D7F875D7F875D7F875D7F80A78
128CE9ABBEF0CDBEEECABAEBC5BAEBC5B1E8BDA2E2AF91DB9E82D58F70CC7C70
CC7C5FC46949BC5611A11D0A7812FF00FFFF00FFFF00FFFF00FF1897C951BEE1
58C0E242AED6DCF4FC79DAF879DAF879DAF879DAF879DAF879DAF879DAF80A78
129FEDBAE5FAECE4F9EBE4F8EAE3F8E9DEF6E4CDF1D5BAEBC5A5E2B091DB9E7A
D38964C77049BC5638B44311A11D0A7812FF00FFFF00FFFF00FF1897C953BFE3
58C0E241B4DCD2EBF38CE0F87CDCF67CDBF67CDBF67CDBF67CDBF67CDBF60A78
129FEDBAE6FAEDE5FAECE4F9EBE3F8E9DEF6E4CDF1D5BAEBC5A8E4B491DB9E82
D58F69CB7752C05F38B44325AD3211A41E0A7812FF00FFFF00FF1897C953BFE3
5AC2E55AC2E56EBDDDB5EBF87DDAF17CD8EF7BD8EE7BD8EE7BD8EE7BD8EE0A78
129FEDBAE6FAEDE6FAEDE5FAECE4F9EBE0F7E7D2F4DBBEEECAABE6B898E3AA82
D58F6ECE7D57C46740BA4F25AD3211A11D0A7812FF00FFFF00FF1897C955C0E5
5CC1E65CC1E639ABD4E5F6FA7DD6EC7AD1E579D0E379D0E379D0E379D0E30A78
129FEDBAE6FAEDE6FAEDE6FAEDE5FAECE3F8E9D2F4DBC1EFCDAFE9BD98E3AA88
DA9873D1845DC86E49BC5611A11D077B0EFF00FFFF00FFFF00FF1897C957C1E7
5EC3EA5EC3EA4BB9DEB3DFEDA6D8E998D7E398D7E398D7E398D7E398D7E30A78
128CE9ABC3F4D4C3F4D4C3F4D4C3F4D4BFF2D0B3EEC5A5E9B898E3AA8ADD9C8A
DD9C7AD38962CC7511A11D0A7D111897C9FF00FFFF00FFFF00FF1897C957C1E7
61C4EC61C4EC5CC1E66EBDDDDEF8FBABF0FAABF0FAABF0FAABF0FAABF0FA0A78
120A78120A78120A78120A78120A78120A78120A78120A78120A78120A781294
DEA37DD89111A11D0D80178FEBF81897C9FF00FFFF00FFFF00FF1897C959C2E8
63C5EE63C4ED5FBDE5439BC0C4E4F0CBF6FBAFF4FAAFF4FAAFF4FAAFF4FAAFF4
FAAFF4FAAFF4FAAFF4FAAFF4FAAFF4FAAFF4FAAFF4FA9EDEE584DAE40A781298
E3AA11A11D0D801795F1F995F1F95DC8E41897C9FF00FFFF00FF1897C963C4EA
66C6F166C6F162BFE9A2A3AB269DCCB3DFEDE5F6FAEDFBFBE5FAFCD9F9FBD9F9
FBCAF8FAB9F6F9B5F6FAB5F6FAB5F6FAB5F6FAB3F6FAAAE0E58BDCE40A781211
A11D11831D7CDCED9DF3F99DF3F99DF3F91F9BCBFF00FFFF00FF1897C96EC8EB
66C9F266C6F162BFE9C2A6A4C5E2E960B6D852B0D5269DCC35A4D051B1D651B1
D68BCBE4DDF0F6D9F9FBC6F7F9C6F7F9C6F7F9C6F7F9BBE2E59EDEE50A781211
831DA0F0F98CDEEEB3F6FAB3F6FAB3F6FA52BADB1897C9FF00FF1897C97ACAEC
6CCCF46CCCF468C4EAC2A6A4FEFAF5FEFAF5FEFAF5FEFAF5FEFAF5D4E7EAC5E2
E999CEE134A4CFB3DFEDEDFBFBD9F9FBD5F9FAD5F9FAC5E2E9AAE0E50A7812B7
F1F8B1EEF79CDDF1CAF8FACAF8FACAF8FAAEE8F21897C9FF00FF1897C99CDDF1
71D1F571D1F56EC8EBC2A6A4FEF8F2FEF8F2FEF8F2FEF8F2FEF8F2FEF8F2FEF8
F2FEF8F2F0F2EF60B5D67CC4E0ECF6F9EDFBFBECF6F9D4E7EABBE2E5C4ECF1C8
F3F9C3F1F9B3DFEDE1FAFBE1FAFBE1FAFBE1FAFB1897C9FF00FF1897C9BCEBFA
77D6F677D6F672CEECC2A6A4FEF7F0FEF7F0FEF7F0FEF7F0FEF7F0FEF7F0FEF7
F0FEF7F0FEF7F0FEF7F099CEE141ABD3A6D8E9F9FCFDEBF0F0D4E7EAD2EBF3CC
F3FACCF3FAB3DFEDE7FAFBE7FAFBE7FAFBE7FAFB8BCBE41897C91897C9BCEBFA
7CDBF67CD9F577D1ECC2A6A4FEF5EDFEF5EDFEF5EDFEF5EDFEF5EDFEF5EDFEF5
EDFEF5EDFEF5EDFEF5EDFEF5EDE5E7E66FBAD735A4D07CC4E08BCBE4A6D8E9C4
E4F0C4E4F0D2EBF3F9FCFDF9FCFDF9FCFDF3FCFCF3FCFC1897C91897C9C0EEFA
82DFF782DFF77DD6ECC2A6A4FEF4EAFEF4EAFEF4EAFEF4EAFEF4EAFEF4EAFEF4
EAFEF4EAFEF4EAFEF4EAFEF4EAFEF4EAFEF4EAF0EEE897A2AD3796B743ABCE4B
B9DE4EBEE21897C91897C91897C91897C91897C91897C91897C91897C9C3F1F9
87E4F786E3F682DBEDC2A6A4FFF2E7FFF2E7FFF2E7FFF2E7FFF2E7FFF2E7FFF2
E7FFF2E7FFF2E7FFF2E7FFF2E7FFF2E7FFF2E7FFF2E7C2A6A487E4F787E4F782
DBED86E3F61897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C9C5F3FB
8DE9F88CE8F78AE3EEC2A6A4FFF1E4FFF1E4FFF1E4FFF1E4FFF1E4FFF1E4FFF1
E4FFF1E4FFF1E4FFF1E4FFF1E4FFF1E4FFF1E4FFF1E4C2A6A48DE9F88DE9F88A
E3EE8DE9F81897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C9CEF6FB
92EEF892EEF88AE3EEC2A6A4FFEFE1FFEFE1FFEFE1FFEFE1FFEFE1FFEFE1FFEF
E1FFEFE1FFEFE1FFEEDEFAEADDF5E6D9F5E6D9F5E6D9C2A6A492EEF892EEF88A
E3EE92EEF81897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C9BBE4F3
9DF3F995F1F992E9EFC2A6A4FFEEDEFFEEDEFFEEDEFFEEDEFFEEDEFFEEDEFFEE
DEFFEEDEFBEADBE7DBD0DDCDC1D7C4BACBBBB1CBBBB1C8B1ACA0F0F99BF1FA91
E8F191EEFA1897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C943AAD3
D5F9FA95F1F992E9EFC2A6A4FFECDBFFECDBFFECDBFFECDBFFECDBFFECDBFFEC
DBFFECDBFAE8D7D7C4BABDAFA3AB9E949F938AB6A99FCBBBB165BFE067C3E35A
BCDD4BB9DE1897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C9
7CC4E0AFF4FA92E9EFC2A6A4FFEBD9FFEBD9FFEBD9FFEBD9FFEBD9FFEBD9FFEB
D9FFEBD9FFEBD9F8F1EAE5E7E6E7DBD0F6ECE3C8B1ACA89EA22098C71897C918
96C81897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
1897C97CC3DF86C2DAC2A6A4FFEAD6FFEAD6FFEAD6FFEAD6FFEAD6FFEAD6FFEA
D6FFEAD6FFEAD6FFF2E7FEFDFDFEF6EFD2B9B4C2A6A4FF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF1896C81792C3C2A6A4FFE8D3FFE8D3FFE8D3FFE8D3FFE8D3FFE8D3FFE8
D3FFE8D3FFE8D3E7DBD0FEF7F0D2B9B4C2A6A4FF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFC2A6A4FFE7D0FFE7D0FFE7D0FFE7D0FFE7D0FFE7D0FFE7
D0FFE7D0FFE7D0E7DBD0D7C4BAC2A6A4FF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFC2A6A4FFE6CFFFE6CFFFE6CFFFE6CFFFE6CFFFE6CFFFE6
CFFFE6CFFBE2CBD7C4BAC3A7A5FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFC2A6A4C2A6A4C2A6A4C2A6A4C2A6A4C2A6A4C2A6A4C2A6
A4C2A6A4C2A6A4C3A7A5FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
}
OnClick = btnSendExternalEditorClick
end
object btnGetExternalEditor: TSpeedButton
Left = 167
Height = 40
Top = 6
Width = 53
Flat = True
Glyph.Data = {
F6060000424DF606000000000000360000002800000018000000180000000100
180000000000C0060000120B0000120B00000000000000000000FF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFA23F08A23F08FF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFA23F08A2
3F08A23F08A23F08FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFA23F08A23F08AA4707BA5604A23F08A23F08FF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFA23F08A23F08AA4707C96501C46002A54208A23F08FF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFA23F08A23F08AA4707C96501C76202A54208A23F08
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFA23F08A23F08A54208C76202C96501AA
4707A23F08FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFA23F08A23F08A23F08C25E
04CC6701AD4906A23F08FF00FFFF00FFFF00FFA23F08A23F08A23F08A23F08A2
3F08A23F08A23F08A23F08A23F08A23F08A23F08A23F08A23F08FF00FFA23F08
A23F08BE5D0FD3720CB24F06A23F08FF00FFFF00FFFF00FFA23F08A74407AD49
06AD4906AD4906AD4906AD4906AD4906AD4906AD4906AD4906AD4906A74407A2
3F08A23F08A23F08AB490DE28822BF5F11A23F08FF00FFFF00FFFF00FFFF00FF
A23F08C25D03CC6701CC6701CC6701CC6701CC6701CC6701CC6701CC6701CC67
01CC6701B75305A23F08A23F08A23F08D27926E08829BF5F11A23F08FF00FFFF
00FFFF00FFFF00FFA23F08A74407AD4906AD4906AD4906AD4906AD4906AD4906
C96501CC6701CC6701CC6701B75305A23F08A23F08AD4D11F7A844CA7022A23F
08FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFA23F08A23F08A23F08A23F08A2
3F08A23F08B75305CC6701C76202BC5804CC6701B75305A23F08A23F08BE621D
FCB04CB85B18A23F08FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFA23F08A23F08AA4707CC6701C96501AA4707B75305CC6701B75305A2
3F08A23F08CF782AFCB04CB95B19A23F08FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFA23F08A23F08AA4707C96501CC6701B24E05A23F08B753
05CC6701B75305A23F08A23F08CF782AFCB04CB95B19A23F08FF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFA23F08A23F08AA4707C96501CC6701B24E05
A23F08A23F08B75305CC6701B75305A23F08A23F08BE621DFCB04CC97026A846
0CA23F08FF00FFFF00FFFF00FFFF00FFFF00FFA23F08A23F08AD4906C96501CC
6701B24E05A23F08A23F08A23F08B75305CC6701B75305A23F08A23F08A8460C
F6A948F6A948A8460CA23F08FF00FFFF00FFFF00FFFF00FFA23F08A23F08BA59
0ED16F09CD6802B24E05A23F08A23F08FF00FFA23F08B75305CC6701B75305A2
3F08FF00FFA23F08CF782AFCB04CEB9B3FA8460CA23F08A23F08A23F08A23F08
A7450BCD711EE08520D57714AE4B08A23F08A23F08FF00FFFF00FFA23F08B753
05CC6701B75305A23F08FF00FFA23F08A23F08D57F2EFCB04CF1A244C97026B9
5B19C46922D47E2EF09E3DEE9A36D17620A6430AA23F08A23F08FF00FFFF00FF
FF00FFA23F08B75305CC6701B75305A23F08FF00FFFF00FFA23F08A23F08B95B
19DA8633F6A948FCB04CFCB04CFCB04CDF8B35B75816A23F08A23F08A23F08FF
00FFFF00FFFF00FFFF00FFA23F08B75305CC6701B75305A23F08FF00FFFF00FF
FF00FFA23F08A23F08B95B19B95B19B95B19B95B19B95B19B95B19A23F08A23F
08FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFA23F08A54208B45105A54208A2
3F08FF00FFFF00FFFF00FFFF00FFFF00FFA23F08A23F08A23F08A23F08A23F08
A23F08FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFA23F
08A23F08A23F08FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
}
Visible = False
OnClick = btnGetExternalEditorClick
end
object btnCancel: TSpeedButton
Left = 242
Height = 40
Top = 6
Width = 53
Flat = True
Glyph.Data = {
DE020000424DDE020000000000009E0000002800000018000000180000000100
08000000000040020000120B0000120B00001A00000000000000021DD400021D
D900011EE100011FEA00011FF100011FFA00112BD600112BD900102CE100102D
EC00102DFA00203AE9003147DF003048E7003048E9003049F1003049F9004155
DE005163E1006172EA006073F6006073FA007180EB007F8EFC00FF00FF00808E
ED00181818181818181818181818181818181818181818181818181818181818
1818181818181818181818181818180700181818181818181818181818181818
1818181818180100071818120000181818181818181818181818181818010107
1818181100000018181818181818181818181816010107181818181800000000
1818181818181818181813010207181818181818180600010118181818181818
18130202071818181818181818180C0101011818181818180D02020818181818
1818181818181812010202181818180E02020818181818181818181818181818
1902020218180E02020818181818181818181818181818181818080302030302
091818181818181818181818181818181818180B030303091818181818181818
1818181818181818181818090303030F18181818181818181818181818181818
18180303030303040F181818181818181818181818181818180403030E181804
041018181818181818181818181818140404030F181818180A04101818181818
181818181818140404040F181818181818100510181818181818181818150404
040F181818181818181815051018181818181818100405040F18181818181818
18181817050A1818181818100504040F181818181818181818181818180A1518
1818180504051018181818181818181818181818181818181818181005101818
1818181818181818181818181818181818181818181818181818181818181818
1818181818181818181818181818181818181818181818181818181818181818
1818
}
Visible = False
OnClick = btnCancelClick
end
end
object pgcPrincipal: TPageControl
Left = 0
Height = 459
Top = 75
Width = 701
ActivePage = tbsXSDIn
Align = alClient
TabIndex = 0
TabOrder = 2
TabWidth = 100
OnChanging = pgcPrincipalChanging
object tbsXSDIn: TTabSheet
Caption = 'XSD In'
ClientHeight = 433
ClientWidth = 693
object memXSDIn: TMemo
Left = 0
Height = 433
Top = 0
Width = 693
Align = alClient
Font.CharSet = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Courier New'
ParentFont = False
ScrollBars = ssBoth
TabOrder = 0
WordWrap = False
end
end
object tbsXSDOut: TTabSheet
Caption = 'XSD Out'
ClientHeight = 433
ClientWidth = 693
ImageIndex = 1
object memXSDOut: TMemo
Left = 0
Height = 433
Top = 0
Width = 693
Align = alClient
Font.CharSet = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Courier New'
ParentFont = False
ScrollBars = ssBoth
TabOrder = 0
WordWrap = False
end
end
end
end
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TXSDEdit','FORMDATA',[
'TPF0'#8'TXSDEdit'#7'XSDEdit'#4'Left'#2#0#6'Height'#3#22#2#3'Top'#2#0#5'Width'
+#3#189#2#7'Caption'#6#7'XSDEdit'#12'ClientHeight'#3#22#2#11'ClientWidth'#3
+#189#2#5'Color'#7#9'clBtnFace'#10'Font.Color'#7#12'clWindowText'#11'Font.Hei'
+'ght'#2#245#9'Font.Name'#6#6'Tahoma'#7'OnClose'#7#9'FormClose'#8'OnCreate'#7
+#10'FormCreate'#6'OnShow'#7#8'FormShow'#8'Position'#7#15'poDesktopCenter'#10
+'LCLVersion'#6#7'2.1.0.0'#0#6'TPanel'#13'pnlTransition'#4'Left'#2#0#6'Height'
+#2#23#3'Top'#2#0#5'Width'#3#189#2#5'Align'#7#5'alTop'#8'TabOrder'#2#0#0#0#6
+'TPanel'#6'Panel2'#4'Left'#2#0#6'Height'#2'4'#3'Top'#2#23#5'Width'#3#189#2#5
+'Align'#7#5'alTop'#12'ClientHeight'#2'4'#11'ClientWidth'#3#189#2#8'TabOrder'
+#2#1#0#12'TSpeedButton'#9'btnSalvar'#4'Left'#2#20#6'Height'#2'('#3'Top'#2#6#5
+'Width'#2'5'#4'Flat'#9#10'Glyph.Data'#10':'#12#0#0'6'#12#0#0'BM6'#12#0#0#0#0
+#0#0'6'#0#0#0'('#0#0#0' '#0#0#0' '#0#0#0#1#0#24#0#0#0#0#0#0#12#0#0#18#11#0#0
+#18#11#0#0#0#0#0#0#0#0#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#0'f'#0#0'f'#0#0'f'#0#0'f'#0#0'f'#0#0'f'#0'['#141'Z'#181
+#179#179#181#179#179#181#179#179#181#179#179#181#179#179#181#179#179#181#179
+#179#181#179#179#181#179#179#181#179#179#181#179#179'-y-'#0'f'#0#0'f'#0#0'f'
+#0#0'f'#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#0'f'#0#0#131#0#0#140#0#0#140#0#0#140#0#0#140#0#0'p'#0'6|6'#250#246#243
+#253#249#246#253#249#246#253#249#246#253#249#246#253#249#246#249#246#243#240
+#238#236#231#229#228#222#221#221#222#221#221'2~2'#0'f'#0#0'f'#0#0'f'#0#0'u'#0
+#0#138#0#0#131#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0
+'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0's'#0')u('#250#246#243#0'f'#0
+#0'f'#0#0'f'#0#0'f'#0#250#246#243#253#249#246#249#246#243#240#238#236#231#229
+#228#222#221#221'7'#131'6'#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0
+#153#0#0#153#0#0#153#0#0's'#0'*v)'#246#240#237#0'f'#0#0'f'#0#0'f'#0#0'f'#0
+#243#240#237#251#247#244#253#249#247#248#244#242#239#236#234#230#228#227'8'
+#132'8'#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0
+#153#0#0's'#0'+w*'#239#232#228#0'f'#0#0'f'#0#0'f'#0#0'f'#0#233#230#228#245
+#242#239#252#248#245#253#249#246#246#243#240#237#235#233':'#134'9'#0'f'#0#0
+'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0's'#0'-x+'
+#232#222#219#0'f'#0#0'f'#0#0'f'#0#0'f'#0#219#216#215#236#233#230#247#243#240
+#252#249#246#252#249#246#245#241#239'<'#136';'#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0
+#151#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'
+#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0's'#0'0z-'#224#212#209#0'f'#0#0
+'f'#0#0'f'#0#0'f'#0#201#199#197#222#220#218#238#235#232#248#244#241#253#249
+#246#251#248#245'>'#137'<'#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0
+#153#0#0#153#0#0#153#0#0's'#0'2|/'#218#204#201#0'f'#0#0'f'#0#0'f'#0#0'f'#0
+#178#177#176#205#203#202#226#223#221#240#237#234#249#245#243#253#249#246'?'
+#139'>'#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0
+#153#0#0's'#0'5~0'#214#198#195#0'f'#0#0'f'#0#0'f'#0#0'f'#0#162#161#161#183
+#182#181#209#207#205#229#226#224#242#239#236#250#247#244'?'#139'>'#0'f'#0#0
+'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0's'#0'7'#127
+'2'#214#198#195#201#189#186#189#180#178#178#173#172#169#166#166#163#162#161
+#163#163#163#188#187#186#213#211#209#232#228#226#244#240#238'>'#138'='#0'f'#0
+#0'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0
+#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153
+#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#152#0#0#140#0#0
+'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153
+#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0
,#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153
+#0#0#153#0#0#153#0#0#153#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#0'f'#0#0#140#0#0#147#0#0#140#0#1#142#1#4#148#8#7#155#15#10#160
+#20#12#164#24#13#166#26#13#166#26#13#166#26#13#166#26#13#166#26#13#166#26#13
+#166#26#13#166#26#13#166#26#13#166#26#13#166#26#13#166#26#13#166#26#13#166#26
+#10#162#19#0#153#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#0'f'#0#0#140#0#0#128#0#0'f'#0#3'k'#5#17#135'!'#30#161'<)'#182'Q0'#197
+'a3'#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'
+#203'g3'#203'g3'#203'g3'#203'g3'#203'g&'#191'M'#0#153#0#0#140#0#0'f'#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137
+'='#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250#243#242#250#243
+#242#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192
+#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192
+#192#192#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'
+#137'='#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0
+'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128
+#0'?'#137'='#250#243#242#250#243#242#250#243#242#192#192#192#192#192#192#192
+#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192
+#192#192#192#192#192#192#192#192#192#192#192#192#192#250#243#242#250#243#242
+#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0
+#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0
+#128#0'?'#137'='#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250#243
+#242#250#243#242#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192
+#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192
+#192#192#192#192#192#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0
+'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0
+#0#128#0'?'#137'='#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153
+#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0
,#131#0#0'y'#0';'#134':'#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242'&'#187'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0'f'#0'1}1'#195#194#194#195
+#194#194#195#194#194#195#194#194#195#194#194#195#194#194#195#194#194#195#194
+#194#195#194#194#195#194#194#195#194#194#195#194#194#195#194#194#195#194#194
+#195#194#194#195#194#194#195#194#194#195#194#194#214#188#187'&'#178'M'#0'f'#0
+#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#7'OnClick'#7#14'btnSalvarClick'#0#0#12'TSpeedButton'#21'btnSendEx'
+'ternalEditor'#4'Left'#2'_'#6'Height'#2'('#3'Top'#2#6#5'Width'#2'5'#4'Flat'#9
+#10'Glyph.Data'#10':'#12#0#0'6'#12#0#0'BM6'#12#0#0#0#0#0#0'6'#0#0#0'('#0#0#0
+' '#0#0#0' '#0#0#0#1#0#24#0#0#0#0#0#0#12#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0
+#0#0#255#0#255#24#151#201#24#151#201#24#151#201#24#151#201#24#151#201#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#24#151#201'5'#164#208#187#228#243'^'#195#234
+'N'#187#229'9'#173#218#24#151#201#24#151#201#24#151#201#24#151#201#24#151#201
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#10'x'#18#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#24#151#201#24#151
+#201#216#238#246'r'#212#248'r'#212#248'r'#212#248'r'#212#248'l'#207#244'f'
+#201#242'N'#187#229'>'#176#221#24#151#201#24#151#201#24#151#201#24#151#201#24
+#151#201#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#10'x'#18
+#10'x'#18#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#24#151#201'N'#190#226#153#208#230#167#228#249'r'#212#248'r'
+#212#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248'l'
+#207#244'`'#199#238'N'#187#229'9'#173#218#24#151#201#24#151#201#24#151#201#24
+#151#201#24#151#201#255#0#255#10'x'#18#17#161#29#10'x'#18#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#24#151#201'W'#195#228'J'
+#175#214#209#240#251'r'#212#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248
+'r'#212#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248
+'r'#212#248'l'#207#244'`'#199#238'J'#183#227'9'#173#218#24#151#201#10'x'#18
+'T'#190'^'#17#161#29#10'x'#18#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#24#151#201'Q'#190#225'A'#180#220#210#235#243'{'#215#248'r'#212
+#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248#10'x'
+#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18
+#10'x'#18#10'x'#18'Z'#193'dZ'#193'd'#17#161#29#10'x'#18#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#24#151#201'Q'#190#225'W'#195#228'|'#196#224
+#167#228#249'u'#215#248'u'#215#248'u'#215#248'u'#215#248'u'#215#248'u'#215
+#248'u'#215#248#10'x'#18#140#233#171#190#240#205#190#238#202#186#235#197#186
+#235#197#177#232#189#162#226#175#145#219#158#130#213#143'p'#204'|p'#204'|_'
+#196'iI'#188'V'#17#161#29#10'x'#18#255#0#255#255#0#255#255#0#255#255#0#255#24
+#151#201'Q'#190#225'X'#192#226'B'#174#214#220#244#252'y'#218#248'y'#218#248
+'y'#218#248'y'#218#248'y'#218#248'y'#218#248'y'#218#248#10'x'#18#159#237#186
+#229#250#236#228#249#235#228#248#234#227#248#233#222#246#228#205#241#213#186
+#235#197#165#226#176#145#219#158'z'#211#137'd'#199'pI'#188'V8'#180'C'#17#161
+#29#10'x'#18#255#0#255#255#0#255#255#0#255#24#151#201'S'#191#227'X'#192#226
+'A'#180#220#210#235#243#140#224#248'|'#220#246'|'#219#246'|'#219#246'|'#219
+#246'|'#219#246'|'#219#246#10'x'#18#159#237#186#230#250#237#229#250#236#228
+#249#235#227#248#233#222#246#228#205#241#213#186#235#197#168#228#180#145#219
+#158#130#213#143'i'#203'wR'#192'_8'#180'C%'#173'2'#17#164#30#10'x'#18#255#0
+#255#255#0#255#24#151#201'S'#191#227'Z'#194#229'Z'#194#229'n'#189#221#181#235
+#248'}'#218#241'|'#216#239'{'#216#238'{'#216#238'{'#216#238'{'#216#238#10'x'
+#18#159#237#186#230#250#237#230#250#237#229#250#236#228#249#235#224#247#231
,#210#244#219#190#238#202#171#230#184#152#227#170#130#213#143'n'#206'}W'#196
+'g@'#186'O%'#173'2'#17#161#29#10'x'#18#255#0#255#255#0#255#24#151#201'U'#192
+#229'\'#193#230'\'#193#230'9'#171#212#229#246#250'}'#214#236'z'#209#229'y'
+#208#227'y'#208#227'y'#208#227'y'#208#227#10'x'#18#159#237#186#230#250#237
+#230#250#237#230#250#237#229#250#236#227#248#233#210#244#219#193#239#205#175
+#233#189#152#227#170#136#218#152's'#209#132']'#200'nI'#188'V'#17#161#29#7'{'
+#14#255#0#255#255#0#255#255#0#255#24#151#201'W'#193#231'^'#195#234'^'#195#234
+'K'#185#222#179#223#237#166#216#233#152#215#227#152#215#227#152#215#227#152
+#215#227#152#215#227#10'x'#18#140#233#171#195#244#212#195#244#212#195#244#212
+#195#244#212#191#242#208#179#238#197#165#233#184#152#227#170#138#221#156#138
+#221#156'z'#211#137'b'#204'u'#17#161#29#10'}'#17#24#151#201#255#0#255#255#0
+#255#255#0#255#24#151#201'W'#193#231'a'#196#236'a'#196#236'\'#193#230'n'#189
+#221#222#248#251#171#240#250#171#240#250#171#240#250#171#240#250#171#240#250
+#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10
+'x'#18#10'x'#18#10'x'#18#148#222#163'}'#216#145#17#161#29#13#128#23#143#235
+#248#24#151#201#255#0#255#255#0#255#255#0#255#24#151#201'Y'#194#232'c'#197
+#238'c'#196#237'_'#189#229'C'#155#192#196#228#240#203#246#251#175#244#250#175
+#244#250#175#244#250#175#244#250#175#244#250#175#244#250#175#244#250#175#244
+#250#175#244#250#175#244#250#175#244#250#175#244#250#158#222#229#132#218#228
+#10'x'#18#152#227#170#17#161#29#13#128#23#149#241#249#149#241#249']'#200#228
+#24#151#201#255#0#255#255#0#255#24#151#201'c'#196#234'f'#198#241'f'#198#241
+'b'#191#233#162#163#171'&'#157#204#179#223#237#229#246#250#237#251#251#229
+#250#252#217#249#251#217#249#251#202#248#250#185#246#249#181#246#250#181#246
+#250#181#246#250#181#246#250#179#246#250#170#224#229#139#220#228#10'x'#18#17
+#161#29#17#131#29'|'#220#237#157#243#249#157#243#249#157#243#249#31#155#203
+#255#0#255#255#0#255#24#151#201'n'#200#235'f'#201#242'f'#198#241'b'#191#233
+#194#166#164#197#226#233'`'#182#216'R'#176#213'&'#157#204'5'#164#208'Q'#177
+#214'Q'#177#214#139#203#228#221#240#246#217#249#251#198#247#249#198#247#249
+#198#247#249#198#247#249#187#226#229#158#222#229#10'x'#18#17#131#29#160#240
+#249#140#222#238#179#246#250#179#246#250#179#246#250'R'#186#219#24#151#201
+#255#0#255#24#151#201'z'#202#236'l'#204#244'l'#204#244'h'#196#234#194#166#164
+#254#250#245#254#250#245#254#250#245#254#250#245#254#250#245#212#231#234#197
+#226#233#153#206#225'4'#164#207#179#223#237#237#251#251#217#249#251#213#249
+#250#213#249#250#197#226#233#170#224#229#10'x'#18#183#241#248#177#238#247#156
+#221#241#202#248#250#202#248#250#202#248#250#174#232#242#24#151#201#255#0#255
+#24#151#201#156#221#241'q'#209#245'q'#209#245'n'#200#235#194#166#164#254#248
+#242#254#248#242#254#248#242#254#248#242#254#248#242#254#248#242#254#248#242
+#254#248#242#240#242#239'`'#181#214'|'#196#224#236#246#249#237#251#251#236
+#246#249#212#231#234#187#226#229#196#236#241#200#243#249#195#241#249#179#223
+#237#225#250#251#225#250#251#225#250#251#225#250#251#24#151#201#255#0#255#24
+#151#201#188#235#250'w'#214#246'w'#214#246'r'#206#236#194#166#164#254#247#240
+#254#247#240#254#247#240#254#247#240#254#247#240#254#247#240#254#247#240#254
+#247#240#254#247#240#254#247#240#153#206#225'A'#171#211#166#216#233#249#252
+#253#235#240#240#212#231#234#210#235#243#204#243#250#204#243#250#179#223#237
+#231#250#251#231#250#251#231#250#251#231#250#251#139#203#228#24#151#201#24
+#151#201#188#235#250'|'#219#246'|'#217#245'w'#209#236#194#166#164#254#245#237
+#254#245#237#254#245#237#254#245#237#254#245#237#254#245#237#254#245#237#254
+#245#237#254#245#237#254#245#237#254#245#237#229#231#230'o'#186#215'5'#164
+#208'|'#196#224#139#203#228#166#216#233#196#228#240#196#228#240#210#235#243
+#249#252#253#249#252#253#249#252#253#243#252#252#243#252#252#24#151#201#24
+#151#201#192#238#250#130#223#247#130#223#247'}'#214#236#194#166#164#254#244
+#234#254#244#234#254#244#234#254#244#234#254#244#234#254#244#234#254#244#234
+#254#244#234#254#244#234#254#244#234#254#244#234#254#244#234#254#244#234#240
+#238#232#151#162#173'7'#150#183'C'#171#206'K'#185#222'N'#190#226#24#151#201
+#24#151#201#24#151#201#24#151#201#24#151#201#24#151#201#24#151#201#24#151#201
+#195#241#249#135#228#247#134#227#246#130#219#237#194#166#164#255#242#231#255
+#242#231#255#242#231#255#242#231#255#242#231#255#242#231#255#242#231#255#242
+#231#255#242#231#255#242#231#255#242#231#255#242#231#255#242#231#255#242#231
+#194#166#164#135#228#247#135#228#247#130#219#237#134#227#246#24#151#201#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#24#151#201#197#243#251
+#141#233#248#140#232#247#138#227#238#194#166#164#255#241#228#255#241#228#255
+#241#228#255#241#228#255#241#228#255#241#228#255#241#228#255#241#228#255#241
+#228#255#241#228#255#241#228#255#241#228#255#241#228#255#241#228#194#166#164
+#141#233#248#141#233#248#138#227#238#141#233#248#24#151#201#255#0#255#255#0
,#255#255#0#255#255#0#255#255#0#255#255#0#255#24#151#201#206#246#251#146#238
+#248#146#238#248#138#227#238#194#166#164#255#239#225#255#239#225#255#239#225
+#255#239#225#255#239#225#255#239#225#255#239#225#255#239#225#255#239#225#255
+#238#222#250#234#221#245#230#217#245#230#217#245#230#217#194#166#164#146#238
+#248#146#238#248#138#227#238#146#238#248#24#151#201#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#24#151#201#187#228#243#157#243#249#149#241
+#249#146#233#239#194#166#164#255#238#222#255#238#222#255#238#222#255#238#222
+#255#238#222#255#238#222#255#238#222#255#238#222#251#234#219#231#219#208#221
+#205#193#215#196#186#203#187#177#203#187#177#200#177#172#160#240#249#155#241
+#250#145#232#241#145#238#250#24#151#201#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#24#151#201'C'#170#211#213#249#250#149#241#249#146
+#233#239#194#166#164#255#236#219#255#236#219#255#236#219#255#236#219#255#236
+#219#255#236#219#255#236#219#255#236#219#250#232#215#215#196#186#189#175#163
+#171#158#148#159#147#138#182#169#159#203#187#177'e'#191#224'g'#195#227'Z'#188
+#221'K'#185#222#24#151#201#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#24#151#201'|'#196#224#175#244#250#146#233#239#194#166
+#164#255#235#217#255#235#217#255#235#217#255#235#217#255#235#217#255#235#217
+#255#235#217#255#235#217#255#235#217#248#241#234#229#231#230#231#219#208#246
+#236#227#200#177#172#168#158#162' '#152#199#24#151#201#24#150#200#24#151#201
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#24#151#201'|'#195#223#134#194#218#194#166#164#255#234#214#255
+#234#214#255#234#214#255#234#214#255#234#214#255#234#214#255#234#214#255#234
+#214#255#234#214#255#242#231#254#253#253#254#246#239#210#185#180#194#166#164
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#24
+#150#200#23#146#195#194#166#164#255#232#211#255#232#211#255#232#211#255#232
+#211#255#232#211#255#232#211#255#232#211#255#232#211#255#232#211#231#219#208
+#254#247#240#210#185#180#194#166#164#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#194#166#164
+#255#231#208#255#231#208#255#231#208#255#231#208#255#231#208#255#231#208#255
+#231#208#255#231#208#255#231#208#231#219#208#215#196#186#194#166#164#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#194#166#164#255#230#207#255#230#207#255
+#230#207#255#230#207#255#230#207#255#230#207#255#230#207#255#230#207#251#226
+#203#215#196#186#195#167#165#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#194#166#164#194#166#164#194#166#164#194#166#164#194#166#164#194#166#164
+#194#166#164#194#166#164#194#166#164#194#166#164#195#167#165#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7'OnC'
+'lick'#7#26'btnSendExternalEditorClick'#0#0#12'TSpeedButton'#20'btnGetExtern'
+'alEditor'#4'Left'#3#167#0#6'Height'#2'('#3'Top'#2#6#5'Width'#2'5'#4'Flat'#9
+#10'Glyph.Data'#10#250#6#0#0#246#6#0#0'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0
+#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0#192#6#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0
+#0#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#162'?'#8#162'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#162'?'#8#162'?'#8#162'?'#8#162'?'#8#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#162'?'#8#162'?'#8#170'G'#7#186'V'#4#162'?'#8#162'?'#8#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#162'?'#8#162'?'#8#170'G'#7#201'e'#1#196'`'#2#165'B'#8#162'?'#8
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#162'?'#8#162'?'#8#170'G'#7#201'e'#1#199'b'#2#165'B'#8#162'?'#8#255
,#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#162'?'#8#162'?'#8#165'B'#8#199'b'#2#201'e'#1#170'G'#7#162'?'#8#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#162'?'#8#162'?'#8#162'?'#8#194'^'#4#204'g'#1#173'I'#6#162'?'#8#255#0#255#255
+#0#255#255#0#255#162'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'
+#8#162'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'#8#255#0#255#162'?'#8
+#162'?'#8#190']'#15#211'r'#12#178'O'#6#162'?'#8#255#0#255#255#0#255#255#0#255
+#162'?'#8#167'D'#7#173'I'#6#173'I'#6#173'I'#6#173'I'#6#173'I'#6#173'I'#6#173
+'I'#6#173'I'#6#173'I'#6#173'I'#6#167'D'#7#162'?'#8#162'?'#8#162'?'#8#171'I'
+#13#226#136'"'#191'_'#17#162'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#162
+'?'#8#194']'#3#204'g'#1#204'g'#1#204'g'#1#204'g'#1#204'g'#1#204'g'#1#204'g'#1
+#204'g'#1#204'g'#1#204'g'#1#183'S'#5#162'?'#8#162'?'#8#162'?'#8#210'y&'#224
+#136')'#191'_'#17#162'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8
+#167'D'#7#173'I'#6#173'I'#6#173'I'#6#173'I'#6#173'I'#6#173'I'#6#201'e'#1#204
+'g'#1#204'g'#1#204'g'#1#183'S'#5#162'?'#8#162'?'#8#173'M'#17#247#168'D'#202
+'p"'#162'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#162
+'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'#8#183'S'#5#204'g'#1#199'b'#2
+#188'X'#4#204'g'#1#183'S'#5#162'?'#8#162'?'#8#190'b'#29#252#176'L'#184'['#24
+#162'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#162'?'#8#162'?'#8#170'G'#7#204'g'#1#201'e'#1#170'G'
+#7#183'S'#5#204'g'#1#183'S'#5#162'?'#8#162'?'#8#207'x*'#252#176'L'#185'['#25
+#162'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#162'?'#8#162'?'#8#170'G'#7#201'e'#1#204'g'#1#178'N'#5#162'?'#8
+#183'S'#5#204'g'#1#183'S'#5#162'?'#8#162'?'#8#207'x*'#252#176'L'#185'['#25
+#162'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#162'?'#8#162'?'#8#170'G'#7#201'e'#1#204'g'#1#178'N'#5#162'?'#8#162'?'#8
+#183'S'#5#204'g'#1#183'S'#5#162'?'#8#162'?'#8#190'b'#29#252#176'L'#201'p&'
+#168'F'#12#162'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#162'?'
+#8#162'?'#8#173'I'#6#201'e'#1#204'g'#1#178'N'#5#162'?'#8#162'?'#8#162'?'#8
+#183'S'#5#204'g'#1#183'S'#5#162'?'#8#162'?'#8#168'F'#12#246#169'H'#246#169'H'
+#168'F'#12#162'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#162'?'#8
+#186'Y'#14#209'o'#9#205'h'#2#178'N'#5#162'?'#8#162'?'#8#255#0#255#162'?'#8
+#183'S'#5#204'g'#1#183'S'#5#162'?'#8#255#0#255#162'?'#8#207'x*'#252#176'L'
+#235#155'?'#168'F'#12#162'?'#8#162'?'#8#162'?'#8#162'?'#8#167'E'#11#205'q'#30
+#224#133' '#213'w'#20#174'K'#8#162'?'#8#162'?'#8#255#0#255#255#0#255#162'?'#8
+#183'S'#5#204'g'#1#183'S'#5#162'?'#8#255#0#255#162'?'#8#162'?'#8#213#127'.'
+#252#176'L'#241#162'D'#201'p&'#185'['#25#196'i"'#212'~.'#240#158'='#238#154
+'6'#209'v '#166'C'#10#162'?'#8#162'?'#8#255#0#255#255#0#255#255#0#255#162'?'
+#8#183'S'#5#204'g'#1#183'S'#5#162'?'#8#255#0#255#255#0#255#162'?'#8#162'?'#8
+#185'['#25#218#134'3'#246#169'H'#252#176'L'#252#176'L'#252#176'L'#223#139'5'
+#183'X'#22#162'?'#8#162'?'#8#162'?'#8#255#0#255#255#0#255#255#0#255#255#0#255
+#162'?'#8#183'S'#5#204'g'#1#183'S'#5#162'?'#8#255#0#255#255#0#255#255#0#255
+#162'?'#8#162'?'#8#185'['#25#185'['#25#185'['#25#185'['#25#185'['#25#185'['
+#25#162'?'#8#162'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#162'?'#8#165'B'#8#180'Q'#5#165'B'#8#162'?'#8#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#162'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'
+#8#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#162'?'#8#162'?'#8#162'?'#8#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#7'Visible'#8#7'OnClick'#7#25'btnGetExternalEditorClick'#0#0#12'TSpeedBu'
+'tton'#9'btnCancel'#4'Left'#3#242#0#6'Height'#2'('#3'Top'#2#6#5'Width'#2'5'#4
+'Flat'#9#10'Glyph.Data'#10#226#2#0#0#222#2#0#0'BM'#222#2#0#0#0#0#0#0#158#0#0
+#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#8#0#0#0#0#0'@'#2#0#0#18#11#0#0#18#11#0#0#26
+#0#0#0#0#0#0#0#2#29#212#0#2#29#217#0#1#30#225#0#1#31#234#0#1#31#241#0#1#31
+#250#0#17'+'#214#0#17'+'#217#0#16','#225#0#16'-'#236#0#16'-'#250#0' :'#233#0
+'1G'#223#0'0H'#231#0'0H'#233#0'0I'#241#0'0I'#249#0'AU'#222#0'Qc'#225#0'ar'
+#234#0'`s'#246#0'`s'#250#0'q'#128#235#0#127#142#252#0#255#0#255#0#128#142#237
,#0#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#7#0#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#1#0#7#24#24#18#0#0#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#1#1#7#24#24#24#17#0#0#0#24#24#24#24
+#24#24#24#24#24#24#24#24#22#1#1#7#24#24#24#24#24#0#0#0#0#24#24#24#24#24#24#24
+#24#24#24#19#1#2#7#24#24#24#24#24#24#24#6#0#1#1#24#24#24#24#24#24#24#24#19#2
+#2#7#24#24#24#24#24#24#24#24#24#12#1#1#1#24#24#24#24#24#24#13#2#2#8#24#24#24
+#24#24#24#24#24#24#24#24#18#1#2#2#24#24#24#24#14#2#2#8#24#24#24#24#24#24#24
+#24#24#24#24#24#24#25#2#2#2#24#24#14#2#2#8#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#8#3#2#3#3#2#9#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24
+#24#24#11#3#3#3#9#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#9
+#3#3#3#15#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#3#3#3#3#3#4
+#15#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#4#3#3#14#24#24#4#4#16#24
+#24#24#24#24#24#24#24#24#24#24#24#24#20#4#4#3#15#24#24#24#24#10#4#16#24#24#24
+#24#24#24#24#24#24#24#24#20#4#4#4#15#24#24#24#24#24#24#16#5#16#24#24#24#24#24
+#24#24#24#24#21#4#4#4#15#24#24#24#24#24#24#24#24#21#5#16#24#24#24#24#24#24#24
+#16#4#5#4#15#24#24#24#24#24#24#24#24#24#24#23#5#10#24#24#24#24#24#16#5#4#4#15
+#24#24#24#24#24#24#24#24#24#24#24#24#24#10#21#24#24#24#24#5#4#5#16#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#16#5#16#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#7'Visible'#8#7'OnClick'#7#14'btnCancelC'
+'lick'#0#0#0#12'TPageControl'#12'pgcPrincipal'#4'Left'#2#0#6'Height'#3#203#1
+#3'Top'#2'K'#5'Width'#3#189#2#10'ActivePage'#7#8'tbsXSDIn'#5'Align'#7#8'alCl'
+'ient'#8'TabIndex'#2#0#8'TabOrder'#2#2#8'TabWidth'#2'd'#10'OnChanging'#7#20
+'pgcPrincipalChanging'#0#9'TTabSheet'#8'tbsXSDIn'#7'Caption'#6#6'XSD In'#12
+'ClientHeight'#3#177#1#11'ClientWidth'#3#181#2#0#5'TMemo'#8'memXSDIn'#4'Left'
+#2#0#6'Height'#3#177#1#3'Top'#2#0#5'Width'#3#181#2#5'Align'#7#8'alClient'#12
+'Font.CharSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7#12'clWindowText'#11'Font.'
+'Height'#2#245#9'Font.Name'#6#11'Courier New'#10'ParentFont'#8#10'ScrollBars'
+#7#6'ssBoth'#8'TabOrder'#2#0#8'WordWrap'#8#0#0#0#9'TTabSheet'#9'tbsXSDOut'#7
+'Caption'#6#7'XSD Out'#12'ClientHeight'#3#177#1#11'ClientWidth'#3#181#2#10'I'
+'mageIndex'#2#1#0#5'TMemo'#9'memXSDOut'#4'Left'#2#0#6'Height'#3#177#1#3'Top'
+#2#0#5'Width'#3#181#2#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_CHAR'
+'SET'#10'Font.Color'#7#12'clWindowText'#11'Font.Height'#2#245#9'Font.Name'#6
+#11'Courier New'#10'ParentFont'#8#10'ScrollBars'#7#6'ssBoth'#8'TabOrder'#2#0
+#8'WordWrap'#8#0#0#0#0#0
]);
unit fXSDEditor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls, Buttons, StdCtrls;
type
TXSDEdit = class(TForm)
pnlTransition: TPanel;
Panel2: TPanel;
pgcPrincipal: TPageControl;
tbsXSDIn: TTabSheet;
tbsXSDOut: TTabSheet;
btnSalvar: TSpeedButton;
btnSendExternalEditor: TSpeedButton;
memXSDIn: TMemo;
memXSDOut: TMemo;
btnGetExternalEditor: TSpeedButton;
btnCancel: TSpeedButton;
procedure FormShow(Sender: TObject);
procedure btnSalvarClick(Sender: TObject);
procedure btnSendExternalEditorClick(Sender: TObject);
procedure pgcPrincipalDrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
procedure btnGetExternalEditorClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure pgcPrincipalChanging(Sender: TObject; var AllowChange: Boolean);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
fBeforeXSD, fAfterXSD: string;
fXSDDoc: TMemo;
fEditing: boolean;
// fUMLTransition: IUMLTransition;
fCurrentFileName: string;
// fStarUMLAPP: IStarUMLApplication;
// procedure SetUMLTransition(const Value: IUMLTransition);
function GetXSDIn: String;
procedure SetXSDIn(const Value: String);
function GetXSDOut: String;
procedure SetXSDOut(const Value: String);
function GetTempPath: String;
function GetCurrentFileName: string;
procedure SetCurrentFileName(const Value: string);
function GetExternalXSDEditor: string;
procedure SetEditing(const Value: boolean);
public
{ Public declarations }
// property Transition: IUMLTransition read fUMLTransition write SetUMLTransition;
property XSDIn: String read GetXSDIn write SetXSDIn;
property XSDOut: String read GetXSDOut write SetXSDOut;
property TempPath: String read GetTempPath;
property CurrentFileName: string read GetCurrentFileName write SetCurrentFileName;
// property StarUMLAPP: IStarUMLApplication read fStarUMLAPP write fStarUMLAPP;
property ExternalXSDEditor: string read GetExternalXSDEditor;
property Editing: boolean read fEditing write SetEditing;
end;
var
XSDEdit: TXSDEdit;
implementation
uses IntegracaoDelphiSUML;
{$R *.dfm}
{ TXSDEditor }
//function CreateProcessSimple(cmd: string): boolean;
//var
// SUInfo: TStartupInfo;
// ProcInfo: TProcessInformation;
//begin
// FillChar(SUInfo, SizeOf(SUInfo), #0);
// SUInfo.cb := SizeOf(SUInfo);
// SUInfo.dwFlags := STARTF_USESHOWWINDOW;
// SUInfo.wShowWindow := SW_HIDE;
//
// Result := CreateProcess(nil,
// PChar(cmd),
// nil,
// nil,
// false,
// CREATE_NEW_CONSOLE or
// NORMAL_PRIORITY_CLASS,
// nil,
// nil,
// SUInfo,
// ProcInfo);
//
// if (Result) then
// begin
// WaitForSingleObject(ProcInfo.hProcess, INFINITE);
//
// CloseHandle(ProcInfo.hProcess);
// CloseHandle(ProcInfo.hThread);
// end;
//end;
procedure TXSDEdit.FormClose(Sender: TObject; var Action: TCloseAction);
begin
end;
procedure TXSDEdit.FormCreate(Sender: TObject);
begin
fEditing := false;
end;
procedure TXSDEdit.FormShow(Sender: TObject);
begin
memXSDIn.Lines.Text := Self.XSDIn;
memXSDOut.Lines.Text := Self.XSDOut;
end;
function TXSDEdit.GetCurrentFileName: string;
begin
result := fCurrentFileName;
end;
function TXSDEdit.GetExternalXSDEditor: string;
begin
// result := Self.StarUMLAPP.GetOptionValue(cOPTIONSCHEMAID, 'EXTERNAL_XSD_EDITOR');
if (result = '') or (not FileExists(result)) then
begin
result := '';
if FileExists('C:\Arquivos de programas\Liquid Technologies\Liquid XML Studio 2008 (v6)\XMLStudio.exe') then
result := 'C:\Arquivos de programas\Liquid Technologies\Liquid XML Studio 2008 (v6)\XMLStudio.exe'
else
if FileExists('C:\Program Files\Liquid Technologies\Liquid XML Studio 2008 (v6)\XMLStudio.exe') then
result := 'C:\Arquivos de programas\Liquid Technologies\Liquid XML Studio 2008 (v6)\XMLStudio.exe';
end;
end;
function TXSDEdit.GetTempPath: String;
begin
Result := IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP'));
end;
function TXSDEdit.GetXSDIn: String;
begin
// result := fUMLTransition.GetTaggedValueAsString('DBMappings', 'TransitionMap', 'XSD In');
end;
function TXSDEdit.GetXSDOut: String;
begin
// result := fUMLTransition.GetTaggedValueAsString('DBMappings', 'TransitionMap', 'XSD Out');
end;
procedure TXSDEdit.pgcPrincipalChanging(Sender: TObject; var AllowChange: Boolean);
begin
if fEditing then
begin
Application.MessageBox('Cannot change tab. Must finish current edition.', 'StarUML', MB_ICONINFORMATION);
AllowChange := false;
end;
end;
procedure TXSDEdit.pgcPrincipalDrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect;
Active: Boolean);
begin
// case TabIndex of
// 0: if memXSDIn.Text <> '' then Control.Canvas.Font.Color:=clblue else Control.Canvas.Font.Color:=clBlack;
// 1: if memXSDOut.Text <> '' then Control.Canvas.Font.Color:=clblue else Control.Canvas.Font.Color:=clBlack;
// end;
// Control.Canvas.TextOut(Rect.left + ((Rect.Right - Rect.left) div 2) - (Control.Canvas.TextWidth(pgcPrincipal.Pages[tabindex].Caption) div 2) ,Rect.top+3,pgcPrincipal.Pages[tabindex].Caption);
// pgcPrincipal.Pages[TabIndex].Font.Color := Control.Canvas.Font.Color;
end;
procedure TXSDEdit.SetCurrentFileName(const Value: string);
begin
fCurrentFileName := value;
end;
procedure TXSDEdit.SetEditing(const Value: boolean);
begin
fEditing := Value;
btnSendExternalEditor.Visible := not value;
btnGetExternalEditor.Visible := value;
btnCancel.Visible := value;
end;
procedure TXSDEdit.SetXSDIn(const Value: String);
begin
// fUMLTransition.SetTaggedValueAsString('DBMappings', 'TransitionMap', 'XSD In', Value);
end;
procedure TXSDEdit.SetXSDOut(const Value: String);
begin
// fUMLTransition.SetTaggedValueAsString('DBMappings', 'TransitionMap', 'XSD Out', Value);
end;
procedure TXSDEdit.btnCancelClick(Sender: TObject);
begin
self.Editing := false;
end;
procedure TXSDEdit.btnGetExternalEditorClick(Sender: TObject);
var laux: TStringList;
begin
lAux := TStringList.Create;
try
lAux.LoadFromFile(self.TempPath + Self.CurrentFileName);
fAfterXSD := lAux.Text;
finally
lAux.free;
end;
if fBeforeXSD <> fAfterXSD then
begin
fXSDDoc.Lines.Text := fAfterXSD;
if pgcPrincipal.ActivePage = tbsXSDIn then
Self.XSDIn := fAfterXSD
else if pgcPrincipal.ActivePage = tbsXSDOut then
Self.XSDOut := fAfterXSD;
end;
self.Editing := false;
end;
procedure TXSDEdit.btnSalvarClick(Sender: TObject);
begin
if pgcPrincipal.ActivePage = tbsXSDIn then
begin
XSDIn := memXSDIn.Lines.Text;
end else if pgcPrincipal.ActivePage = tbsXSDOut then
begin
XSDOut := memXSDOut.Lines.Text;
end;
end;
procedure TXSDEdit.btnSendExternalEditorClick(Sender: TObject);
var
SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
lOk: boolean;
lAux: TStringList;
begin
if Self.ExternalXSDEditor = '' then
begin
Application.MessageBox('Need to define an external XSD editor.','StarUML', MB_ICONINFORMATION);
exit;
end;
Self.CurrentFileName := 'StarUmlXSDTmpFile.xsd';
if pgcPrincipal.ActivePage = tbsXSDIn then
fXSDDoc := memXSDIn
else if pgcPrincipal.ActivePage = tbsXSDOut then
fXSDDoc := memXSDOut;
lAux := TStringList.Create;
try
if trim(fXSDDoc.Lines.Text) = '' then
lAux.Text := '<?xml version="1.0" encoding="utf-8" ?>' + #13#10 +
'<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" />'
else
lAux.Text := fXSDDoc.Lines.Text;
fBeforeXSD := lAux.Text;
try
if FileExists(self.TempPath + Self.CurrentFileName) then DeleteFile(self.TempPath + Self.CurrentFileName);
lAux.SaveToFile(self.TempPath + Self.CurrentFileName);
except
Randomize;
Self.CurrentFileName := 'StarUmlXSDTmpFile' + inttostr(Random(999999)) + '.xsd';
lAux.SaveToFile(self.TempPath + Self.CurrentFileName);
end;
finally
lAux.free;
end;
FillChar(SUInfo, SizeOf(SUInfo), #0);
SUInfo.cb := SizeOf(SUInfo);
SUInfo.dwFlags := STARTF_USESHOWWINDOW;
SUInfo.wShowWindow := SW_SHOWNORMAL;
lOk := CreateProcess(nil,
PChar(ExternalXSDEditor + ' ' + self.TempPath + Self.CurrentFileName),
nil,
nil,
false,
CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS,
nil,
nil,
SUInfo,
ProcInfo);
self.Editing := lOK;
if (lOk) then
begin
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
end;
end.
object PreviewClassCode: TPreviewClassCode
Left = 0
Height = 573
Top = 0
Width = 799
Caption = 'Preview Class Code'
ClientHeight = 573
ClientWidth = 799
Color = clBtnFace
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Position = poScreenCenter
LCLVersion = '2.1.0.0'
object Panel2: TPanel
Left = 0
Height = 573
Top = 0
Width = 799
Align = alClient
BevelOuter = bvLowered
ClientHeight = 573
ClientWidth = 799
TabOrder = 0
object Panel1: TPanel
Left = 1
Height = 40
Top = 1
Width = 797
Align = alTop
ClientHeight = 40
ClientWidth = 797
TabOrder = 0
object Button1: TButton
Left = 12
Height = 25
Top = 8
Width = 65
Caption = 'Salvar'
OnClick = Button1Click
TabOrder = 0
end
end
object pgc_Main: TPageControl
Left = 1
Height = 531
Top = 41
Width = 797
ActivePage = TabSheet1
Align = alClient
TabIndex = 0
TabOrder = 1
object TabSheet1: TTabSheet
Caption = 'Class Preview'
ClientHeight = 505
ClientWidth = 789
object pgc_ClassCode: TPageControl
Left = 0
Height = 505
Top = 0
Width = 789
ActivePage = TabSheet4
Align = alClient
TabIndex = 1
TabOrder = 0
object TabSheet3: TTabSheet
Caption = 'Delphi'
ClientHeight = 0
ClientWidth = 0
inline mem_ClassPascal: TSynEdit
Left = 0
Height = 472
Top = 0
Width = 781
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
object TabSheet4: TTabSheet
Caption = 'Java'
ClientHeight = 479
ClientWidth = 781
ImageIndex = 1
inline mem_ClassJava: TSynEdit
Left = 0
Height = 479
Top = 0
Width = 781
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
object TabSheet5: TTabSheet
Caption = 'C#'
ClientHeight = 0
ClientWidth = 0
ImageIndex = 2
inline mem_ClassCSharp: TSynEdit
Left = 0
Height = 472
Top = 0
Width = 781
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
object TabSheet6: TTabSheet
Caption = 'SQL'
ClientHeight = 0
ClientWidth = 0
ImageIndex = 3
object PageControl1: TPageControl
Left = 0
Height = 472
Top = 0
Width = 781
ActivePage = TabSheet10
Align = alClient
TabIndex = 0
TabOrder = 0
object TabSheet10: TTabSheet
Caption = 'SQL Server'
ClientHeight = 0
ClientWidth = 0
inline mem_ClassSQL: TSynEdit
Left = 0
Height = 441
Top = 0
Width = 773
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
object TabSheet14: TTabSheet
Caption = 'Oracle'
ClientHeight = 0
ClientWidth = 0
ImageIndex = 1
inline mem_ClassOracle: TSynEdit
Left = 0
Height = 441
Top = 0
Width = 773
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
end
end
end
end
object TabSheet2: TTabSheet
Caption = 'Usecase Preview'
ClientHeight = 0
ClientWidth = 0
ImageIndex = 1
TabVisible = False
object pgc_UseCase: TPageControl
Left = 0
Height = 503
Top = 0
Width = 789
ActivePage = Server
Align = alClient
TabIndex = 1
TabOrder = 0
object Client: TTabSheet
Caption = 'Client'
ClientHeight = 0
ClientWidth = 0
object pgc_UseCaseCode: TPageControl
Left = 0
Height = 472
Top = 0
Width = 781
ActivePage = TabSheet7
Align = alClient
TabIndex = 0
TabOrder = 0
object TabSheet7: TTabSheet
Caption = 'Delphi'
ClientHeight = 0
ClientWidth = 0
inline mem_UsecaseClientPascal: TSynEdit
Left = 0
Height = 441
Top = 0
Width = 773
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
object TabSheet8: TTabSheet
Caption = 'Java'
ClientHeight = 0
ClientWidth = 0
ImageIndex = 1
inline mem_UsecaseClientJava: TSynEdit
Left = 0
Height = 441
Top = 0
Width = 773
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
object TabSheet9: TTabSheet
Caption = 'C#'
ClientHeight = 0
ClientWidth = 0
ImageIndex = 2
inline mem_UsecaseClientCSharp: TSynEdit
Left = 0
Height = 441
Top = 0
Width = 773
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
end
end
object Server: TTabSheet
Caption = 'Server'
ClientHeight = 0
ClientWidth = 0
ImageIndex = 1
object PageControl4: TPageControl
Left = 0
Height = 472
Top = 0
Width = 781
ActivePage = TabSheet13
Align = alClient
TabIndex = 2
TabOrder = 0
object TabSheet11: TTabSheet
Caption = 'Delphi'
ClientHeight = 0
ClientWidth = 0
inline mem_UsecaseServerPascal: TSynEdit
Left = 0
Height = 441
Top = 0
Width = 773
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
object TabSheet12: TTabSheet
Caption = 'Java'
ClientHeight = 0
ClientWidth = 0
ImageIndex = 1
inline mem_UsecaseServerJava: TSynEdit
Left = 0
Height = 441
Top = 0
Width = 773
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
object TabSheet13: TTabSheet
Caption = 'C#'
ClientHeight = 0
ClientWidth = 0
ImageIndex = 2
inline mem_UsecaseServerCSharp: TSynEdit
Left = 0
Height = 441
Top = 0
Width = 773
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
ReadOnly = True
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
end
end
end
end
end
end
end
unit formMemo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, SynEdit;
type
TPreviewClassCode = class(TForm)
Panel2: TPanel;
Panel1: TPanel;
Button1: TButton;
pgc_Main: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
pgc_ClassCode: TPageControl;
TabSheet3: TTabSheet;
mem_ClassPascal: TSynEdit;
TabSheet4: TTabSheet;
mem_ClassJava: TSynEdit;
TabSheet5: TTabSheet;
mem_ClassCSharp: TSynEdit;
TabSheet6: TTabSheet;
pgc_UseCase: TPageControl;
Client: TTabSheet;
Server: TTabSheet;
pgc_UseCaseCode: TPageControl;
TabSheet7: TTabSheet;
mem_UsecaseClientPascal: TSynEdit;
TabSheet8: TTabSheet;
mem_UsecaseClientJava: TSynEdit;
TabSheet9: TTabSheet;
mem_UsecaseClientCSharp: TSynEdit;
PageControl4: TPageControl;
TabSheet11: TTabSheet;
mem_UsecaseServerPascal: TSynEdit;
TabSheet12: TTabSheet;
mem_UsecaseServerJava: TSynEdit;
TabSheet13: TTabSheet;
mem_UsecaseServerCSharp: TSynEdit;
PageControl1: TPageControl;
TabSheet10: TTabSheet;
TabSheet14: TTabSheet;
mem_ClassSQL: TSynEdit;
mem_ClassOracle: TSynEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function GetActiveCode: string;
public
{ Public declarations }
end;
implementation
{$R *.dfm}
procedure TPreviewClassCode.Button1Click(Sender: TObject);
var SaveDialog1: TSaveDialog;
lsNGUFile: String;
myFile : TextFile;
begin
SaveDialog1 := TSaveDialog.Create(nil);
try
if SaveDialog1.Execute then
begin
lsNGUFile := SaveDialog1.FileName;
AssignFile(myFile, lsNGUFile);
ReWrite(myFile);
WriteLn(myFile, GetActiveCode);
// Close the file
CloseFile(myFile);
Application.MessageBox(PAnsiChar('Arquivo gerado com sucesso!'), 'Ateno');
end;
finally
SaveDialog1.Free;
end;
end;
function TPreviewClassCode.GetActiveCode: string;
var lObj: TControl;
begin
result := '';
lObj := pgc_Main.ActivePage.Controls[0];
while lObj is TPageControl do
lObj := TPageControl(lObj).ActivePage.Controls[0];
if lObj is TSynEdit then
Result := TSynEdit(lObj).Lines.Text;
end;
end.
object DataBaseLogin: TDataBaseLogin
Left = 2368
Height = 294
Top = 542
Width = 335
BorderIcons = [biSystemMenu]
BorderStyle = bsDialog
Caption = 'Connect to Database Server'
ClientHeight = 294
ClientWidth = 335
Color = clBtnFace
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Trebuchet MS'
OnClose = FormClose
OnShow = FormShow
Position = poOwnerFormCenter
LCLVersion = '2.0.0.4'
object Bevel1: TBevel
Left = 16
Height = 8
Top = 240
Width = 304
Shape = bsTopLine
end
object Button1: TButton
Left = 164
Height = 25
Top = 256
Width = 75
Caption = 'Ok'
Default = True
OnClick = Button1Click
TabOrder = 4
end
object Button2: TButton
Left = 245
Height = 25
Top = 256
Width = 75
Cancel = True
Caption = 'Cancel'
OnClick = Button2Click
TabOrder = 5
end
object cbODBCD_DSN: TComboBox
Left = 16
Height = 26
Top = 31
Width = 304
ItemHeight = 18
OnChange = cbODBCD_DSNChange
Style = csDropDownList
TabOrder = 0
end
object edtUsuario: TLabeledEdit
Left = 16
Height = 26
Top = 144
Width = 304
EditLabel.Height = 18
EditLabel.Width = 304
EditLabel.Caption = 'Usuário'
EditLabel.ParentColor = False
TabOrder = 2
end
object edtPassword: TLabeledEdit
Left = 16
Height = 26
Top = 200
Width = 304
EchoMode = emPassword
EditLabel.Height = 18
EditLabel.Width = 304
EditLabel.Caption = 'Senha'
EditLabel.ParentColor = False
PasswordChar = '*'
TabOrder = 3
end
object Label1: TLabel
Left = 16
Height = 18
Top = 12
Width = 59
Caption = 'ODBC DSN'
ParentColor = False
end
object cbDialect: TComboBox
Left = 16
Height = 26
Top = 85
Width = 304
ItemHeight = 18
OnChange = cbODBCD_DSNChange
Style = csDropDownList
TabOrder = 1
end
object Label2: TLabel
Left = 16
Height = 18
Top = 66
Width = 41
Caption = 'Dialeto'
ParentColor = False
end
end
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TDataBaseLogin','FORMDATA',[
'TPF0'#14'TDataBaseLogin'#13'DataBaseLogin'#4'Left'#2#0#6'Height'#3#243#0#3'T'
+'op'#2#0#5'Width'#3'Y'#1#11'BorderIcons'#11#12'biSystemMenu'#0#11'BorderStyl'
+'e'#7#8'bsDialog'#7'Caption'#6#30'Connect to SQL Database Server'#12'ClientH'
+'eight'#3#243#0#11'ClientWidth'#3'Y'#1#5'Color'#7#9'clBtnFace'#10'Font.Color'
+#7#12'clWindowText'#11'Font.Height'#2#243#9'Font.Name'#6#12'Trebuchet MS'#7
+'OnClose'#7#9'FormClose'#6'OnShow'#7#8'FormShow'#8'Position'#7#15'poDesktopC'
+'enter'#10'LCLVersion'#6#7'2.1.0.0'#0#6'TBevel'#6'Bevel1'#4'Left'#2#7#6'Heig'
+'ht'#2#8#3'Top'#3#200#0#5'Width'#3'K'#1#5'Shape'#7#9'bsTopLine'#0#0#7'TButto'
+'n'#7'Button1'#4'Left'#3#180#0#6'Height'#2#25#3'Top'#3#210#0#5'Width'#2'K'#7
+'Caption'#6#2'Ok'#7'Default'#9#7'OnClick'#7#12'Button1Click'#8'TabOrder'#2#0
+#0#0#7'TButton'#7'Button2'#4'Left'#3#5#1#6'Height'#2#25#3'Top'#3#210#0#5'Wid'
+'th'#2'K'#6'Cancel'#9#7'Caption'#6#6'Cancel'#7'OnClick'#7#12'Button2Click'#8
+'TabOrder'#2#1#0#0#16'TValueListEditor'#7'vleConn'#4'Left'#2#0#6'Height'#3
+#194#0#3'Top'#2#0#5'Width'#3'Y'#1#5'Align'#7#5'alTop'#9'FixedCols'#2#0#8'Row'
+'Count'#2#2#10'ScrollBars'#7#6'ssNone'#8'TabOrder'#2#2#15'TitleFont.Color'#7
+#12'clWindowText'#16'TitleFont.Height'#2#243#14'TitleFont.Name'#6#12'Trebuch'
+'et MS'#10'KeyOptions'#11#9'keyUnique'#0#7'Options'#11#15'goFixedVertLine'#15
+'goFixedHorzLine'#10'goVertLine'#10'goHorzLine'#13'goRangeSelect'#19'goDrawF'
+'ocusSelected'#11'goColSizing'#9'goEditing'#18'goAlwaysShowEditor'#0#21'Titl'
+'eCaptions.Strings'#1#6#5'Param'#6#5'Value'#0#9'ColWidths'#1#3#150#0#3#191#0
+#0#0#0#7'TBitBtn'#7'BitBtn1'#4'Left'#2#16#6'Height'#2#25#3'Top'#3#210#0#5'Wi'
+'dth'#2'K'#7'Caption'#6#7'Options'#7'OnClick'#7#12'BitBtn1Click'#8'TabOrder'
+#2#3#0#0#0
]);
unit ituDataBaseLogin;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, ValEdit, Registry, Buttons, RTTICtrls,
IntegracaoDelphiSUML, acuSQLDialectManager;
const cPROJECT_SAVE_OPTIONS_PATH = 'Software\StarUML\Options\' + cOPTIONSCHEMAID + '\Projects\';
type
{ TDataBaseLogin }
TDataBaseLogin = class(TForm)
Bevel1: TBevel;
Button1: TButton;
Button2: TButton;
cbODBCD_DSN: TComboBox;
cbDialect: TComboBox;
Label1: TLabel;
edtUsuario: TLabeledEdit;
edtPassword: TLabeledEdit;
Label2: TLabel;
procedure cbODBCD_DSNChange(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
FProjectFileName: string;
procedure SetProjectFileName(const Value: string);
public
property ProjectFileName: string read FProjectFileName write SetProjectFileName;
end;
implementation
uses strUtils, odbc_dsn_win, acuObject, utuFactory;
{$R *.dfm}
procedure TDataBaseLogin.Button2Click(Sender: TObject);
begin
ModalResult := mrCancel;
end;
procedure TDataBaseLogin.Button1Click(Sender: TObject);
var lReg: TRegistry;
begin
ModalResult := mrNone;
if (cbODBCD_DSN.ItemIndex <> -1) and (cbDialect.ItemIndex <> -1) then
begin
lReg := TRegistry.Create;
try
lReg.RootKey := HKEY_CURRENT_USER;
lReg.OpenKey(cPROJECT_SAVE_OPTIONS_PATH + ProjectFileName + '\Explorer', true);
lReg.WriteString('DEFAULT_DSN', cbODBCD_DSN.Caption);
lReg.WriteString('DEFAULT_DSN_USER', edtUsuario.Text);
lReg.WriteString('DEFAULT_SQL_DIALECT', cbDialect.Caption);
finally
lReg.free;
end;
ModalResult := mrOk;
end;
end;
procedure TDataBaseLogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caHide;
end;
procedure TDataBaseLogin.cbODBCD_DSNChange(Sender: TObject);
begin
edtUsuario.Text := GetDSNLastUser(cbODBCD_DSN.Text);
edtPassword.Text := '';
end;
procedure TDataBaseLogin.FormShow(Sender: TObject);
var lReg: TRegistry;
lDSN, lDialect: string;
lObj: acObject;
begin
GetSystemDSNList(cbODBCD_DSN.Items);
GetUserDSNList(cbODBCD_DSN.Items);
for lObj in gSQLDialectManager.InstancedObjects do
begin
cbDialect.AddItem(acFactoredObject(lObj).Ticket.Code, lObj);
end;
ModalResult := mrNone;
lReg := TRegistry.Create;
try
lReg.RootKey := HKEY_CURRENT_USER;
lReg.OpenKey(cPROJECT_SAVE_OPTIONS_PATH + ProjectFileName + '\Explorer', true);
lDSN := lReg.ReadString('DEFAULT_DSN');
if lDSN <> '' then cbODBCD_DSN.ItemIndex := cbODBCD_DSN.Items.IndexOf(lDSN);
edtUsuario.Text := lReg.ReadString('DEFAULT_DSN_USER');
lDialect := lReg.ReadString('DEFAULT_SQL_DIALECT');
if lDialect <> '' then cbDialect.ItemIndex := cbDialect.Items.IndexOf(lDialect);
finally
lReg.free;
end;
if (cbODBCD_DSN.Caption <> '') and (cbDialect.Caption <> '') and (edtUsuario.Text <> '')
then edtPassword.SetFocus;
end;
procedure TDataBaseLogin.SetProjectFileName(const Value: string);
begin
FProjectFileName := Value;
end;
end.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
unit ituExplorerV2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Clipbrd, Dialogs, ExtCtrls, StdCtrls, ComCtrls, StdActns, ActnList, ToolWin,
LCLType, acuSQLDialectManager, ImgList, acuframework, DB,
IntegracaoDelphiSUML, acuObjectExplorer, Menus, Buttons, SynEdit,
SynHighlighterSQL, SynCompletion, acuModel, acuRepositorySQL;
type
TDLLDialog = class(TForm)
protected
procedure CreateParams(var Params: TCreateParams); override;
public
procedure BtnShowMessageClick(Sender: TObject);
constructor Create(aOwner: TComponent); override;
public
ParentFormHandle: HWND;
end;
{ TExplorerV2 }
TExplorerV2 = class(TForm)
actExecute: TAction;
actCancel: TAction;
ilModel: TImageList;
lvXMLListResult: TListView;
memXMLTextResult: TMemo;
OQLObjects: TObjectExplorer;
pcXMLResults: TPageControl;
pnlStatusBar: TPanel;
ReconnectDB: TAction;
sbDB: TStatusBar;
sbStatusBar: TStatusBar;
spResultXML: TSplitter;
spResultObject: TSplitter;
SynCompletion1: TSynCompletion;
SynEditOQL: TSynEdit;
SynEditSQL: TSynEdit;
SynSQLSyn1: TSynSQLSyn;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton10: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
tsList: TTabSheet;
tsXML: TTabSheet;
XMLQuery: TAction;
OQLQuery: TAction;
actResultsPanel: TAction;
actModelPanel: TAction;
ActionList1: TActionList;
pnlEditor: TPanel;
pnlModel: TPanel;
splVertical: TSplitter;
pnlResult: TPanel;
tvModelExplorer: TTreeView;
// con1: TADOConnection;
il1: TImageList;
pmCopiar: TPopupMenu;
Copia: TMenuItem;
pcEditor: TPageControl;
tsOQL: TTabSheet;
tsSQL: TTabSheet;
pcResults: TPageControl;
tsQueryResult: TTabSheet;
tsError: TTabSheet;
memErrorText: TMemo;
pnlActionBar: TPanel;
procedure actModelPanelExecute(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure actResultsPanelExecute(Sender: TObject);
procedure tvModelExplorerGetSelectedIndex(Sender: TObject; Node: TTreeNode);
procedure tvModelExplorerItemExpanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean);
procedure XMLQueryExecute(Sender: TObject);
procedure actExecuteExecute(Sender: TObject);
procedure memOQLQuery2DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure memOQLQuery2DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
procedure CopiaDadosObjeto(Sender: TObject);
procedure OQLObjectstvExplorerKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure OQLObjectstvExplorerMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure ReconnectDBExecute(Sender: TObject);
procedure pcEditorChange(Sender: TObject);
procedure OQLQueryExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
fExecuting: Boolean;
fMetaModel: acMetaModel;
fMetaModelPersistenceMap: acMetaModelPersistenceMapSQL;
fSession: acPersistenceSession;
fConnectionString: string;
fSQLDialect: acAbstractSQLDialect;
fSchema: String;
fUtil: TUtil;
fLastExecErrorFlag: Boolean;
procedure SetMetaModel(const Value: acMetaModel);
procedure ResizeColumns(piListView: TListView);
function GetStringEntreParenteses(piString : string) : string;
function GetNumeroDeStringOID (piString : string) : string;
procedure CopiaTextoObjeto (piObjeto : TTreeNode);
protected
procedure CreateParams(var Params : TCreateParams); override;
function Connect : acPersistenceSession;
public
{ Public declarations }
property MetaModel: acMetaModel read fMetaModel write SetMetaModel;
property Util: TUtil read fUtil;
end;
var
ExplorerV2: TExplorerV2;
implementation
uses ituDataBaseLogin, DateUtils, acuObject, acuOQL, acuOQLtoSQLTranslator,
utuMessage, ituOQLParams;
{$R *.dfm}
procedure TExplorerV2.actExecuteExecute(Sender: TObject);
var lList: acPersistentObjectList;
lStart: TDateTime;
lOQLQuery: acAbstractOQLQuery;
lOQLParams: TOQLParams;
lResultField: utField;
lEnum: acEnumerator;
lField: utField;
lColumn: TListColumn;
lListItem: TListItem;
lEnumAtt: acEnumerator;
lFirstItemFlag: Boolean;
lCount: integer;
begin
lCount := 0;
if (SynEditOQL.Text <> '') and (not fExecuting) then
begin
fExecuting := True;
try
if assigned(fSession) then FreeAndNil(fSession);
fSession := Connect;
if Assigned(fSession) then
begin
SynEditSQL.Text := '';
OQLObjects.SetList(nil, '');
lvXMLListResult.Clear;
lvXMLListResult.Columns.Clear;
pcResults.ActivePageIndex := 0;
if OQLQuery.Checked then
begin
lList := acPersistentObjectList.Create;
try
sbStatusBar.Panels[0].Text := 'Executing query...';
sbStatusBar.Panels[1].Text := '';
sbStatusBar.Panels[2].Text := '';
Application.ProcessMessages;
if SynEditOQL.SelText = ''
then lOQLQuery := acOQLQuery.Create(fSession, SynEditOQL.Text)
else lOQLQuery := acOQLQuery.Create(fSession, SynEditOQL.SelText);
try
if lOQLQuery.Parameters.Count > 0 then
begin
lOQLParams := TOQLParams.Create(nil, lOQLQuery);
try
lOQLParams.ShowModal;
finally
lOQLParams.free;
end;
end;
lStart := Now;
(lOQLQuery as acOQLQuery).LoadList(lList);
SynEditSQL.Text := lOQLQuery.GetSQLText;
finally
lOQLQuery.Free;
end;
sbStatusBar.Panels[2].Text := SysUtils.TimeToStr(TimeOf(Now - lStart));
sbStatusBar.Panels[0].Text := 'Query completed.';
if lList.Count <= 1 then
sbStatusBar.Panels[1].Text := inttostr(lList.Count) + ' object'
else
sbStatusBar.Panels[1].Text := inttostr(lList.Count) + ' objects';
OQLObjects.SetList(lList, 'OQL Results');
fLastExecErrorFlag := False;
if not actResultsPanel.Checked then actResultsPanel.Execute;
finally
lList.Free;
end;
end
else
begin
pcXMLResults.ActivePageIndex := 0;
sbStatusBar.Panels[0].Text := 'Executing query...';
sbStatusBar.Panels[1].Text := '';
sbStatusBar.Panels[2].Text := '';
Application.ProcessMessages;
if SynEditOQL.SelText = ''
then lOQLQuery := acDataSetOQLQuery.Create(fSession, SynEditOQL.Text)
else lOQLQuery := acDataSetOQLQuery.Create(fSession, SynEditOQL.SelText);
try
if lOQLQuery.Parameters.Count > 0 then
begin
lOQLParams := TOQLParams.Create(nil, lOQLQuery);
try
lOQLParams.ShowModal;
finally
lOQLParams.free;
end;
end;
lStart := Now;
lResultField := utField.Create;
try
lResultField.Name := 'ROOT';
(lOQLQuery as acDataSetOQLQuery).LoadDataSet(lResultField);
SynEditSQL.Text := lOQLQuery.GetSQLText;
memXMLTextResult.Text := lResultField.GetXMLString([XMLOptions.xoLegible]);
lvXMLListResult.Items.BeginUpdate;
try
//Adiciona as colunas no listview
if (lResultField.HasField('DATAPACKET')) and (lResultField.FieldByName('DATAPACKET').HasField('METADATA')) then
begin
lEnum := lResultField.FieldByName('DATAPACKET').FieldByName('METADATA').FieldByName('FIELDS').GetFieldsEnumerator;
try
while not lEnum.EOL do
begin
lField := utField(lEnum.Current);
lColumn := lvXMLListResult.Columns.Add;
lColumn.Caption := lField.AttributeByName('Name').AsString;
lColumn.AutoSize := True;
lEnum.MoveNext;
end;
finally
lEnum.Free;
end;
end;
if (lResultField.HasField('DATAPACKET')) and (lResultField.FieldByName('DATAPACKET').HasField('ROWDATA')) then
begin
lCount := lResultField.FieldByName('DATAPACKET').FieldByName('ROWDATA').AttributeByName('Count').AsInteger;
lEnum := lResultField.FieldByName('DATAPACKET').FieldByName('ROWDATA').GetFieldsEnumerator;
try
while not lEnum.EOL do
begin
lField := utField(lEnum.Current);
lListItem := lvXMLListResult.Items.Add;
lEnumAtt := lField.GetAttibutesEnumerator;
try
lFirstItemFlag := true;
while not lEnumAtt.EOL do
begin
if lFirstItemFlag then
begin
lListItem.Caption := utAttribute(lEnumAtt.Current).AsString;
lFirstItemFlag := false;
end
else
lListItem.SubItems.Add(utAttribute(lEnumAtt.Current).AsString);
lEnumAtt.MoveNext;
end;
finally
lEnumAtt.Free;
end;
lEnum.MoveNext;
end;
finally
lEnum.Free;
end;
end;
finally
lvXMLListResult.Items.EndUpdate;
end;
finally
lResultField.free;
end;
// ResizeColumns(lvXMLListResult);
finally
lOQLQuery.Free;
end;
sbStatusBar.Panels[2].Text := SysUtils.TimeToStr(TimeOf(Now - lStart));
if lCount <= 1 then
sbStatusBar.Panels[1].Text := inttostr(lCount) + ' row'
else
sbStatusBar.Panels[1].Text := inttostr(lCount) + ' rows';
sbStatusBar.Panels[0].Text := 'Query completed.';
fLastExecErrorFlag := False;
if not actResultsPanel.Checked then actResultsPanel.Execute;
end;
end;
except
on e: Exception do
begin
fLastExecErrorFlag := True;
memErrorText.Text := e.Message;
pcResults.ActivePageIndex := 1;
sbStatusBar.Panels[0].Text := 'Query completed with errors.';
if not actResultsPanel.Checked then actResultsPanel.Execute;
end;
end;
end;
fExecuting := False;
end;
procedure TExplorerV2.actModelPanelExecute(Sender: TObject);
var
lAction : TAction;
begin
lAction := (Sender as TAction);
lAction.Checked := not lAction.Checked;
if lAction.Checked then
begin
pnlModel.Visible := True;
if pnlModel.Width <= 10 then
pnlModel.Width := 20;
end
else
begin
pnlModel.Visible := False;
end;
end;
procedure TExplorerV2.actResultsPanelExecute(Sender: TObject);
var
lAction : TAction;
begin
lAction := (Sender as TAction);
lAction.Checked := not lAction.Checked;
if lAction.Checked then
begin
if fLastExecErrorFlag then
begin
pcResults.ActivePageIndex := 1;
pnlResult.Visible := True;
spResultXML.Visible := True;
spResultXML.Align := alBottom;
if pnlResult.Height <= 10 then
pnlResult.Height := 20;
end
else
begin
if OQLQuery.Checked then
begin
OQLObjects.Visible := True;
spResultObject.Visible := True;
spResultObject.Align := alRight;
spResultXML.Visible := False;
end
else
begin
spResultObject.Visible := False;
pnlResult.Visible := True;
spResultXML.Visible := True;
spResultXML.Align := alBottom;
end;
end;
end
else
begin
spResultXML.Align := alNone;
spResultObject.Align := alNone;
spResultXML.Visible := False;
spResultObject.Visible := False;
pnlResult.Visible := False;
OQLObjects.Visible := False;
end;
end;
procedure TExplorerV2.tvModelExplorerGetSelectedIndex(Sender: TObject; Node: TTreeNode);
begin
Node.SelectedIndex := Node.ImageIndex;
end;
procedure TExplorerV2.OQLQueryExecute(Sender: TObject);
begin
OQLQuery.Checked := True;
XMLQuery.Checked := False;
end;
function TExplorerV2.Connect: acPersistenceSession;
var
lDataBaseLogin: TDataBaseLogin;
lModalResult: Integer;
begin
lModalResult := mrOk;
Result := Nil;
lDataBaseLogin := TDataBaseLogin.Create(Self);
try
lDataBaseLogin.ProjectFileName := ExtractFileName(fUtil.StarUMLApp.ProjectManager.FileName);
while (lModalResult = mrOk) and (not Assigned(Result)) do
begin
if fConnectionString = '' then
begin
lModalResult := lDataBaseLogin.ShowModal;
if lModalResult = mrok then
begin
fConnectionString := format('DSN=%s;UID=%s;PWD=%s',[lDataBaseLogin.cbODBCD_DSN.Text, lDataBaseLogin.edtUsuario.Text, lDataBaseLogin.edtPassword.Text]);
fSQLDialect := lDataBaseLogin.cbDialect.Items.Objects[lDataBaseLogin.cbDialect.ItemIndex] as acAbstractSQLDialect;
sbDB.Panels[0].Text := Format('DSN: %s UID: %s Dialect: %s', [lDataBaseLogin.cbODBCD_DSN.Text, lDataBaseLogin.edtUsuario.Text, lDataBaseLogin.cbDialect.Caption]);
end
else exit;
end;
if fConnectionString <> '' then
begin
try
Result := PersistenceManager.OpenSession(fMetaModelPersistenceMap, fConnectionString);
(Result.Repository as acRepositorySQL).SQLDialect := fSQLDialect;
if actResultsPanel.Checked then actResultsPanel.Execute;
sbStatusBar.Panels[0].Text := '';
sbStatusBar.Panels[1].Text := '';
sbStatusBar.Panels[2].Text := '';
OQLObjects.SetList(nil, '');
lvXMLListResult.Clear;
lvXMLListResult.Columns.Clear;
memXMLTextResult.Clear;
pcResults.ActivePageIndex := 0;
Except
on e:Exception do
begin
fConnectionString := '';
ShowMessage(e.Message);
end;
end;
end;
end;
finally
lDataBaseLogin.Free;
end;
end;
procedure TExplorerV2.CopiaDadosObjeto(Sender: TObject);
begin
if Assigned(OQLObjects.tvExplorer.Selected) then
CopiaTextoObjeto(OQLObjects.tvExplorer.Selected);
end;
procedure TExplorerV2.CopiaTextoObjeto(piObjeto: TTreeNode);
var
lString : string;
begin
lString := piObjeto.Text;
lString := GetNumeroDeStringOID(GetStringEntreParenteses(lString));
if lString <> '' then
Clipbrd.Clipboard.AsText := lString;
end;
procedure TExplorerV2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
{$IFDEF LCLWin32}
// Params.WndParent := 0;
{$ENDIF}
end;
procedure TExplorerV2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caHide;
end;
procedure TExplorerV2.FormCreate(Sender: TObject);
var lMetaModelGenOpt: TMetaModelGenerationOptions;
begin
lMetaModelGenOpt.CheckDBAttributeNameLength := true;
lMetaModelGenOpt.CheckDBTableNameLength := true;
fUtil := TUtil.Create;
fUtil.AlimentarMetamodel(lMetaModelGenOpt, nil);
FMetaModelPersistenceMap := fUtil.MetaModelPersistenceMap;
MetaModel := fUtil.MetaModel;
end;
procedure TExplorerV2.FormDestroy(Sender: TObject);
begin
fUtil.Free;
end;
procedure TExplorerV2.FormShow(Sender: TObject);
begin
OQLQuery.Execute;
spResultObject.Visible := False;
spResultObject.Align := alNone;
spResultXML.Visible := False;
spResultXML.Align := alNone;
pnlResult.Visible := False;
pcEditor.ActivePageIndex := 0;
pcResults.ActivePageIndex := 1;
end;
function TExplorerV2.GetNumeroDeStringOID(piString: string): string;
var
lString : string;
lEnum : Integer;
begin
lString := '';
// Verifica se a string tem mais que 4 caracteres
if Length(piString) > 4 then
begin
// Extrai os 4 primeiros caracteres da string
for lEnum := 1 to 4 do
begin
lString := Concat(lString,piString[lEnum])
end;
// Se a string comear com OID: esses 4 primeiro caracteres sero excludos
if lString = 'OID:' then
begin
lString := '';
for lEnum := 5 to Length(piString) do
begin
lString := Concat(lString,piString[lEnum])
end;
end
// Caso contrrio copia-se a string toda
else
begin
lString := '';
for lEnum := 1 to Length(piString) do
begin
lString := Concat(lString,piString[lEnum])
end;
end;
end
else
begin
lString := piString;
end;
Result := lString;
end;
function TExplorerV2.GetStringEntreParenteses(piString: string): string;
var
lString : string;
lEnum : Integer;
flagDadosDesejados : Boolean;
begin
flagDadosDesejados := False;
lString := '';
for lEnum := 1 to Length(piString) do
begin
// Fim dos dados entre parenteses
if piString[lEnum] = ')' then
flagDadosDesejados := False;
if flagDadosDesejados then
begin
lString := Concat(lString,piString[lEnum])
end;
// Inicio dos dados entre parenteses
if piString[lEnum] = '(' then
flagDadosDesejados := True;
end;
Result := lString;
end;
procedure TExplorerV2.memOQLQuery2DragDrop(Sender, Source: TObject; X,Y: Integer);
function FromClause(piNode: TTreeNode; var poPath: string): string;
begin
if piNode.Level = 1
then begin
poPath := acClassTicket(piNode.Data).PersistentObjectClassName;
result := poPath;
end
else begin
result := FromClause(piNode.Parent, poPath);
poPath := poPath + '.' + copy(piNode.Text, 1, pred(pos(':', piNode.Text)));
result := result + ', ' + #13#10 + ' ' + poPath;
end;
end;
var lCaption: string;
lNode: TTreeNode;
lPath: string;
lFrom: string;
lSelect: string;
begin
if Source is TTreeView then
begin
lNode := TTreeView(Source).Selected;
if (TObject(lNode.Data) is acClassTicket)
then begin
lCaption := acClassTicket(lNode.Data).PersistentObjectClassName;
if GetKeyState(VK_CONTROL) < 0
then SynEditOQL.SelText := #13#10 +
'SELECT ' + lCaption + #13#10 +
'FROM ' + lCaption
else SynEditOQL.SelText := lCaption;
end
else if (TObject(lNode.Data) is acAttributeTicket) then
begin
if GetKeyState(VK_CONTROL) < 0
then begin
lCaption := (TObject(lNode.Parent.data) as acClassTicket).PersistentObjectClassName;
lFrom := FromClause(lNode.Parent, lPath);
lSelect := copy(lPath, 1, pred(pos('.', lPath)));
if lSelect = '' then lSelect := lPath;
SynEditOQL.SelText := #13#10 +
'SELECT ' + lSelect + #13#10 +
'FROM ' + lFrom + #13#10 +
'WHERE ' + lPath + '.' + acAttributeTicket(lNode.Data).AttributeName + ' = ';
end else SynEditOQL.SelText := acAttributeTicket(lNode.Data).AttributeName;
end;
end;
end;
procedure TExplorerV2.memOQLQuery2DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
var
lNode: TTreeNode;
begin
if Source is TTreeView then
begin
if Accept then
begin
lNode := TTreeView(Source).Selected;
Accept := ((TObject(lNode.Data) is acClassTicket) or (TObject(lNode.Data) is acAttributeTicket));
if (State = dsDragEnter) and (Sender is TWinControl) then TWinControl(Sender).SetFocus;
end
end;
end;
procedure TExplorerV2.OQLObjectstvExplorerKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
// Copia dados do objeto ao apertar Ctrl + C
if (Key = 67) and (Shift = [ssCtrl]) then
begin
if Assigned(OQLObjects.tvExplorer.Selected) then
CopiaTextoObjeto(OQLObjects.tvExplorer.Selected);
end;
end;
procedure TExplorerV2.OQLObjectstvExplorerMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
lPoint : TPoint;
begin
GetCursorPos(lPoint);
if (Button = mbRight) then
begin
pmCopiar.Popup(lPoint.X ,lPoint.Y );
end;
end;
procedure TExplorerV2.pcEditorChange(Sender: TObject);
var
lOQLtoSQLTranslator: acOQLtoSQLTranslator;
lOQL: String;
begin
if pcEditor.ActivePageIndex = 1 then
begin
try
SynEditSQL.Text := '';
if Trim(SynEditOQL.Text) <> '' then
begin
if OQLQuery.Checked then
begin
if SynEditOQL.SelText = ''
then lOQL := SynEditOQL.Text
else lOQL := SynEditOQL.SelText;
lOQLtoSQLTranslator := acOQLtoSQLTranslator.Create(fMetaModelPersistenceMap);
try
SynEditSQL.Text := lOQLtoSQLTranslator.TranslateOQLtoSQL(Trim(lOQL), fSQLDialect, fSchema, acQueryResultKind.qrkObject);
SynEditSQL.SetFocus;
finally
lOQLtoSQLTranslator.Free;
end;
end
else
begin
if SynEditOQL.SelText = ''
then lOQL := SynEditOQL.Text
else lOQL := SynEditOQL.SelText;
lOQLtoSQLTranslator := acOQLtoSQLTranslator.Create(fMetaModelPersistenceMap);
try
SynEditSQL.Text := lOQLtoSQLTranslator.TranslateOQLtoSQL(lOQL, fSQLDialect, fSchema, acQueryResultKind.qrkDataSet);
SynEditSQL.SetFocus;
finally
lOQLtoSQLTranslator.Free;
end;
end;
end;
except
on e: Exception do
begin
if not actResultsPanel.Checked then actResultsPanel.Execute;
memErrorText.Text := e.Message;
pcResults.ActivePageIndex := 1;
pcEditor.ActivePageIndex := 0;
sbStatusBar.Panels[0].Text := 'OQL translation to SQL failed.';
sbStatusBar.Panels[1].Text := '';
sbStatusBar.Panels[2].Text := '';
end;
end;
end
else SynEditOQL.SetFocus;
end;
procedure TExplorerV2.ReconnectDBExecute(Sender: TObject);
begin
fConnectionString := '';
sbDB.Panels[0].Text := '';
Connect.Free;
end;
procedure TExplorerV2.ResizeColumns(piListView: TListView);
var li: integer;
begin
if piListView.Columns.Count > 0 then
begin
piListView.Items.BeginUpdate;
try
for li := pred(piListView.Columns.Count) downto 0 do
begin
piListView.Columns.Items[li].Width := 0;
end;
finally
piListView.Columns[0].Width := piListView.Columns[0].Width + 20;
piListView.Items.EndUpdate;
end;
end;
end;
procedure TExplorerV2.SetMetaModel(const Value: acMetaModel);
var
lNode : TTreeNode;
begin
fMetaModel := Value;
lNode := tvModelExplorer.Items.AddChildObject(nil, 'Persistence Model', fMetaModel);
lNode.HasChildren := True;
lNode.Expand(False);
end;
procedure TExplorerV2.tvModelExplorerItemExpanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean);
var lClassTicket: acClassTicket;
lAttributeTicket: acAttributeTicket;
lRelationTicket: acRelationTicket;
lCardinality: string;
lEnumerator: acEnumerator;
li: integer;
targetNode : TTreeNode;
begin
if Node.HasChildren and (Node.Count = 0)then
begin
Node.Owner.BeginUpdate;
try
if (TObject(Node.Data) is acMetaModel) then
begin
lEnumerator := acMetaModel(Node.Data).ClassTickets.GetEnumerator;
while not lEnumerator.EOL do
begin
lClassTicket := acClassTicket(lEnumerator.Current);
targetNode := Node.Owner.AddChildObject(Node, lClassTicket.PersistentObjectClassName, lClassTicket);
targetNode.ImageIndex := 6;
targetNode.HasChildren := True;
lEnumerator.MoveNext;
end;
end
else if (TObject(Node.Data) is acClassTicket) then
begin
lClassTicket := acClassTicket(Node.Data);
repeat
for li := 0 to pred(lClassTicket.Attributes.Count) do
begin
lAttributeTicket := acAttributeTicket(lClassTicket.Attributes.Objects[li]);
if lAttributeTicket.Stereotype = acAttributeStereotype.pvPersistent then
begin
targetNode := Node.Owner.AddChildObject(Node, lAttributeTicket.AttributeName + ': ' + lAttributeTicket.AttributeType, lAttributeTicket);
if lAttributeTicket.Mandatory then
targetNode.ImageIndex := 5
else
targetNode.ImageIndex := 0;
end;
end;
for li := 0 to pred(lClassTicket.RelationTicketsIn.Count) do
begin
lRelationTicket := acRelationTicket(lClassTicket.RelationTicketsIn.Objects[li]);
if lRelationTicket.DestinationMaxMultiplicity = N
then lCardinality := '*'
else lCardinality := inttostr(lRelationTicket.DestinationMaxMultiplicity);
if lRelationTicket.DestinationPropertyName <> '' then
begin
targetNode := Node.Owner.AddChildObject(Node, lRelationTicket.DestinationPropertyName + ': (' + lCardinality + ') ' + lRelationTicket.OriginClassTicket.PersistentObjectClassName, lRelationTicket.OriginClassTicket);
targetNode.HasChildren := True;
if lRelationTicket.DestinationMaxMultiplicity = N then
begin
if lRelationTicket.DestinationMinMultiplicity = 1 then
targetNode.ImageIndex := 4
else
targetNode.ImageIndex := 2;
end
else
begin
if lRelationTicket.DestinationMinMultiplicity = 1 then
targetNode.ImageIndex := 3
else
targetNode.ImageIndex := 1;
end;
end;
end;
for li := 0 to pred(lClassTicket.RelationTicketsOut.Count) do
begin
lRelationTicket := acRelationTicket(lClassTicket.RelationTicketsOut.Objects[li]);
if lRelationTicket.OriginPropertyName <> '' then
begin
if lRelationTicket.OriginMaxMultiplicity = N
then lCardinality := '*'
else lCardinality := inttostr(lRelationTicket.OriginMaxMultiplicity);
targetNode := Node.Owner.AddChildObject(Node, lRelationTicket.OriginPropertyName + ': (' + lCardinality + ') ' + lRelationTicket.DestinationClassTicket.PersistentObjectClassName, lRelationTicket.DestinationClassTicket);
targetNode.HasChildren := True;
if lRelationTicket.OriginMaxMultiplicity = N then
begin
if lRelationTicket.DestinationMinMultiplicity = 1 then
targetNode.ImageIndex := 4
else
targetNode.ImageIndex := 2;
end
else
begin
if lRelationTicket.DestinationMinMultiplicity = 1 then
targetNode.ImageIndex := 3
else
targetNode.ImageIndex := 1;
end;
end;
end;
lClassTicket := lClassTicket.ParentClassTicket;
until lClassTicket = nil;
end;
finally
Node.Owner.EndUpdate;
end;
end;
end;
procedure TExplorerV2.XMLQueryExecute(Sender: TObject);
begin
OQLQuery.Checked := False;
XMLQuery.Checked := True;
end;
{ TDLLDialog }
constructor TDLLDialog.Create(aOwner: TComponent);
var
BtnShowMessage: TButton;
edt: TEdit;
begin
inherited CreateNew(aOwner);
Caption := 'This form is in a DLL !!!';
Position := poWorkAreaCenter;
Width := 200;
Height := 100;
BtnShowMessage := TButton.Create(Self);
BtnShowMessage.Parent := Self;
BtnShowMessage.Caption := 'Show message';
BtnShowMessage.AutoSize := True;
BtnShowMessage.OnClick := BtnShowMessageClick;
edt := TEdit.Create(Self);
edt.Parent := Self;
end;
procedure TDLLDialog.BtnShowMessageClick(Sender: TObject);
begin
ShowMessage('Hello from DLL!');
end;
procedure TDLLDialog.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
{$IFDEF LCLWin32}
Params.WndParent := ParentFormHandle;
{$ENDIF}
end;
end.
object ExportUnits: TExportUnits
Left = 0
Height = 344
Top = 0
Width = 610
Caption = 'Export Units'
ClientHeight = 344
ClientWidth = 610
Color = clBtnFace
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
LCLVersion = '2.1.0.0'
object pnl2: TPanel
Left = 0
Height = 36
Top = 308
Width = 610
Align = alBottom
BevelOuter = bvNone
ClientHeight = 36
ClientWidth = 610
Color = clBtnHighlight
ParentBackground = False
ParentColor = False
TabOrder = 0
object btnConfirmar: TSpeedButton
Left = 522
Height = 36
Hint = 'Confirmar'
Top = 0
Width = 36
Anchors = [akRight, akBottom]
Flat = True
Glyph.Data = {
660F0000424D660F000000000000360000002800000024000000240000000100
180000000000300F0000C40E0000C40E00000000000000000000FFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFEFEFFFEFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFDFCE1F7EDB0
ECD08BE2B978DFAE78DFAE8CE3BAB2EDD1E2F7EDFBFDFCFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFEE0
F7EC76E0AE25CB7D06C36B01C16700C16700C16700C16700C16701C16706C36A
27CC7F79E0B0E2F7EDFEFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFE9F9F165DBA408C46C00C06700C16700C16700C16700C16700C167
00C16700C16700C16700C16700C16700C16709C56D69DCA6ECFAF3FFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFEFFFEB5EED318C87500C16700C16700C16700C167
00C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700C1
6700C16718C875B7EFD4FEFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFE8DE5BB04C26900C167
00C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700C1
6700C16700C16700C16700C16700C16700C16706C26A92E6BEFEFEFEFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFE
8CE4BB02C26800C16700C16700C16700C16700C16700C16700C16700C16700C1
6700C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700
C16703C26892E6BFFEFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFB1ECD004C26900C16700C16700C16700C16700C16700C1
6700C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700
C16700C16700C16700C16700C16700C16706C26AB6EED3FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8F9F113C77200C16700C16700C1
6700C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700
C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700C167
19C976ECFAF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFE62D9
A100C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700
C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700C167
00C16700C16700C16700C16700C16769DBA6FEFFFEFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFDBF5E807C46B00C16700C16700C16700C16700C16700C16700
C16700C16700C16700C16700C1670FC46F00C16700C16700C16700C16700C167
00C16700C16700C16700C16700C16700C16700C16700C16700C16709C56DE3F7
EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE78DFAE00C16700C16700C16700
C16700C16700C16700C16700C16700C16700C16700C16728CC7FD8F5E712C772
00C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700C1
6700C16700C16701C16779DFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFEFC1C
C97800C16700C16700C16700C16700C16700C16700C16700C16700C16700C167
0EC56FD2F3E3FEFEFE9BE8C301C16700C16700C16700C16700C16700C16700C1
6700C16700C16700C16700C16700C16700C16700C16727CC7EFBFDFBFFFFFFFF
FFFFFFFFFFFFFFFFD7F4E703C46900C16700C16700C16700C16700C16700C167
00C16700C16700C16702C268A0E8C6FFFFFFFFFFFFFCFEFD3BD18B00C16700C1
6700C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700
C16706C36AE2F7EDFFFFFFFFFFFFFFFFFFFFFFFFAAEDCE01C06600C16700C167
00C16700C16700C16700C16700C16700C16700C16767DBA5FEFFFEFFFFFFFFFF
FFFFFFFFCBF2DF05C36A00C16700C16700C16700C16700C16700C16700C16700
C16700C16700C16700C16700C16701C167B2EDD1FFFFFFFFFFFFFFFFFFFFFFFF
89E2B800C06700C16700C16700C16700C16700C16700C16700C16700C16733CF
87F5FBF9FEFFFED6F4E6B0EED1FFFFFFFEFFFE6CDCA700C16700C16700C16700
C16700C16700C16700C16700C16700C16700C16700C16700C16700C1678BE2B9
FFFFFFFFFFFFFFFFFFFEFFFE77DFAF00C16700C16700C16700C16700C16700C1
6700C16700C16700C16781E2B4F0FBF672DFAC09C46C0EC66FCBF2E0FFFFFFEE
FBF51BC97700C16700C16700C16700C16700C16700C16700C16700C16700C167
00C16700C16700C16778DEAEFEFFFEFFFFFFFFFFFFFEFFFE76DEAD00C16700C1
6700C16700C16700C16700C16700C16700C16700C1670BC46D1BC97800C16700
C16700C1671ECA79EAF9F2FFFFFFA5EAC901C16700C16700C16700C16700C167
00C16700C16700C16700C16700C16700C16700C16778DFAEFEFFFEFFFFFFFFFF
FFFFFFFF89E2B800C06700C16700C16700C16700C16700C16700C16700C16700
C16700C16700C16700C16700C16700C16700C16747D492FBFDFCFBFDFC41D38E
00C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700C1
678BE2B9FFFFFFFFFFFFFFFFFFFFFFFFA9EBCC01C06600C16700C16700C16700
C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700C167
01C16777DFAFFEFFFED4F4E408C46C00C16700C16700C16700C16700C16700C1
6700C16700C16700C16701C167B0ECD0FFFFFFFFFFFFFFFFFFFFFFFFD5F4E502
C36800C16700C16700C16700C16700C16700C16700C16700C16700C16700C167
00C16700C16700C16700C16700C16704C269A9EACBFEFFFF77E0AF01C16700C1
6700C16700C16700C16700C16700C16700C16700C16706C46BE1F7EDFFFFFFFF
FFFFFFFFFFFFFFFFFAFEFC1AC97700C16700C16700C16700C16700C16700C167
00C16700C16700C16700C16700C16700C16700C16700C16700C16700C16710C6
70D6F5E6F1FBF61ECA7900C16700C16700C16700C16700C16700C16700C16700
C16725CB7DFBFDFCFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE75DEAD00C16700C167
00C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700C1
6700C16700C16700C16700C16729CD80EFFAF550D79700C16700C16700C16700
C16700C16700C16700C16700C06776DFAEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFD9F5E706C36A00C16700C16700C16700C16700C16700C16700C16700C1
6700C16700C16700C16700C16700C16700C16700C16700C16700C16723CA7C01
C16700C16700C16700C16700C16700C16700C16700C16708C46CE0F6EBFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFE5FD9A000C16700C16700C16700C1
6700C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700
C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700C167
00C16765DBA3FEFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5F8
EF13C77200C16700C16700C16700C16700C16700C16700C16700C16700C16700
C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700C167
00C16700C16700C16700C16718C875E9F9F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFB0EDD003C16800C16700C16700C16700C16700
C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700C167
00C16700C16700C16700C16700C16700C16700C16704C269B5EED3FFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD87E3B801
C26700C16700C16700C16700C16700C16700C16700C16700C16700C16700C167
00C16700C16700C16700C16700C16700C16700C16700C16700C16700C16702C2
688DE5BBFEFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFEFFFE87E3B803C26800C16700C16700C16700C16700C167
00C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700C1
6700C16700C16704C2698CE4BBFEFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDB0EDD013C773
00C16700C16700C16700C16700C16700C16700C16700C16700C16700C16700C1
6700C16700C16700C16700C16700C16713C873B2EDD1FEFFFEFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFE5F8EF5FDAA007C46B00C16700C16700C16700C16700C1
6700C16700C16700C16700C16700C16700C16700C16707C46B63DBA3E8F9F1FF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFED9F5E875DF
AD1AC97702C26801C06600C06700C16700C16700C06701C06602C2681CCA7878
DFAFDBF6E9FEFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFEFEFEFAFEFCD5F4E5A9EBCC89E2B876DEAD77DFAF8A
E3B9AAEDCED7F5E7FAFEFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFEFFFEFEFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF
}
OnClick = btnConfirmarClick
end
object btnCancelar: TSpeedButton
Left = 564
Height = 36
Hint = 'Cancelar'
Top = 0
Width = 36
Anchors = [akRight, akBottom]
Flat = True
Glyph.Data = {
660F0000424D660F000000000000360000002800000024000000240000000100
180000000000300F0000C40E0000C40E00000000000000000000FFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFFEFEFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFFE9E9FFC6
C6FEABABFE9E9EFE9E9EFEACACFEC8C8FEE9E9FEFBFBFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFE8
E8FE9D9DFE6363FE4D4DFE4949FE4949FF4949FF4949FF4949FF4949FE4D4DFE
6565FE9F9FFEE9E9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFEEEEFE9191FE4F4FFE4949FF4949FF4949FF4949FF4949FF4949FF
4949FF4949FF4949FF4949FF4949FF4949FF4F4FFE9494FEF1F1FEFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFEFEFFCACAFE5A5AFE4949FF4949FF4949FF4949FF
4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949
FF4949FF5A5AFECBCBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFADADFE4B4BFE4949FF
4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949
FF4949FF4949FF4949FF4949FF4949FF4949FF4D4DFEB1B1FEFEFEFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFF
ADADFE4A4AFE4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949
FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF49
49FF4B4BFEB1B1FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFC7C7FE4B4BFE4949FF4949FF4949FF4949FF4949FF4949
FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF49
49FF4949FF4949FF4949FF4949FF4949FF4D4DFECACAFEFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEFE5656FE4949FF4949FF4949
FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF49
49FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF
5B5BFEF1F1FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFF8E8E
FE4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF49
49FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF
4949FF4949FF4949FF4949FF4949FF9494FEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFE4E4FE4E4EFE4949FF4949FF4949FF4949FF4949FF4949FF49
49FF4949FF5656FE5858FE4949FF4949FF4949FF4949FF4949FF4949FF5959FE
5555FE4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4F4FFEEAEA
FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFF9E9EFE4949FF4949FF4949FF49
49FF4949FF4949FF4949FF4949FF5D5DFEE7E7FFE9E9FE6262FE4949FF4949FF
4949FF4949FF6565FEEDEDFFE2E2FE5A5AFE4949FF4949FF4949FF4949FF4949
FF4949FF4949FF4949FE9F9FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFF5D
5DFE4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FEDBDBFFFFFFFF
FFFFFFE7E7FE5E5EFE4949FF4949FF6060FEE8E8FEFFFFFFFFFFFFD3D3FE4949
FE4949FF4949FF4949FF4949FF4949FF4949FF4949FF6565FEFBFBFFFFFFFFFF
FFFFFFFFFFFFFFFFE1E1FF4B4BFE4949FF4949FF4949FF4949FF4949FF4949FF
4949FF4949FEB2B2FEFEFEFFFFFFFFFFFFFFE0E0FE5757FE5C5CFEE4E4FEFFFF
FFFFFFFFFEFEFFADADFE4949FE4949FF4949FF4949FF4949FF4949FF4949FF49
49FF4D4DFEE9E9FEFFFFFFFFFFFFFFFFFFFFFFFFC3C3FF4949FE4949FF4949FF
4949FF4949FF4949FF4949FF4949FF4949FF4D4DFEC0C0FEFFFFFFFFFFFFFFFF
FFD9D9FEDBDBFEFFFFFFFFFFFFFEFEFFBABAFF4B4BFE4949FF4949FF4949FF49
49FF4949FF4949FF4949FF4949FF4949FEC8C8FEFFFFFFFFFFFFFFFFFFFFFFFF
AAAAFE4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949
FF4E4EFECACAFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6FF4D4DFE49
49FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FFABABFE
FFFFFFFFFFFFFFFFFFFEFEFF9D9DFF4949FF4949FF4949FF4949FF4949FF4949
FF4949FF4949FF4949FF4949FF4949FF5353FECFCFFEFFFFFFFFFFFFFFFFFFFF
FFFFCACAFE4F4FFE4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF
4949FF4949FF4949FF9E9EFEFEFEFFFFFFFFFFFFFFFEFEFF9D9DFE4949FF4949
FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4E4EFEC7
C7FEFFFFFFFFFFFFFFFFFFFFFFFFC1C1FE4C4CFE4949FF4949FF4949FF4949FF
4949FF4949FF4949FF4949FF4949FF4949FF4949FF9E9EFEFEFEFFFFFFFFFFFF
FFFFFFFFAAAAFE4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF49
49FF4949FF4B4BFEBCBCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFB7B7FE
4B4BFE4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949
FFABABFEFFFFFFFFFFFFFFFFFFFFFFFFC2C2FE4949FE4949FF4949FF4949FF49
49FF4949FF4949FF4949FF4949FF4A4AFEB1B1FEFEFEFFFFFFFFFFFFFFE5E5FE
E7E7FFFFFFFFFFFFFFFEFEFFAAAAFE4949FE4949FF4949FF4949FF4949FF4949
FF4949FF4949FF4949FF4949FEC6C6FEFFFFFFFFFFFFFFFFFFFFFFFFE0E0FE4A
4AFE4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FFA3A3FFFDFDFF
FFFFFFFFFFFFE8E8FE6161FE6565FEEDEDFFFFFFFFFFFFFFFDFDFF9E9EFE4949
FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4D4DFEE9E9FFFFFFFFFF
FFFFFFFFFFFFFFFFFBFBFF5B5BFE4949FF4949FF4949FF4949FF4949FF4949FF
4949FF4A4AFEE3E3FEFFFFFFFFFFFFEEEEFE6666FE4949FF4949FF6868FEF0F0
FFFFFFFFFFFFFFDBDBFF4949FE4949FF4949FF4949FF4949FF4949FF4949FF49
49FF6363FEFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFF9C9CFE4949FF4949FF
4949FF4949FF4949FF4949FF4949FF4949FF6969FEF0F0FEF1F1FE6B6BFE4949
FF4949FF4949FF4949FF7171FEF5F5FFEDEDFF6363FE4949FF4949FF4949FF49
49FF4949FF4949FF4949FF4949FF9D9DFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFE3E3FE4D4DFE4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949
FF6363FE6666FE4949FF4949FF4949FF4949FF4949FF4949FF6868FE6262FE49
49FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4E4EFEE8E8FEFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFF8D8DFF4949FF4949FF4949FF4949
FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF49
49FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF
4949FF9191FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECEC
FE5656FE4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF49
49FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF
4949FF4949FF4949FF4949FF5A5AFEEEEEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFC6C6FE4A4AFE4949FF4949FF4949FF4949FF49
49FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF
4949FF4949FF4949FF4949FF4949FF4949FF4949FF4B4BFECACAFEFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFFA9A9FF49
49FE4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF
4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4A4A
FEAEAEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFEFEFFA9A9FF4A4AFE4949FF4949FF4949FF4949FF4949FF
4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949
FF4949FF4949FF4B4BFEADADFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFFC6C6FE5656FE
4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4949
FF4949FF4949FF4949FF4949FF4949FF5656FEC8C8FEFEFEFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFECECFE8D8DFF4E4EFE4949FF4949FF4949FF4949FF4949
FF4949FF4949FF4949FF4949FF4949FF4949FF4949FF4E4EFE9090FEEEEEFEFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFE3E3FE9C9C
FE5B5BFE4A4AFE4949FE4949FF4949FF4949FF4949FF4949FE4A4AFE5D5DFE9E
9EFEE4E4FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFEFEFFFCFCFFE0E0FEC2C2FEAAAAFE9D9DFE9D9DFFAB
ABFEC3C3FFE1E1FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFEFEFFFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF
}
end
end
object lstUsecases: TListBox
Left = 0
Height = 308
Hint = 'Confirmar'
Top = 0
Width = 610
Align = alClient
ItemHeight = 0
MultiSelect = True
OnKeyUp = lstUsecasesKeyUp
TabOrder = 1
end
object dlgArquivoSaida: TSelectDirectoryDialog
Left = 520
Top = 231
end
end
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TExportUnits','FORMDATA',[
'TPF0'#12'TExportUnits'#11'ExportUnits'#4'Left'#2#0#6'Height'#3'X'#1#3'Top'#2
+#0#5'Width'#3'b'#2#7'Caption'#6#12'Export Units'#12'ClientHeight'#3'X'#1#11
+'ClientWidth'#3'b'#2#5'Color'#7#9'clBtnFace'#10'Font.Color'#7#12'clWindowTex'
+'t'#11'Font.Height'#2#245#9'Font.Name'#6#6'Tahoma'#10'LCLVersion'#6#7'2.1.0.'
+'0'#0#6'TPanel'#4'pnl2'#4'Left'#2#0#6'Height'#2'$'#3'Top'#3'4'#1#5'Width'#3
+'b'#2#5'Align'#7#8'alBottom'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'$'
+#11'ClientWidth'#3'b'#2#5'Color'#7#14'clBtnHighlight'#16'ParentBackground'#8
+#11'ParentColor'#8#8'TabOrder'#2#0#0#12'TSpeedButton'#12'btnConfirmar'#4'Lef'
+'t'#3#10#2#6'Height'#2'$'#4'Hint'#6#9'Confirmar'#3'Top'#2#0#5'Width'#2'$'#7
+'Anchors'#11#7'akRight'#8'akBottom'#0#4'Flat'#9#10'Glyph.Data'#10'j'#15#0#0
+'f'#15#0#0'BMf'#15#0#0#0#0#0#0'6'#0#0#0'('#0#0#0'$'#0#0#0'$'#0#0#0#1#0#24#0#0
+#0#0#0'0'#15#0#0#196#14#0#0#196#14#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#254#255#254#254#255#254#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#251#253#252#225#247#237#176#236#208#139#226#185'x'#223#174'x'
+#223#174#140#227#186#178#237#209#226#247#237#251#253#252#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#254#255#254#224#247#236'v'#224#174'%'#203'}'#6
+#195'k'#1#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#1#193'g'#6#195'j'''#204
+#127'y'#224#176#226#247#237#254#255#254#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#233#249#241'e'#219#164#8#196'l'#0
+#192'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#9#197'mi'#220#166#236#250#243#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#254#255#254#181#238#211#24#200'u'#0#193'g'#0#193'g'
+#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#24#200'u'#183#239#212
+#254#255#254#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#254#255#254#141#229#187#4#194'i'#0#193'g'#0#193'g'#0#193'g'
+#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#6#194'j'#146
+#230#190#254#254#254#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#254#255#254#140#228#187#2#194'h'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#3#194'h'#146
+#230#191#254#255#254#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#177#236#208
+#4#194'i'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#6#194'j'#182#238
+#211#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#232#249#241#19#199'r'#0#193'g'#0#193'g'
+#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#25#201'v'#236#250#243#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
,#255#254#255#254'b'#217#161#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'gi'#219#166#254#255#254#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#219#245#232#7#196'k'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#15#196'o'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'
+#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#9#197'm'#227#247#237#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#254#254#254'x'#223#174#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g('#204#127#216#245
+#231#18#199'r'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'
+#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#1#193'gy'#223#175#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#250#254#252#28#201
+'x'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#14#197'o'#210#243#227#254#254#254#155#232#195#1#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'''#204'~'#251#253#251#255#255#255#255#255
+#255#255#255#255#255#255#255#215#244#231#3#196'i'#0#193'g'#0#193'g'#0#193'g'
+#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#2#194'h'#160#232#198
+#255#255#255#255#255#255#252#254#253';'#209#139#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#6#195'j'#226#247#237#255#255#255#255#255#255#255#255#255#255#255
+#255#170#237#206#1#192'f'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'gg'#219#165#254#255#254#255#255#255#255#255#255
+#255#255#255#203#242#223#5#195'j'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#1#193'g'
+#178#237#209#255#255#255#255#255#255#255#255#255#255#255#255#137#226#184#0
+#192'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g3'#207#135#245#251#249#254#255#254#214#244#230#176#238#209#255#255#255#254
+#255#254'l'#220#167#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#139#226#185#255
+#255#255#255#255#255#255#255#255#254#255#254'w'#223#175#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#129#226#180#240
+#251#246'r'#223#172#9#196'l'#14#198'o'#203#242#224#255#255#255#238#251#245#27
+#201'w'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'gx'#222#174#254#255#254#255#255#255#255
+#255#255#254#255#254'v'#222#173#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'
+#0#193'g'#0#193'g'#0#193'g'#0#193'g'#11#196'm'#27#201'x'#0#193'g'#0#193'g'#0
+#193'g'#30#202'y'#234#249#242#255#255#255#165#234#201#1#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'gx'#223#174#254#255#254#255#255#255#255#255#255#255#255#255#137#226#184
+#0#192'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'gG'#212#146#251
+#253#252#251#253#252'A'#211#142#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'
+#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#139#226#185#255#255
+#255#255#255#255#255#255#255#255#255#255#169#235#204#1#192'f'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#1#193'gw'#223#175#254#255#254#212#244#228
+#8#196'l'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#1#193'g'#176#236#208#255#255#255#255#255#255#255#255#255#255
+#255#255#213#244#229#2#195'h'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#4#194'i'#169#234#203#254#255#255'w'#224#175#1#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#6#196'k'#225
+#247#237#255#255#255#255#255#255#255#255#255#255#255#255#250#254#252#26#201
+'w'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#16#198
+'p'#214#245#230#241#251#246#30#202'y'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g%'#203'}'#251#253#252#255#255#255#255#255
+#255#255#255#255#255#255#255#254#254#254'u'#222#173#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g)'#205#128#239#250#245'P'
+#215#151#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#192
,'gv'#223#174#254#254#254#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#217#245#231#6#195'j'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g#'#202'|'#1#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#8#196'l'#224#246#235#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#254#255#254'_'#217#160#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'ge'#219#163#254#255#254#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#229#248#239#19#199'r'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#24#200'u'#233#249#241#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#176#237#208#3#193'h'#0#193'g'#0#193'g'#0#193'g'#0#193'g'
+#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#4#194'i'#181#238#211#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#253#253#253#135#227#184#1#194'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#2#194'h'#141
+#229#187#254#255#254#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#254#255#254#135#227#184#3#194'h'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#4#194'i'#140#228#187#254#255#254
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#253#253#253#176#237#208#19#199's'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#19#200's'#178#237#209#254#255#254#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#229#248#239'_'#218#160#7#196'k'#0#193'g'#0#193
+'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0#193'g'#0
+#193'g'#0#193'g'#7#196'kc'#219#163#232#249#241#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#254#255#254#217#245#232'u'
+#223#173#26#201'w'#2#194'h'#1#192'f'#0#192'g'#0#193'g'#0#193'g'#0#192'g'#1
+#192'f'#2#194'h'#28#202'xx'#223#175#219#246#233#254#255#254#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#254#254#254#250#254#252#213#244#229#169#235#204#137#226
+#184'v'#222#173'w'#223#175#138#227#185#170#237#206#215#245#231#250#254#252
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#254#255#254#254#255
+#254#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#7'OnClick'#7#17'btnConfirmarClick'#0#0#12'T'
+'SpeedButton'#11'btnCancelar'#4'Left'#3'4'#2#6'Height'#2'$'#4'Hint'#6#8'Canc'
+'elar'#3'Top'#2#0#5'Width'#2'$'#7'Anchors'#11#7'akRight'#8'akBottom'#0#4'Fla'
,'t'#9#10'Glyph.Data'#10'j'#15#0#0'f'#15#0#0'BMf'#15#0#0#0#0#0#0'6'#0#0#0'('#0
+#0#0'$'#0#0#0'$'#0#0#0#1#0#24#0#0#0#0#0'0'#15#0#0#196#14#0#0#196#14#0#0#0#0#0
+#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#254#254#255#254#254#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#251#251#255#233#233#255#198#198
+#254#171#171#254#158#158#254#158#158#254#172#172#254#200#200#254#233#233#254
+#251#251#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#254#254#255#232
+#232#254#157#157#254'cc'#254'MM'#254'II'#254'II'#255'II'#255'II'#255'II'#255
+'II'#254'MM'#254'ee'#254#159#159#254#233#233#254#254#254#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#238#238#254#145
+#145#254'OO'#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'OO'#254#148#148#254#241#241#254#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#254#254#255#202#202#254'ZZ'#254'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'ZZ'#254#203#203#254#254#254#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#254#254#255#173#173#254'KK'#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'II'#255'II'#255'II'#255'MM'#254#177#177#254#254#254#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#254#254#255#173#173#254'JJ'#254'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'KK'#254#177#177#254#254#254#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#199#199#254'KK'#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'II'#255'MM'#254#202#202#254#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#238#238#254'VV'#254'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'[['#254#241#241#254#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#254#254#255#142#142#254'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255#148#148#254#254#254#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#228#228#254'NN'#254
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'VV'#254'XX'
+#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'YY'#254'UU'#254'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'OO'#254#234#234#254
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#254#254#255#158
+#158#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255']]'
+#254#231#231#255#233#233#254'bb'#254'II'#255'II'#255'II'#255'II'#255'ee'#254
+#237#237#255#226#226#254'ZZ'#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'
,#255'II'#255'II'#254#159#159#254#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#251#251#255']]'#254'II'#255'II'#255'II'#255'II'#255'II'#255
+'II'#255'II'#255'II'#254#219#219#255#255#255#255#255#255#255#231#231#254'^^'
+#254'II'#255'II'#255'``'#254#232#232#254#255#255#255#255#255#255#211#211#254
+'II'#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'ee'#254#251
+#251#255#255#255#255#255#255#255#255#255#255#255#255#255#225#225#255'KK'#254
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#254#178#178#254
+#254#254#255#255#255#255#255#255#255#224#224#254'WW'#254'\\'#254#228#228#254
+#255#255#255#255#255#255#254#254#255#173#173#254'II'#254'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'MM'#254#233#233#254#255#255#255#255#255
+#255#255#255#255#255#255#255#195#195#255'II'#254'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'MM'#254#192#192#254#255#255#255#255#255
+#255#255#255#255#217#217#254#219#219#254#255#255#255#255#255#255#254#254#255
+#186#186#255'KK'#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'II'#255'II'#254#200#200#254#255#255#255#255#255#255#255#255#255#255#255#255
+#170#170#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'II'#255'II'#255'NN'#254#202#202#254#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#198#198#255'MM'#254'II'#255'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255#171#171#254#255#255
+#255#255#255#255#255#255#255#254#254#255#157#157#255'II'#255'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'SS'#254#207
+#207#254#255#255#255#255#255#255#255#255#255#255#255#255#202#202#254'OO'#254
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255#158#158#254#254#254#255#255#255#255#255#255#255#254#254#255#157
+#157#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'NN'#254#199#199#254#255#255#255#255#255#255#255#255#255
+#255#255#255#193#193#254'LL'#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'II'#255#158#158#254#254#254#255#255#255
+#255#255#255#255#255#255#255#170#170#254'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'II'#255'KK'#254#188#188#254#254#254#255
+#255#255#255#255#255#255#255#255#255#255#255#255#254#254#255#183#183#254'KK'
+#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'II'#255#171#171#254#255#255#255#255#255#255#255#255#255#255#255#255#194#194
+#254'II'#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'JJ'#254#177#177#254#254#254#255#255#255#255#255#255#255#229#229#254#231#231
+#255#255#255#255#255#255#255#254#254#255#170#170#254'II'#254'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#254#198#198#254#255#255
+#255#255#255#255#255#255#255#255#255#255#224#224#254'JJ'#254'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255#163#163#255#253#253#255#255
+#255#255#255#255#255#232#232#254'aa'#254'ee'#254#237#237#255#255#255#255#255
+#255#255#253#253#255#158#158#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'MM'#254#233#233#255#255#255#255#255#255#255#255#255#255
+#255#255#255#251#251#255'[['#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'JJ'#254#227#227#254#255#255#255#255#255#255#238#238#254'ff'#254
+'II'#255'II'#255'hh'#254#240#240#255#255#255#255#255#255#255#219#219#255'II'
+#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'cc'#254#251#251
+#255#255#255#255#255#255#255#255#255#255#255#255#255#254#254#255#156#156#254
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'ii'#254#240
+#240#254#241#241#254'kk'#254'II'#255'II'#255'II'#255'II'#255'qq'#254#245#245
+#255#237#237#255'cc'#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255#157#157#254#254#254#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#227#227#254'MM'#254'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'cc'#254'ff'#254'II'#255'II'#255'II'#255'II'#255
+'II'#255'II'#255'hh'#254'bb'#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'NN'#254#232#232#254#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#254#254#255#141#141#255'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255#145#145#254#254#254#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#236
+#236#254'VV'#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'ZZ'#254#238#238#254
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
,#255#255#255#255#255#255#255#255#198#198#254'JJ'#254'II'#255'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'KK'#254#202#202#254#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#253#253#255
+#169#169#255'II'#254'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'JJ'#254#174#174#254#254#254#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#254#254#255#169#169#255'JJ'#254'II'
+#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'KK'#254#173
+#173#254#254#254#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#253#253#255#198#198#254'VV'#254'II'#255'II'#255'II'
+#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'VV'#254#200#200#254#254#254#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#236#236#254#141#141#255'NN'#254'II'#255'II'#255
+'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'#255'II'
+#255'NN'#254#144#144#254#238#238#254#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#254#254#255#227#227#254#156#156#254'[['
+#254'JJ'#254'II'#254'II'#255'II'#255'II'#255'II'#255'II'#254'JJ'#254']]'#254
+#158#158#254#228#228#254#254#254#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#254
+#254#255#252#252#255#224#224#254#194#194#254#170#170#254#157#157#254#157#157
+#255#171#171#254#195#195#255#225#225#255#251#251#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#254#254#255#254#254#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#0#0#0#8'TListBox'#11'lstUsecases'#4'Left'#2#0#6'Height'#3'4'#1#4'Hi'
+'nt'#6#9'Confirmar'#3'Top'#2#0#5'Width'#3'b'#2#5'Align'#7#8'alClient'#10'Ite'
+'mHeight'#2#0#11'MultiSelect'#9#7'OnKeyUp'#7#16'lstUsecasesKeyUp'#8'TabOrder'
+#2#1#0#0#22'TSelectDirectoryDialog'#15'dlgArquivoSaida'#4'Left'#3#8#2#3'Top'
+#3#231#0#0#0#0
]);
unit ituExportUnits;
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
interface
uses
{$IFnDEF FPC}
Windows,
{$ELSE}
LCLIntf, LCLType, LMessages,
{$ENDIF}
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, buttons;
type
TExportUnits = class(TForm)
pnl2: TPanel;
lstUsecases: TListBox;
btnConfirmar: TSpeedButton;
btnCancelar: TSpeedButton;
dlgArquivoSaida: TSelectDirectoryDialog;
procedure btnConfirmarClick(Sender: TObject);
procedure lstUsecasesKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ExportUnits: TExportUnits;
implementation
{$R *.dfm}
procedure TExportUnits.btnConfirmarClick(Sender: TObject);
begin
if dlgArquivoSaida.Execute then
begin
// ShowMessage(dlgArquivoSaida.Directory);
ModalResult := mrOk;
end;
end;
procedure TExportUnits.lstUsecasesKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
// Select All Crtl + A
if (Key = 65) and (Shift = [ssCtrl]) then
begin
lstUsecases.SelectAll;
end;
end;
end.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
unit ituOQLExplorerV2;
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
interface
uses
{$IFnDEF FPC}
Windows,
{$ELSE}
LCLIntf, LCLType, LMessages,
{$ENDIF}
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, utuOQL, Menus, ComCtrls, Buttons, ActnList, ituExplorerV2, ImgList,
ituDataBaseLogin, ToolWin;
type
{ TOQLExplorerV2 }
TOQLExplorerV2 = class(TForm)
ilCXOQL: TImageList;
pnlActionBar: TPanel;
abExportPAS: TAction;
abCXOQL: TAction;
aNewOQL: TAction;
aDeleteOQL: TAction;
aSaveFile: TAction;
aLoadFile: TAction;
aExportPAS: TAction;
pcCXOQL: TPageControl;
tsCXOQL: TTabSheet;
tsPASunit: TTabSheet;
ilOQLState: TImageList;
pnlCXOQL: TPanel;
pnlOQLList: TPanel;
lvOQLList: TListView;
memError: TMemo;
splVertical: TSplitter;
pnlRight: TPanel;
pnlOQLExplorer: TPanel;
pnlTop: TPanel;
labelName: TLabel;
labelDescription: TLabel;
edtName: TEdit;
edtDescription: TEdit;
pnlPASUnit: TPanel;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
SaveUnit: TSaveDialog;
memUnit: TMemo;
pnlOQLButtons: TPanel;
pnlList: TPanel;
acttbOQL: TAction;
aNewFile: TAction;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure aNewOQLExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure aDeleteOQLExecute(Sender: TObject);
procedure aSaveFileExecute(Sender: TObject);
procedure aLoadFileExecute(Sender: TObject);
procedure aExportPASExecute(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormResize(Sender: TObject);
procedure lvOQLListChange(Sender: TObject; Item: TListItem;Change: TItemChange);
procedure lvOQLListChanging(Sender: TObject; Item: TListItem;Change: TItemChange; var AllowChange: Boolean);
procedure aNewFileExecute(Sender: TObject);
procedure splVerticalCanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
protected
procedure CreateParams(var Params : TCreateParams); override;
private
{ Private declarations }
fFlagFormClosing : Boolean; // Impede que as OQLs sejam inutilmente verificados ao fechar o form
fExplorer: TExplorerV2;
fOQLList: utOQLFile;
procedure InterfaceToSelectedOQL;
function GetQueryType ( piExplorer : TExplorerV2 ) : Integer;
function ValidaQuery(piQuery: string; piOQLType: integer): string;
procedure SetQueryType (piType: integer);
procedure SelectedOQLToInterface;
procedure UpdateOQLList;
public
{ Public declarations }
constructor Create(piOwner: TComponent); override;
const
__OQLQuery = 0;
__XMLQuery = 1;
end;
var
OQLExplorerV2: TOQLExplorerV2;
implementation
uses acuObject, acuOQL;
{$R *.dfm}
procedure TOQLExplorerV2.aDeleteOQLExecute(Sender: TObject);
var li: integer;
lOQL: utOQL;
begin
if assigned(lvOQLList.Selected) then
begin
lOQL := utOQL(lvOQLList.Selected.Data);
li := lvOQLList.Selected.Index;
lvOQLList.Selected.Delete;
lOQL.Delete;
if lvOQLList.Items.Count > 0 then
if li - 1 >= 0 then
lvOQLList.Selected := lvOQLList.Items[li-1]
else
lvOQLList.Selected := lvOQLList.Items[0];
SelectedOQLToInterface;
end;
end;
procedure TOQLExplorerV2.aExportPASExecute(Sender: TObject);
var lFileName: string;
begin
if fOQLList.FileName = '' then
ShowMessage('Need to save file before generation.')
else
begin
InterfaceToSelectedOQL;
fOQLList.Save;
Screen.Cursor := crHourGlass;
try
memUnit.Lines.Text := fExplorer.Util.GerarUnitOQL(fOQLList.FileName);
finally
Screen.Cursor := crDefault;
end;
pcCXOQL.ActivePage := tsPASUnit;
if SaveUnit.Execute then
begin
lFileName := SaveUnit.FileName;
if pos('.pas', lFileName) = 0 then
lFileName := lFileName + '.pas';
memUnit.Lines.SaveToFile(lFileName);
end
end;
end;
procedure TOQLExplorerV2.aLoadFileExecute(Sender: TObject);
var
lM: integer;
lCancel: Boolean;
begin
lCancel := False;
lM := application.MessageBox('Save before open another file?', 'Attention', MB_ICONQUESTION + MB_YESNO);
case lM of
IDYES: aSaveFileExecute(Sender);
IDCANCEL: lCancel := True;
end;
if not (lCancel) then
begin
try
try
// OpenDialog1.InitialDir := ExtractFilePath(gStarUMLApp .FileName);
if OpenDialog1.Execute then
begin
lvOQLList.ItemIndex := -1;
if assigned(fOQLList) then freeandnil(fOQLList);
fOQLList := utOQLFile.create(OpenDialog1.FileName);
end;
Except
on e:exception do
begin
if assigned(fOQLList) then freeandnil(fOQLList);
fOQLList := utOQLFile.create;
raise;
end;
end;
finally
Caption := fOQLList.FileName;
UpdateOQLList;
end;
end;
end;
procedure TOQLExplorerV2.aNewFileExecute(Sender: TObject);
var
lM: integer;
lCancel: Boolean;
begin
lCancel := False;
lM := application.MessageBox('Save before create new file?', 'Attention', MB_ICONQUESTION + MB_YESNO);
case lM of
IDYES: aSaveFileExecute(Sender);
IDCANCEL: lCancel := True;
end;
if not lCancel then
begin
try
lvOQLList.ItemIndex := -1;
if assigned(fOQLList) then freeandnil(fOQLList);
fOQLList := utOQLFile.Create;
UpdateOQLList;
aNewOQLExecute(Sender);
finally
Caption := 'New...';
end;
end;
end;
procedure TOQLExplorerV2.aNewOQLExecute(Sender: TObject);
var lListItem: TListItem;
lOQL: utOQL;
lCont: integer;
begin
InterfaceToSelectedOQL;
lCont := 1;
while fOQLList.OQLExists('_NEW_OQL_' + inttostr(lCont)) do
Inc(lCont);
lOQL := fOQLList.NewOQL('_NEW_OQL_' + inttostr(lCont));
lListItem := lvOQLList.Items.Add;
lListItem.Caption := lOQL.ID;
lListItem.Data := lOQL;
lListItem.ImageIndex := 2;
lListItem.SubItems.Add('No OQL query');
lvOQLList.Selected := lListItem;
SelectedOQLToInterface;
edtName.SetFocus;
edtName.SelectAll;
end;
procedure TOQLExplorerV2.aSaveFileExecute(Sender: TObject);
var lFileName: string;
begin
InterfaceToSelectedOQL;
lFileName := fOQLList.FileName;
try
if lFileName = '' then
if SaveDialog1.Execute then
begin
lFileName := SaveDialog1.FileName;
if pos('.cxoql', lFileName) = 0 then
lFileName := lFileName + '.cxoql';
end
else raise Exception.Create('File not saved.');
lvOQLList.SortType := stText;
lvOQLList.SortType := stNone;
fOQLList.Save(lFileName);
Caption := lFileName;
Application.MessageBox('File saved.', '', MB_ICONINFORMATION);
except
on E: Exception do
begin
Application.MessageBox(PAnsiChar(E.Message), '', MB_ICONEXCLAMATION);
end;
end;
end;
constructor TOQLExplorerV2.Create(piOwner: TComponent);
begin
inherited Create(piOwner);
fFlagFormClosing := False;
fExplorer := TExplorerV2.Create(nil);
fExplorer.Parent := pnlOQLExplorer;
fExplorer.BorderIcons := [];
fExplorer.BorderStyle := bsNone;
fExplorer.Align := alClient;
fExplorer.WindowState := wsMaximized;
fExplorer.Position := poDefaultPosOnly;
fExplorer.Show;
end;
procedure TOQLExplorerV2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;
procedure TOQLExplorerV2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
fFlagFormClosing := True;
fExplorer.Close;
Action := caFree;
end;
procedure TOQLExplorerV2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var lM: integer;
begin
lM := application.MessageBox('Save before close?', 'Attention', MB_ICONQUESTION + MB_YESNO);
case lM of
IDYES: aSaveFileExecute(sender);
IDCANCEL: CanClose := false;
end;
end;
procedure TOQLExplorerV2.FormCreate(Sender: TObject);
var lFileName: string;
begin
lFileName := '';
fOQLList := utOQLFile.create(lFileName);
UpdateOQLList;
Caption := 'New...';
end;
procedure TOQLExplorerV2.FormResize(Sender: TObject);
begin
fExplorer.Top := 0;
fExplorer.Left := 0;
end;
procedure TOQLExplorerV2.FormShow(Sender: TObject);
begin
pcCXOQL.ActivePage := tsCXOQL;
if fOQLList.Count = 0 then
aNewOQL.Execute;
end;
function TOQLExplorerV2.GetQueryType(piExplorer: TExplorerV2): Integer;
begin
if piExplorer.OQLQuery.Checked = True then
Result := __OQLQuery
else
Result := __XMLQuery;
end;
procedure TOQLExplorerV2.InterfaceToSelectedOQL;
var lOQL: utOQL;
lErro: string;
begin
if Assigned(lvOQLList.Selected) and Assigned(fExplorer.SynEditOQL) then
begin
lOQL := utOQL(lvOQLList.Selected.Data);
lOQL.ID := edtName.Text;
lOQL.Description := edtDescription.Text;
lOQL.Query := fExplorer.SynEditOQL.Text;
lErro := '';
if not fFlagFormClosing then
begin
lOQL.OQLType := GetQueryType(fExplorer);
lErro := ValidaQuery(lOQL.Query, lOQL.OQLType);
end;
if lErro = '' then
begin
if lOQL.OQLType = 1
then lvOQLList.Selected.ImageIndex := 1
else lvOQLList.Selected.ImageIndex := 0;
end
else
lvOQLList.Selected.ImageIndex := 2;
lvOQLList.Selected.Caption := edtName.Text;
lvOQLList.Selected.SubItems[0] := lErro;
end;
end;
procedure TOQLExplorerV2.lvOQLListChange(Sender: TObject; Item: TListItem; Change: TItemChange);
begin
SelectedOQLToInterface;
end;
procedure TOQLExplorerV2.lvOQLListChanging(Sender: TObject;Item: TListItem; Change: TItemChange; var AllowChange: Boolean);
begin
InterfaceToSelectedOQL;
end;
procedure TOQLExplorerV2.SelectedOQLToInterface;
var lOQL: utOQL;
begin
edtName.Text := '';
edtDescription.Text := '';
if Assigned(lvOQLList.Selected) and Assigned( fExplorer.SynEditOQL) then
begin
fExplorer.SynEditOQL.Text := '';
lOQL := utOQL(lvOQLList.Selected.Data);
edtName.Text := lOQL.ID;
edtDescription.Text := lOQL.Description;
fExplorer.SynEditOQL.Text := lOQL.Query;
memError.Text := lvOQLList.Selected.SubItems[0];
SetQueryType(lOQL.OQLType);
end;
lvOQLList.Column[0].Caption := 'OQL Name (' + IntToStr(fOQLList.Count) + ')';
end;
procedure TOQLExplorerV2.SetQueryType(piType: integer);
begin
if piType = __OQLQuery then
fExplorer.OQLQuery.Execute
else
fExplorer.XMLQuery.Execute;
end;
procedure TOQLExplorerV2.splVerticalCanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
begin
Accept := (NewSize > 190);
end;
procedure TOQLExplorerV2.UpdateOQLList;
var lListItem: TListItem;
lEnum: acEnumerator;
lOQL: utOQL;
lErro: string;
begin
lvOQLList.Items.BeginUpdate;
try
lvOQLList.Clear;
lEnum := fOQLList.GetOQLEnumerator;
try
while not lEnum.EOL do
begin
lOQL := utOQL(lEnum.Current);
lListItem := lvOQLList.Items.Add;
lListItem.Caption := lOQL.ID;
lListItem.Data := lOQL;
lErro := ValidaQuery(lOQL.Query, lOQL.OQLType);
lListItem.SubItems.Add(lErro);
if lErro = '' then
begin
if lOQL.OQLType = 1
then lListItem.ImageIndex := 1
else lListItem.ImageIndex := 0;
end
else
lListItem.ImageIndex := 2;
lEnum.MoveNext;
end;
finally
lEnum.free;
end;
finally
lvOQLList.Items.EndUpdate;
end;
if lvOQLList.Items.Count > 0 then
begin
lvOQLList.ItemIndex := 0;
SelectedOQLToInterface;
end;
end;
function TOQLExplorerV2.ValidaQuery(piQuery: string; piOQLType: integer): string;
var lQuery: acAbstractOQLQuery;
begin
result := '';
if not fFlagFormClosing then
begin
try
if Assigned(fExplorer) then
begin
// if Assigned(fExplorer.Session) then
// begin
// if piOQLType = 1 then
// lQuery := acDataSetOQLQuery.Create(fExplorer.Session, piQuery)
// else
// lQuery := acOQLQuery.Create(fExplorer.Session, piQuery);
// lQuery.Free;
// end;
end;
except
on e:exception do
begin
Result := e.Message;
end;
end;
end;
end;
end.
object OQLParams: TOQLParams
Left = 0
Height = 163
Top = 0
Width = 308
BorderStyle = bsDialog
Caption = 'OQLParams'
ClientHeight = 163
ClientWidth = 308
Color = clBtnFace
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
OnClose = FormClose
Position = poDesktopCenter
LCLVersion = '2.1.0.0'
object Panel1: TPanel
Left = 0
Height = 123
Top = 0
Width = 308
Align = alClient
ClientHeight = 123
ClientWidth = 308
TabOrder = 0
object sbParams: TScrollBox
Tag = -20
Left = 1
Height = 121
Top = 1
Width = 306
HorzScrollBar.Page = 1
VertScrollBar.Page = 1
Align = alClient
TabOrder = 0
end
end
object Panel2: TPanel
Left = 0
Height = 40
Top = 123
Width = 308
Align = alBottom
ClientHeight = 40
ClientWidth = 308
TabOrder = 1
object BitBtn1: TBitBtn
Left = 136
Height = 25
Top = 7
Width = 75
Anchors = [akTop, akRight]
Kind = bkOK
OnClick = BitBtn1Click
TabOrder = 0
end
object BitBtn2: TBitBtn
Left = 217
Height = 25
Top = 7
Width = 75
Anchors = [akTop, akRight]
Kind = bkCancel
TabOrder = 1
end
object BitBtn3: TBitBtn
Left = 85
Height = 25
Top = 7
Width = 36
Anchors = [akTop, akRight]
Caption = 'Null'
NumGlyphs = 2
OnClick = BitBtn3Click
TabOrder = 2
end
end
end
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TOQLParams','FORMDATA',[
'TPF0'#10'TOQLParams'#9'OQLParams'#4'Left'#2#0#6'Height'#3#163#0#3'Top'#2#0#5
+'Width'#3'4'#1#11'BorderStyle'#7#8'bsDialog'#7'Caption'#6#9'OQLParams'#12'Cl'
+'ientHeight'#3#163#0#11'ClientWidth'#3'4'#1#5'Color'#7#9'clBtnFace'#10'Font.'
+'Color'#7#12'clWindowText'#11'Font.Height'#2#245#9'Font.Name'#6#6'Tahoma'#7
+'OnClose'#7#9'FormClose'#8'Position'#7#15'poDesktopCenter'#10'LCLVersion'#6#7
+'2.1.0.0'#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'Height'#2'{'#3'Top'#2#0#5'Widt'
+'h'#3'4'#1#5'Align'#7#8'alClient'#12'ClientHeight'#2'{'#11'ClientWidth'#3'4'
+#1#8'TabOrder'#2#0#0#10'TScrollBox'#8'sbParams'#3'Tag'#2#236#4'Left'#2#1#6'H'
+'eight'#2'y'#3'Top'#2#1#5'Width'#3'2'#1#18'HorzScrollBar.Page'#2#1#18'VertSc'
+'rollBar.Page'#2#1#5'Align'#7#8'alClient'#8'TabOrder'#2#0#0#0#0#6'TPanel'#6
+'Panel2'#4'Left'#2#0#6'Height'#2'('#3'Top'#2'{'#5'Width'#3'4'#1#5'Align'#7#8
+'alBottom'#12'ClientHeight'#2'('#11'ClientWidth'#3'4'#1#8'TabOrder'#2#1#0#7
+'TBitBtn'#7'BitBtn1'#4'Left'#3#136#0#6'Height'#2#25#3'Top'#2#7#5'Width'#2'K'
+#7'Anchors'#11#5'akTop'#7'akRight'#0#4'Kind'#7#4'bkOK'#7'OnClick'#7#12'BitBt'
+'n1Click'#8'TabOrder'#2#0#0#0#7'TBitBtn'#7'BitBtn2'#4'Left'#3#217#0#6'Height'
+#2#25#3'Top'#2#7#5'Width'#2'K'#7'Anchors'#11#5'akTop'#7'akRight'#0#4'Kind'#7
+#8'bkCancel'#8'TabOrder'#2#1#0#0#7'TBitBtn'#7'BitBtn3'#4'Left'#2'U'#6'Height'
+#2#25#3'Top'#2#7#5'Width'#2'$'#7'Anchors'#11#5'akTop'#7'akRight'#0#7'Caption'
+#6#4'Null'#9'NumGlyphs'#2#2#7'OnClick'#7#12'BitBtn3Click'#8'TabOrder'#2#2#0#0
+#0#0
]);
unit ituOQLParams;
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
interface
uses
{$IFnDEF FPC}
Mask, Windows,
{$ELSE}
MaskEdit, LCLIntf, LCLType, LMessages,
{$ENDIF}
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, acuOQL, ComCtrls, StdCtrls, acuContainers, Buttons;
const cCol1 = 5;
cCol1Width = 120;
cCol2 = cCol1 + cCol1Width + 10;
cCol2Width = 210;
cCol3 = cCol2 + cCol2Width + 10;
cCol3Width = 40;
cCol4 = cCol3 + cCol3Width + 10;
cCol4Width = 120;
type
TOQLParams = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
sbParams: TScrollBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
fParams: TList;
fOQLQuery: acAbstractOQLQuery;
procedure SetOQLQuery(const Value: acAbstractOQLQuery);
{ Private declarations }
public
{ Public declarations }
Procedure ParamsToInterface;
procedure InterfaceToParams;
Constructor Create(piOwner: TComponent; piQuery: acAbstractOQLQuery); reintroduce;
property OQLQuery: acAbstractOQLQuery read fOQLQuery write SetOQLQuery;
end;
implementation
uses acuObject;
type
TInterfaceParam = class
private
fLabelParamName: TLabel;
fComponent: TWinControl;
fLabelDataType: TLabel;
fCheckBoxNull: TCheckBox;
fParam: acOQLParam;
fScrollBox: TScrollBox;
public
procedure ApplyValueToParam;
constructor create(piParam: acOQLParam; piParent: TScrollBox);
destructor Destroy; override;
end;
{$R *.dfm}
{ TForm2 }
procedure TOQLParams.BitBtn1Click(Sender: TObject);
var
I: Integer;
begin
try
for I := 0 to fParams.Count - 1 do
TInterfaceParam(fParams.Items[i]).ApplyValueToParam;
except
ModalResult := mrnone;
raise;
end;
end;
procedure TOQLParams.BitBtn3Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to fParams.Count - 1 do
TInterfaceParam(fParams.Items[i]).fCheckBoxNull.checked := true;
end;
constructor TOQLParams.Create(piOwner: TComponent; piQuery: acAbstractOQLQuery);
begin
inherited Create(piOwner);
Self.Width := cCol4 + cCol4Width + 40;
fParams := TList.Create;
OQLQuery := piQuery;
ParamsToInterface;
end;
procedure TOQLParams.FormClose(Sender: TObject; var Action: TCloseAction);
var
I: Integer;
begin
for I := fParams.Count - 1 downto 0 do TInterfaceParam(fParams.Items[i]).Free;
fParams.free;
end;
procedure TOQLParams.InterfaceToParams;
begin
end;
procedure TOQLParams.ParamsToInterface;
var lEnum: acEnumerator;
lParam: acOQLParam;
lInterfaceParam: TInterfaceParam;
begin
lEnum := OQLQuery.Parameters.GetEnumerator;
try
while not lEnum.EOL do
begin
lParam := acOQLParam(lEnum.Current);
lInterfaceParam := TInterfaceParam.create(lParam, sbParams);
fParams.Add(lInterfaceParam);
lEnum.MoveNext;
end;
Self.Height := sbParams.Tag + 120;
finally
lEnum.Free;
end;
end;
procedure TOQLParams.SetOQLQuery(const Value: acAbstractOQLQuery);
begin
fOQLQuery := Value;
end;
{ TInterfaceParam }
procedure TInterfaceParam.ApplyValueToParam;
begin
if fCheckBoxNull.Checked then
fParam.SetNull
else
begin
if fParam is acOQLParamString then acOQLParamString(fParam).Value := TEdit(fComponent).Text
else if fParam is acOQLParamChar then acOQLParamChar(fParam).Value := TEdit(fComponent).Text
else if fParam is acOQLParamDateTime then acOQLParamDateTime(fParam).Value := SysUtils.strtodatetime(TMaskEdit(fComponent).text)
else if fParam is acOQLParamBoolean then acOQLParamBoolean(fParam).Value := TCheckBox(fComponent).Checked
else if fParam is acOQLParamInt then acOQLParamInt(fParam).Value := strtoint(TEdit(fComponent).Text)
else if fParam is acOQLParamDouble then acOQLParamDouble(fParam).Value := SysUtils.StrToFloat(TEdit(fComponent).Text)
else if fParam is acOQLParamCurrency then acOQLParamCurrency(fParam).Value := SysUtils.StrToCurr(TEdit(fComponent).Text)
end;
end;
constructor TInterfaceParam.create(piParam: acOQLParam; piParent: TScrollBox);
begin
fParam := piParam;
fScrollBox := piParent;
fScrollBox.Tag := fScrollBox.Tag + 30;
//NOME DO PARAMETRO
fLabelParamName := TLabel.Create(nil);
fLabelParamName.AutoSize := false;
fLabelParamName.Alignment := taRightJustify;
fLabelParamName.Parent := fScrollBox;
fLabelParamName.Left := cCol1;
fLabelParamName.Width := cCol1Width;
fLabelParamName.Top := fScrollBox.Tag + 3;
fLabelParamName.AutoSize := false;
fLabelParamName.Caption := fParam.Name + ':';
//VALOR DO PARAMETRO
if fParam is acOQLParamString then
fComponent := TEdit.Create(nil)
else if fParam is acOQLParamChar then
fComponent := TEdit.Create(nil)
else if fParam is acOQLParamDateTime then
begin
fComponent := TMaskEdit.Create(nil);
TMaskEdit(fComponent).EditMask := '99/99/9999 99:99';
end
else if fParam is acOQLParamBoolean then
fComponent := TCheckBox.Create(nil)
else if fParam is acOQLParamInt then
fComponent := TEdit.Create(nil)
else if fParam is acOQLParamDouble then
fComponent := TEdit.Create(nil)
else if fParam is acOQLParamCurrency then
fComponent := TEdit.Create(nil)
else
raise Exception.Create('TInterfaceParam.create: Param "' + fParam.ClassName + '" not found.');
fComponent.Parent := fScrollBox;
fComponent.Left := cCol2;
fComponent.Width := cCol2Width;
fComponent.Top := fScrollBox.Tag;
//CheckBox NULL
fCheckBoxNull := TCheckBox.Create(nil);
fCheckBoxNull.Parent := fScrollBox;
fCheckBoxNull.Left := cCol3;
fCheckBoxNull.Width := cCol3Width;
fCheckBoxNull.top := fScrollBox.Tag + 2;
fCheckBoxNull.Caption := 'Null';
//TIPO DO PARAMETRO
fLabelDataType := TLabel.Create(nil);
fLabelDataType.AutoSize := false;
fLabelDataType.Parent := fScrollBox;
fLabelDataType.Left := cCol4;
fLabelDataType.Width := cCol4Width;
fLabelDataType.top := fScrollBox.Tag + 3;
fLabelDataType.AutoSize := false;
fLabelDataType.Caption := '(' + fParam.ClassName + ')';
end;
destructor TInterfaceParam.Destroy;
begin
fLabelParamName.free;
fLabelDataType.Free;
fComponent.free;
fCheckBoxNull.free;
inherited;
end;
end.
object itServiceParameters: TitServiceParameters
Left = 0
Top = 0
BorderStyle = bsDialog
Caption = 'Propriedades do Servi'#231'o'
ClientHeight = 225
ClientWidth = 258
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
PixelsPerInch = 96
TextHeight = 13
object Panel2: TPanel
Left = 0
Top = 0
Width = 258
Height = 186
Align = alClient
TabOrder = 1
ExplicitWidth = 229
ExplicitHeight = 191
object GroupBox1: TGroupBox
Left = 6
Top = 3
Width = 243
Height = 64
TabOrder = 0
object Label2: TLabel
Left = 16
Top = 16
Width = 89
Height = 13
Caption = 'Nome do Servidor:'
end
object Label1: TLabel
Left = 20
Top = 40
Width = 85
Height = 13
Caption = 'N'#250'mero da Porta:'
end
object edtServerName: TEdit
Left = 113
Top = 13
Width = 121
Height = 21
TabOrder = 0
end
object edtPortNumber: TEdit
Left = 113
Top = 37
Width = 121
Height = 21
TabOrder = 1
end
end
object GroupBox2: TGroupBox
Left = 6
Top = 70
Width = 243
Height = 41
TabOrder = 1
object Label3: TLabel
Left = 13
Top = 15
Width = 92
Height = 13
Caption = 'C'#243'digo do Sistema:'
end
object edtSystemCode: TEdit
Left = 113
Top = 12
Width = 121
Height = 21
TabOrder = 0
end
end
object GroupBox3: TGroupBox
Left = 6
Top = 114
Width = 243
Height = 66
TabOrder = 2
object Label5: TLabel
Left = 20
Top = 16
Width = 85
Height = 13
Caption = 'Nome do Usu'#225'rio:'
end
object Label4: TLabel
Left = 71
Top = 40
Width = 34
Height = 13
Caption = 'Senha:'
end
object edtUserName: TEdit
Left = 113
Top = 13
Width = 121
Height = 21
TabOrder = 0
end
object edtPassword: TEdit
Left = 113
Top = 37
Width = 121
Height = 21
PasswordChar = '*'
TabOrder = 1
end
end
end
object Panel1: TPanel
Left = 0
Top = 186
Width = 258
Height = 39
Align = alBottom
TabOrder = 0
ExplicitTop = 187
ExplicitWidth = 229
object BitBtn1: TBitBtn
Left = 77
Top = 6
Width = 75
Height = 25
TabOrder = 0
OnClick = BitBtn1Click
Kind = bkOK
end
object BitBtn2: TBitBtn
Left = 165
Top = 6
Width = 75
Height = 25
TabOrder = 1
Kind = bkCancel
end
end
end
unit ituServiceParameters;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TitServiceParameters = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
edtServerName: TEdit;
Label2: TLabel;
Label1: TLabel;
edtPortNumber: TEdit;
edtSystemCode: TEdit;
Label3: TLabel;
edtUserName: TEdit;
edtPassword: TEdit;
Label5: TLabel;
Label4: TLabel;
procedure BitBtn1Click(Sender: TObject);
private
function GetPassword: string;
function GetPortNumber: integer;
function GetServerName: string;
function GetSystemCode: integer;
function GetUserName: string;
procedure SetPassword(const Value: string);
procedure SetPortNumber(const Value: integer);
procedure SetServerName(const Value: string);
procedure SetSystemCode(const Value: integer);
procedure SetUserName(const Value: string);
{ Private declarations }
public
{ Public declarations }
property ServerName: string read GetServerName write SetServerName;
property PortNumber: integer read GetPortNumber write SetPortNumber;
property SystemCode: integer read GetSystemCode write SetSystemCode;
property UserName: string read GetUserName write SetUserName;
property Password: string read GetPassword write SetPassword;
end;
implementation
{$R *.dfm}
{ TServiceParameters }
procedure TitServiceParameters.BitBtn1Click(Sender: TObject);
begin
if edtServerName.Text = '' then
begin
Application.MessageBox(' necessrio informar o nome do servidor.','Ateno', MB_ICONEXCLAMATION);
edtServerName.SetFocus;
modalresult := mrnone;
end else if edtPortNumber.Text = '' then
begin
Application.MessageBox(' necessrio informar o nmero da porta.','Ateno', MB_ICONEXCLAMATION);
edtPortNumber.SetFocus;
modalresult := mrnone;
end else if edtSystemCode.Text = '' then
begin
Application.MessageBox(' necessrio informar o cdigo do sistema.','Ateno', MB_ICONEXCLAMATION);
edtSystemCode.SetFocus;
modalresult := mrnone;
end else if edtUserName.Text = '' then
begin
Application.MessageBox(' necessrio informar o nome do usurio.','Ateno', MB_ICONEXCLAMATION);
edtUserName.SetFocus;
modalresult := mrnone;
end;
try
strtoint(edtPortNumber.Text);
except
Application.MessageBox('Porta informada invlida.','Ateno', MB_ICONEXCLAMATION);
edtPortNumber.SetFocus;
edtPortNumber.SelectAll;
modalresult := mrnone;
end;
try
strtoint(edtSystemCode.Text);
except
Application.MessageBox('Cdigo do sistema informado invlido.','Ateno', MB_ICONEXCLAMATION);
edtSystemCode.SetFocus;
edtSystemCode.SelectAll;
modalresult := mrnone;
end;
end;
function TitServiceParameters.GetPassword: string;
begin
result := edtPassword.Text;
end;
function TitServiceParameters.GetPortNumber: integer;
begin
Result := strtoint(edtPortNumber.Text);
end;
function TitServiceParameters.GetServerName: string;
begin
Result := edtServerName.Text;
end;
function TitServiceParameters.GetSystemCode: integer;
begin
Result := strtoint(edtSystemCode.Text);
end;
function TitServiceParameters.GetUserName: string;
begin
Result := edtUserName.Text;
end;
procedure TitServiceParameters.SetPassword(const Value: string);
begin
edtPassword.Text := value;
end;
procedure TitServiceParameters.SetPortNumber(const Value: integer);
begin
edtPortNumber.Text := inttostr(Value);
end;
procedure TitServiceParameters.SetServerName(const Value: string);
begin
edtServerName.Text := value;
end;
procedure TitServiceParameters.SetSystemCode(const Value: integer);
begin
edtSystemCode.Text := inttostr(value);
end;
procedure TitServiceParameters.SetUserName(const Value: string);
begin
edtUserName.Text := Value;
end;
end.
object XSDExplorer: TXSDExplorer
Left = 0
Height = 546
Top = 0
Width = 997
ClientHeight = 546
ClientWidth = 997
Color = clBtnFace
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
OnCreate = FormCreate
OnShow = FormShow
LCLVersion = '2.1.0.0'
WindowState = wsMaximized
object Panel1: TPanel
Left = 0
Height = 41
Top = 0
Width = 997
Align = alTop
BevelInner = bvLowered
ClientHeight = 41
ClientWidth = 997
TabOrder = 0
object btnDeleteXSD: TSpeedButton
Left = 202
Height = 33
Top = 4
Width = 90
Action = actDeleteXSD
Glyph.Data = {
DE020000424DDE020000000000009E0000002800000018000000180000000100
08000000000040020000120B0000120B00001A00000000000000021DD400021D
D900011EE100011FEA00011FF100011FFA00112BD600112BD900102CE100102D
EC00102DFA00203AE9003147DF003048E7003048E9003049F1003049F9004155
DE005163E1006172EA006073F6006073FA007180EB007F8EFC00FF00FF00808E
ED00181818181818181818181818181818181818181818181818181818181818
1818181818181818181818181818180700181818181818181818181818181818
1818181818180100071818120000181818181818181818181818181818010107
1818181100000018181818181818181818181816010107181818181800000000
1818181818181818181813010207181818181818180600010118181818181818
18130202071818181818181818180C0101011818181818180D02020818181818
1818181818181812010202181818180E02020818181818181818181818181818
1902020218180E02020818181818181818181818181818181818080302030302
091818181818181818181818181818181818180B030303091818181818181818
1818181818181818181818090303030F18181818181818181818181818181818
18180303030303040F181818181818181818181818181818180403030E181804
041018181818181818181818181818140404030F181818180A04101818181818
181818181818140404040F181818181818100510181818181818181818150404
040F181818181818181815051018181818181818100405040F18181818181818
18181817050A1818181818100504040F181818181818181818181818180A1518
1818180504051018181818181818181818181818181818181818181005101818
1818181818181818181818181818181818181818181818181818181818181818
1818181818181818181818181818181818181818181818181818181818181818
1818
}
end
object btnNewXSD: TSpeedButton
Left = 104
Height = 33
Top = 4
Width = 90
Action = actNewXSD
Glyph.Data = {
76060000424D7606000000000000360400002800000018000000180000000100
0800000000004002000000000000000000000001000000010000FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FD00FD00FB00FB00F600F600EE01EE00E102E100CF04CF00BA07BA009E0A
9E00770F77004F144F00371837002A1B2A001E1E1E001F1F1F00202020002121
2100222222002323230024242400252525002626260027272700282828002929
29002A2A2A002B2B2B002C2C2C002D2D2D002E2E2E002F2F2F00303030003131
3100323232003333330034343400353535003636360037373700383838003939
39003A3A3A003B3B3B003C3C3C003D3D3D003E3E3E003F3F3F00404040004141
4100424242004343430044444400454545004646460047474700484848004949
49004A4A4A004B4B4B004C4C4C004D4D4D004E4E4E004F4F4F00505050005151
5100525252005353530054545400555555005656560057575700585858005959
59005A5A5A005B5B5B005C5C5C005D5D5D005E5E5E005F5F5F00606060006161
610062626200636363006464640065656500666666006D686000816D50009573
3E00AA782A00BB7C1A00C57E1000CD800800D1810400D3810200D4810100D581
0000D5810000D5810000D5810000D5810000D5810000D5810000D5810000D581
0000D5810000D5810000D5810000D5810000D5810000D5810000D5810000D581
0000D5820000D5820000D5820000D5820000D5820000D5820000D5820000D582
0000D5820000D5820000D5820000D5820000D5820000D5820000D5820000D582
0000D5820000D5820000D5820100D4820300D3820600D0830C00CC851700C687
2500BE8B3D00B3905B00A9967800A09B93009E9E9E009F9F9F00A0A0A000A1A1
A100A7A5A200B3ACA400BCB2A600C9B9A800D7C2AA00E5CAAC00F1D1AC00F7D4
AD00FBD6AD00FCD7AC00FDD7AD00FDD8AD00FDD8AD00FDD8AD00FDD8AE00FDD9
AF00FDD9B000FEDAB200FEDBB300FEDBB400FEDBB500FEDCB600FEDCB700FEDD
B800FEDEBA00FEDEBB00FEDFBC00FEDFBD00FEE0BE00FEE1C000FEE1C100FEE2
C200FEE2C300FEE2C300FEE3C500FEE3C600FEE4C700FEE4C800FEE5C900FEE6
CB00FEE6CC00FEE7CD00FEE8CE00FEE8D000FEE9D100FEEAD200FEEAD300FEEA
D400FEEBD600FEECD800FEEDD900FEEDDA00FEEEDC00FEEFDD00FEF0DF00FEF0
E100FEF1E300FEF2E500FEF3E600FEF4E800FEF5EA00FEF5EC00FEF6ED00FEF6
EE00FEF7EF00FEF8F100FEF9F300FEFAF500FEFBF700FEFCF900FEFCFA00FEFC
FA00FEFCFA00FDFCF900FCFBF700F7F9F300EAF4E700CDE9CA0082CC81003CB1
3C000D9E0C00029A020000990000009900000099000000990000009900000099
00000099000000990000009900000099000000990000009800000A0A0A0A0A0A
0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A8C8C8C8C8C8C8C8C8C8C8C8C
8C8C8C8C8C8C8C8C0A0A0A8CCFCCCBC8C4C2BFBEBAB9B7B4B3B1AFAFACACACAC
8C0A0A8CD2CFF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9ACAC8C0A0A8CD3D2F9F9
F9F9F9F9F9F9F9F9F9F9F9F9F9F9ACAC8C0A0A8CD6D3D2D0CDCBC8C6C3BFBDBC
B9B7B5B3B2B0AFAC8C0A0A8CD8D6F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9B0AF
8C0A0A8CDAD8F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9B3B18C0A0A8CDCDAD8D7
D4D2D0CDCBC9C6C4C0BEBCBAB8B6B3B38C0A0A8CDDDCF9F9F9F9F9F9F9F9F9F9
F9F9F9F9F9F9B6B38C0A0A8CDFDDF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9B8B7
8C0A0A8CE0E0DDDBDAD8D7D5D2D0CECCC8C6C4C1BEBCBAB98C0A0A8CE3E2F9F9
F9F9F9F9F9F9F9F9F9F9F9F9F9F9BCBA8C0A0A8CE4E3F9F9F9F9F9F9F9F9F9F9
F9F9F9F9F9F9BFBD8C0A0A8CE5E4E3E2E0DDDCDAD8D6D5D3D1CECCC9C8C4C1BF
8C0A0A8CE6E5F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9C4C18C0A0A8CE8E7F9F9
F9F9F9F9F9F9F9F9F9F9F9F9F9F9C8C58C0A0A8CEAE8E7E6E4E3E2E0DDDCDAD9
D7D6D3D1CECCC9C88C0A0A8CEAEAF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9CDCA
8C0A0A8CEAEAF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9CFCD8C0A0A8CEAEAEAEA
E8E7E6E5E4E3E0DEDDDBD9D8D6D4D2CF8C0A0A8CEAEAEAEAEAEAE7E6E5E4E2E0
DEDDDBD9D7D6D4D28C0A0A0A8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C
0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
}
end
object btnSave: TSpeedButton
Left = 6
Height = 33
Top = 4
Width = 90
Action = actSave
Glyph.Data = {
F6060000424DF606000000000000360000002800000018000000180000000100
180000000000C0060000120B0000120B00000000000000000000FF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FF006600006600006600006600A4948CA4948CA4948CA4948C
A4948CA4948CA4948CA4948CA4948CA4948CA4948C0066000066000066000066
00FF00FFFF00FFFF00FFFF00FF006600009900009900009900009900767657E9
E2E2D5CCCCD1C0BFE9DAD8F6F0EDF6F1EFEBE6E6E3E7E6E3E7E672904C406D08
40790D009900009900006600FF00FFFF00FFFF00FF0066000099000099000099
000099004E7D28E9E2E20066000066000A990AF7EDEAFFFFFDFBF8F5F3F8F6F3
F8F672904C41690840790D009900009900006600FF00FFFF00FFFF00FF006600
009900009900009900009900527C2DE9E2E20066000066000A990AEADFDDFBFA
F7FEFAF7FDFFFCFDFFFF72904C41690840790D009900009900006600FF00FFFF
00FFFF00FF006600009900009900009900009900517D2CE9E2E2006600006600
0A990ADACECDF0EFEDFBF7F5FFFFFFFDFFFF72904C41690840790D0099000099
00006600FF00FFFF00FFFF00FF00660000990000990000990000990051802DE9
E2E20066000066000A990AC1B4B3DEDEDCF2EDEAFFFFFFFDFFFF72904C426608
407A0C009900009900006600FF00FFFF00FFFF00FF0066000099000099000099
0000990053822EE9E2E20066000066000A990AA39B9ABAC0BFDDDEDBFDFFFFFD
FFFF72904C425F093F770B009900009900006600FF00FFFF00FFFF00FF006600
0099000099000099000099004E8C25E9E2E2E9E2E2E9E2E2E9E2E2E9E2E2E9E2
E2E9E2E2E9E2E2E9E2E272904C41790940830F009900009900006600FF00FFFF
00FFFF00FF006600009900009900009900009900009900009900009900009900
0099000099000099000099000099000099000099000099000099000099000099
00006600FF00FFFF00FFFF00FF00660000990000990000990000990000990000
9900009900009900009900009900009900009900009900009900009900009900
009900009900009900006600FF00FFFF00FFFF00FF006600009900009900B1D0
B1B1D0B1B1D0B1B1D0B1B1D0B1B1D0B1B1D0B1B1D0B1B1D0B1B1D0B1B1D0B1B1
D0B1B1D0B1B1D0B1B1D0B1009900009900006600FF00FFFF00FFFF00FF006600
009900009900B1D0B1FEFDFDFEFDFDFFFEFEFFFEFEFFFEFEFFFEFEFFFEFEFFFE
FEFFFEFEFFFEFEFFFEFEFEFDFDFDFCFCB1D0B1009900009900006600FF00FFFF
00FFFF00FF006600009900009900B1D0B1FEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEB1D0B10099000099
00006600FF00FFFF00FFFF00FF006600009900009900B1D0B1FEFEFEFEFEFECD
CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDFEFEFEFEFEFE
B1D0B1009900009900006600FF00FFFF00FFFF00FF006600009900009900B1D0
B1FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEB1D0B1009900009900006600FF00FFFF00FFFF00FF006600
009900009900B1D0B1FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEB1D0B1009900009900006600FF00FFFF
00FFFF00FF006600009900009900B1D0B1FEFEFEFEFEFECDCDCDCDCDCDCDCDCD
CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDFEFEFEFEFEFEB1D0B10099000099
00006600FF00FFFF00FFFF00FF006600009900009900B1D0B1FEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
B1D0B1009900009900006600FF00FFFF00FFFF00FF006600009900009900B1D0
B1FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEB1D0B1009900009900006600FF00FFFF00FFFF00FF006600
009900009900B1D0B1FEFEFEFEFEFECDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD
CDCDCDCDCDCDCDCDCDCDFEFEFEFEFEFEB1D0B1009900009900006600FF00FFFF
00FFFF00FF006600009900009900B1D0B1FEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEB1D0B10099000099
00006600FF00FFFF00FFFF00FFFF00FF006600006600B1D0B1FEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
B1D0B1006600006600FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
}
end
end
object PageControl1: TPageControl
Left = 0
Height = 454
Top = 41
Width = 997
ActivePage = tsXSD
Align = alClient
TabIndex = 0
TabOrder = 1
object tsXSD: TTabSheet
Caption = 'XSD'
ClientHeight = 428
ClientWidth = 989
object Splitter1: TSplitter
Left = 281
Height = 428
Top = 0
Width = 4
end
object Panel2: TPanel
Left = 0
Height = 428
Top = 0
Width = 281
Align = alLeft
ClientHeight = 428
ClientWidth = 281
TabOrder = 0
object ltvXSDs: TListView
Left = 1
Height = 426
Top = 1
Width = 279
Align = alClient
Columns = <
item
Caption = 'XSD Name'
Width = 600
end
item
Caption = 'Erro'
Width = 0
end
item
Caption = 'Qtd'
Width = 0
end>
DragMode = dmAutomatic
HideSelection = False
ReadOnly = True
RowSelect = True
SmallImages = imgOQLState
TabOrder = 0
ViewStyle = vsReport
OnChange = ltvXSDsChange
OnCustomDrawItem = ltvXSDsCustomDrawItem
OnDblClick = ltvXSDsDblClick
end
end
object Panel3: TPanel
Left = 285
Height = 428
Top = 0
Width = 704
Align = alClient
ClientHeight = 428
ClientWidth = 704
TabOrder = 1
object pgcXSD: TPageControl
Left = 1
Height = 426
Top = 1
Width = 702
ActivePage = TabSheet1
Align = alClient
TabIndex = 0
TabOrder = 0
OnChange = pgcXSDChange
object TabSheet1: TTabSheet
Caption = 'XSD Properties'
ClientHeight = 400
ClientWidth = 694
object Panel5: TPanel
Left = 0
Height = 400
Top = 0
Width = 694
Align = alClient
ClientHeight = 400
ClientWidth = 694
TabOrder = 0
object Panel6: TPanel
Left = 1
Height = 80
Top = 1
Width = 692
Align = alTop
BevelInner = bvLowered
ClientHeight = 80
ClientWidth = 692
TabOrder = 0
object Label1: TLabel
Left = 41
Height = 13
Top = 18
Width = 31
Caption = 'Name:'
ParentColor = False
end
object Label2: TLabel
Left = 15
Height = 13
Top = 49
Width = 57
Caption = 'Description:'
ParentColor = False
end
object btnSendExternalEditor: TSpeedButton
Left = 497
Height = 40
Top = 19
Width = 53
Flat = True
Glyph.Data = {
360C0000424D360C000000000000360000002800000020000000200000000100
180000000000000C0000120B0000120B00000000000000000000FF00FF1897C9
1897C91897C91897C91897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C935A4D0
BBE4F35EC3EA4EBBE539ADDA1897C91897C91897C91897C91897C9FF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0A7812FF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C91897C9
D8EEF672D4F872D4F872D4F872D4F86CCFF466C9F24EBBE53EB0DD1897C91897
C91897C91897C91897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0A78120A
7812FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C94EBEE2
99D0E6A7E4F972D4F872D4F872D4F872D4F872D4F872D4F872D4F872D4F86CCF
F460C7EE4EBBE539ADDA1897C91897C91897C91897C91897C9FF00FF0A781211
A11D0A7812FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C957C3E4
4AAFD6D1F0FB72D4F872D4F872D4F872D4F872D4F872D4F872D4F872D4F872D4
F872D4F872D4F872D4F872D4F86CCFF460C7EE4AB7E339ADDA1897C90A781254
BE5E11A11D0A7812FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C951BEE1
41B4DCD2EBF37BD7F872D4F872D4F872D4F872D4F872D4F872D4F872D4F80A78
120A78120A78120A78120A78120A78120A78120A78120A78120A78120A78125A
C1645AC16411A11D0A7812FF00FFFF00FFFF00FFFF00FFFF00FF1897C951BEE1
57C3E47CC4E0A7E4F975D7F875D7F875D7F875D7F875D7F875D7F875D7F80A78
128CE9ABBEF0CDBEEECABAEBC5BAEBC5B1E8BDA2E2AF91DB9E82D58F70CC7C70
CC7C5FC46949BC5611A11D0A7812FF00FFFF00FFFF00FFFF00FF1897C951BEE1
58C0E242AED6DCF4FC79DAF879DAF879DAF879DAF879DAF879DAF879DAF80A78
129FEDBAE5FAECE4F9EBE4F8EAE3F8E9DEF6E4CDF1D5BAEBC5A5E2B091DB9E7A
D38964C77049BC5638B44311A11D0A7812FF00FFFF00FFFF00FF1897C953BFE3
58C0E241B4DCD2EBF38CE0F87CDCF67CDBF67CDBF67CDBF67CDBF67CDBF60A78
129FEDBAE6FAEDE5FAECE4F9EBE3F8E9DEF6E4CDF1D5BAEBC5A8E4B491DB9E82
D58F69CB7752C05F38B44325AD3211A41E0A7812FF00FFFF00FF1897C953BFE3
5AC2E55AC2E56EBDDDB5EBF87DDAF17CD8EF7BD8EE7BD8EE7BD8EE7BD8EE0A78
129FEDBAE6FAEDE6FAEDE5FAECE4F9EBE0F7E7D2F4DBBEEECAABE6B898E3AA82
D58F6ECE7D57C46740BA4F25AD3211A11D0A7812FF00FFFF00FF1897C955C0E5
5CC1E65CC1E639ABD4E5F6FA7DD6EC7AD1E579D0E379D0E379D0E379D0E30A78
129FEDBAE6FAEDE6FAEDE6FAEDE5FAECE3F8E9D2F4DBC1EFCDAFE9BD98E3AA88
DA9873D1845DC86E49BC5611A11D077B0EFF00FFFF00FFFF00FF1897C957C1E7
5EC3EA5EC3EA4BB9DEB3DFEDA6D8E998D7E398D7E398D7E398D7E398D7E30A78
128CE9ABC3F4D4C3F4D4C3F4D4C3F4D4BFF2D0B3EEC5A5E9B898E3AA8ADD9C8A
DD9C7AD38962CC7511A11D0A7D111897C9FF00FFFF00FFFF00FF1897C957C1E7
61C4EC61C4EC5CC1E66EBDDDDEF8FBABF0FAABF0FAABF0FAABF0FAABF0FA0A78
120A78120A78120A78120A78120A78120A78120A78120A78120A78120A781294
DEA37DD89111A11D0D80178FEBF81897C9FF00FFFF00FFFF00FF1897C959C2E8
63C5EE63C4ED5FBDE5439BC0C4E4F0CBF6FBAFF4FAAFF4FAAFF4FAAFF4FAAFF4
FAAFF4FAAFF4FAAFF4FAAFF4FAAFF4FAAFF4FAAFF4FA9EDEE584DAE40A781298
E3AA11A11D0D801795F1F995F1F95DC8E41897C9FF00FFFF00FF1897C963C4EA
66C6F166C6F162BFE9A2A3AB269DCCB3DFEDE5F6FAEDFBFBE5FAFCD9F9FBD9F9
FBCAF8FAB9F6F9B5F6FAB5F6FAB5F6FAB5F6FAB3F6FAAAE0E58BDCE40A781211
A11D11831D7CDCED9DF3F99DF3F99DF3F91F9BCBFF00FFFF00FF1897C96EC8EB
66C9F266C6F162BFE9C2A6A4C5E2E960B6D852B0D5269DCC35A4D051B1D651B1
D68BCBE4DDF0F6D9F9FBC6F7F9C6F7F9C6F7F9C6F7F9BBE2E59EDEE50A781211
831DA0F0F98CDEEEB3F6FAB3F6FAB3F6FA52BADB1897C9FF00FF1897C97ACAEC
6CCCF46CCCF468C4EAC2A6A4FEFAF5FEFAF5FEFAF5FEFAF5FEFAF5D4E7EAC5E2
E999CEE134A4CFB3DFEDEDFBFBD9F9FBD5F9FAD5F9FAC5E2E9AAE0E50A7812B7
F1F8B1EEF79CDDF1CAF8FACAF8FACAF8FAAEE8F21897C9FF00FF1897C99CDDF1
71D1F571D1F56EC8EBC2A6A4FEF8F2FEF8F2FEF8F2FEF8F2FEF8F2FEF8F2FEF8
F2FEF8F2F0F2EF60B5D67CC4E0ECF6F9EDFBFBECF6F9D4E7EABBE2E5C4ECF1C8
F3F9C3F1F9B3DFEDE1FAFBE1FAFBE1FAFBE1FAFB1897C9FF00FF1897C9BCEBFA
77D6F677D6F672CEECC2A6A4FEF7F0FEF7F0FEF7F0FEF7F0FEF7F0FEF7F0FEF7
F0FEF7F0FEF7F0FEF7F099CEE141ABD3A6D8E9F9FCFDEBF0F0D4E7EAD2EBF3CC
F3FACCF3FAB3DFEDE7FAFBE7FAFBE7FAFBE7FAFB8BCBE41897C91897C9BCEBFA
7CDBF67CD9F577D1ECC2A6A4FEF5EDFEF5EDFEF5EDFEF5EDFEF5EDFEF5EDFEF5
EDFEF5EDFEF5EDFEF5EDFEF5EDE5E7E66FBAD735A4D07CC4E08BCBE4A6D8E9C4
E4F0C4E4F0D2EBF3F9FCFDF9FCFDF9FCFDF3FCFCF3FCFC1897C91897C9C0EEFA
82DFF782DFF77DD6ECC2A6A4FEF4EAFEF4EAFEF4EAFEF4EAFEF4EAFEF4EAFEF4
EAFEF4EAFEF4EAFEF4EAFEF4EAFEF4EAFEF4EAF0EEE897A2AD3796B743ABCE4B
B9DE4EBEE21897C91897C91897C91897C91897C91897C91897C91897C9C3F1F9
87E4F786E3F682DBEDC2A6A4FFF2E7FFF2E7FFF2E7FFF2E7FFF2E7FFF2E7FFF2
E7FFF2E7FFF2E7FFF2E7FFF2E7FFF2E7FFF2E7FFF2E7C2A6A487E4F787E4F782
DBED86E3F61897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C9C5F3FB
8DE9F88CE8F78AE3EEC2A6A4FFF1E4FFF1E4FFF1E4FFF1E4FFF1E4FFF1E4FFF1
E4FFF1E4FFF1E4FFF1E4FFF1E4FFF1E4FFF1E4FFF1E4C2A6A48DE9F88DE9F88A
E3EE8DE9F81897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C9CEF6FB
92EEF892EEF88AE3EEC2A6A4FFEFE1FFEFE1FFEFE1FFEFE1FFEFE1FFEFE1FFEF
E1FFEFE1FFEFE1FFEEDEFAEADDF5E6D9F5E6D9F5E6D9C2A6A492EEF892EEF88A
E3EE92EEF81897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C9BBE4F3
9DF3F995F1F992E9EFC2A6A4FFEEDEFFEEDEFFEEDEFFEEDEFFEEDEFFEEDEFFEE
DEFFEEDEFBEADBE7DBD0DDCDC1D7C4BACBBBB1CBBBB1C8B1ACA0F0F99BF1FA91
E8F191EEFA1897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C943AAD3
D5F9FA95F1F992E9EFC2A6A4FFECDBFFECDBFFECDBFFECDBFFECDBFFECDBFFEC
DBFFECDBFAE8D7D7C4BABDAFA3AB9E949F938AB6A99FCBBBB165BFE067C3E35A
BCDD4BB9DE1897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF1897C9
7CC4E0AFF4FA92E9EFC2A6A4FFEBD9FFEBD9FFEBD9FFEBD9FFEBD9FFEBD9FFEB
D9FFEBD9FFEBD9F8F1EAE5E7E6E7DBD0F6ECE3C8B1ACA89EA22098C71897C918
96C81897C9FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
1897C97CC3DF86C2DAC2A6A4FFEAD6FFEAD6FFEAD6FFEAD6FFEAD6FFEAD6FFEA
D6FFEAD6FFEAD6FFF2E7FEFDFDFEF6EFD2B9B4C2A6A4FF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF1896C81792C3C2A6A4FFE8D3FFE8D3FFE8D3FFE8D3FFE8D3FFE8D3FFE8
D3FFE8D3FFE8D3E7DBD0FEF7F0D2B9B4C2A6A4FF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFC2A6A4FFE7D0FFE7D0FFE7D0FFE7D0FFE7D0FFE7D0FFE7
D0FFE7D0FFE7D0E7DBD0D7C4BAC2A6A4FF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFC2A6A4FFE6CFFFE6CFFFE6CFFFE6CFFFE6CFFFE6CFFFE6
CFFFE6CFFBE2CBD7C4BAC3A7A5FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFC2A6A4C2A6A4C2A6A4C2A6A4C2A6A4C2A6A4C2A6A4C2A6
A4C2A6A4C2A6A4C3A7A5FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
}
OnClick = btnSendExternalEditorClick
end
object btnGetExternalEditor: TSpeedButton
Left = 556
Height = 40
Top = 19
Width = 53
Flat = True
Glyph.Data = {
F6060000424DF606000000000000360000002800000018000000180000000100
180000000000C0060000120B0000120B00000000000000000000FF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFA23F08A23F08FF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFA23F08A2
3F08A23F08A23F08FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFA23F08A23F08AA4707BA5604A23F08A23F08FF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFA23F08A23F08AA4707C96501C46002A54208A23F08FF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFA23F08A23F08AA4707C96501C76202A54208A23F08
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFA23F08A23F08A54208C76202C96501AA
4707A23F08FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFA23F08A23F08A23F08C25E
04CC6701AD4906A23F08FF00FFFF00FFFF00FFA23F08A23F08A23F08A23F08A2
3F08A23F08A23F08A23F08A23F08A23F08A23F08A23F08A23F08FF00FFA23F08
A23F08BE5D0FD3720CB24F06A23F08FF00FFFF00FFFF00FFA23F08A74407AD49
06AD4906AD4906AD4906AD4906AD4906AD4906AD4906AD4906AD4906A74407A2
3F08A23F08A23F08AB490DE28822BF5F11A23F08FF00FFFF00FFFF00FFFF00FF
A23F08C25D03CC6701CC6701CC6701CC6701CC6701CC6701CC6701CC6701CC67
01CC6701B75305A23F08A23F08A23F08D27926E08829BF5F11A23F08FF00FFFF
00FFFF00FFFF00FFA23F08A74407AD4906AD4906AD4906AD4906AD4906AD4906
C96501CC6701CC6701CC6701B75305A23F08A23F08AD4D11F7A844CA7022A23F
08FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFA23F08A23F08A23F08A23F08A2
3F08A23F08B75305CC6701C76202BC5804CC6701B75305A23F08A23F08BE621D
FCB04CB85B18A23F08FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFA23F08A23F08AA4707CC6701C96501AA4707B75305CC6701B75305A2
3F08A23F08CF782AFCB04CB95B19A23F08FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFA23F08A23F08AA4707C96501CC6701B24E05A23F08B753
05CC6701B75305A23F08A23F08CF782AFCB04CB95B19A23F08FF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFA23F08A23F08AA4707C96501CC6701B24E05
A23F08A23F08B75305CC6701B75305A23F08A23F08BE621DFCB04CC97026A846
0CA23F08FF00FFFF00FFFF00FFFF00FFFF00FFA23F08A23F08AD4906C96501CC
6701B24E05A23F08A23F08A23F08B75305CC6701B75305A23F08A23F08A8460C
F6A948F6A948A8460CA23F08FF00FFFF00FFFF00FFFF00FFA23F08A23F08BA59
0ED16F09CD6802B24E05A23F08A23F08FF00FFA23F08B75305CC6701B75305A2
3F08FF00FFA23F08CF782AFCB04CEB9B3FA8460CA23F08A23F08A23F08A23F08
A7450BCD711EE08520D57714AE4B08A23F08A23F08FF00FFFF00FFA23F08B753
05CC6701B75305A23F08FF00FFA23F08A23F08D57F2EFCB04CF1A244C97026B9
5B19C46922D47E2EF09E3DEE9A36D17620A6430AA23F08A23F08FF00FFFF00FF
FF00FFA23F08B75305CC6701B75305A23F08FF00FFFF00FFA23F08A23F08B95B
19DA8633F6A948FCB04CFCB04CFCB04CDF8B35B75816A23F08A23F08A23F08FF
00FFFF00FFFF00FFFF00FFA23F08B75305CC6701B75305A23F08FF00FFFF00FF
FF00FFA23F08A23F08B95B19B95B19B95B19B95B19B95B19B95B19A23F08A23F
08FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFA23F08A54208B45105A54208A2
3F08FF00FFFF00FFFF00FFFF00FFFF00FFA23F08A23F08A23F08A23F08A23F08
A23F08FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFA23F
08A23F08A23F08FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
}
Visible = False
OnClick = btnGetExternalEditorClick
end
object btnCancel: TSpeedButton
Left = 616
Height = 40
Top = 19
Width = 53
Flat = True
Glyph.Data = {
DE020000424DDE020000000000009E0000002800000018000000180000000100
08000000000040020000120B0000120B00001A00000000000000021DD400021D
D900011EE100011FEA00011FF100011FFA00112BD600112BD900102CE100102D
EC00102DFA00203AE9003147DF003048E7003048E9003049F1003049F9004155
DE005163E1006172EA006073F6006073FA007180EB007F8EFC00FF00FF00808E
ED00181818181818181818181818181818181818181818181818181818181818
1818181818181818181818181818180700181818181818181818181818181818
1818181818180100071818120000181818181818181818181818181818010107
1818181100000018181818181818181818181816010107181818181800000000
1818181818181818181813010207181818181818180600010118181818181818
18130202071818181818181818180C0101011818181818180D02020818181818
1818181818181812010202181818180E02020818181818181818181818181818
1902020218180E02020818181818181818181818181818181818080302030302
091818181818181818181818181818181818180B030303091818181818181818
1818181818181818181818090303030F18181818181818181818181818181818
18180303030303040F181818181818181818181818181818180403030E181804
041018181818181818181818181818140404030F181818180A04101818181818
181818181818140404040F181818181818100510181818181818181818150404
040F181818181818181815051018181818181818100405040F18181818181818
18181817050A1818181818100504040F181818181818181818181818180A1518
1818180504051018181818181818181818181818181818181818181005101818
1818181818181818181818181818181818181818181818181818181818181818
1818181818181818181818181818181818181818181818181818181818181818
1818
}
Visible = False
OnClick = btnCancelClick
end
object edtName: TEdit
Left = 78
Height = 21
Top = 15
Width = 403
TabOrder = 0
end
object edtDescription: TEdit
Left = 78
Height = 21
Top = 46
Width = 403
TabOrder = 1
end
end
object pnlExplorer: TPanel
Left = 1
Height = 318
Top = 81
Width = 692
Align = alClient
BevelInner = bvLowered
ClientHeight = 318
ClientWidth = 692
TabOrder = 1
inline memXsd: TSynEdit
Left = 2
Height = 314
Top = 2
Width = 688
Align = alClient
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
end
end
end
object tbsTriggers: TTabSheet
Caption = 'Triggers'
ClientHeight = 0
ClientWidth = 0
ImageIndex = 1
object trvStates: TTreeView
Left = 0
Height = 361
Top = 35
Width = 694
Align = alClient
DragKind = dkDock
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Indent = 19
ParentFont = False
PopupMenu = ppmTriggers
ReadOnly = True
RowSelect = True
TabOrder = 0
OnCustomDrawItem = trvStatesCustomDrawItem
OnDragDrop = trvStatesDragDrop
OnDragOver = trvStatesDragOver
Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoRowSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
end
object Panel7: TPanel
Left = 0
Height = 35
Top = 0
Width = 694
Align = alTop
BevelInner = bvLowered
ClientHeight = 35
ClientWidth = 694
TabOrder = 1
object btnClearAllMappings: TSpeedButton
Left = 8
Height = 22
Top = 7
Width = 81
Caption = 'Clear all'
OnClick = btnClearAllMappingsClick
end
end
end
end
end
end
end
object Panel4: TPanel
Left = 0
Height = 51
Top = 495
Width = 997
Align = alBottom
ClientHeight = 51
ClientWidth = 997
TabOrder = 2
object btnSaveClose: TBitBtn
Left = 731
Height = 35
Top = 6
Width = 114
Anchors = [akTop]
Caption = 'Save and Close'
Glyph.Data = {
DE010000424DDE01000000000000760000002800000024000000120000000100
0400000000006801000000000000000000001000000000000000000000000000
80000080000000808000800000008000800080800000C0C0C000808080000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
3333333333333333333333330000333333333333333333333333F33333333333
00003333344333333333333333388F3333333333000033334224333333333333
338338F3333333330000333422224333333333333833338F3333333300003342
222224333333333383333338F3333333000034222A22224333333338F338F333
8F33333300003222A3A2224333333338F3838F338F33333300003A2A333A2224
33333338F83338F338F33333000033A33333A222433333338333338F338F3333
0000333333333A222433333333333338F338F33300003333333333A222433333
333333338F338F33000033333333333A222433333333333338F338F300003333
33333333A222433333333333338F338F00003333333333333A22433333333333
3338F38F000033333333333333A223333333333333338F830000333333333333
333A333333333333333338330000333333333333333333333333333333333333
0000
}
ModalResult = 1
NumGlyphs = 2
OnClick = btnSaveCloseClick
TabOrder = 0
end
object btnCancelClose: TBitBtn
Left = 886
Height = 35
Top = 6
Width = 75
Anchors = [akTop]
Kind = bkCancel
TabOrder = 1
end
end
object alMain: TActionList
Left = 664
Top = 8
object actNewXSD: TAction
Caption = 'New XSD'
OnExecute = actNewXSDExecute
end
object actDeleteXSD: TAction
Caption = 'Delete XSD'
OnExecute = actDeleteXSDExecute
end
object actSaveAs: TAction
Caption = 'Save as...'
end
object actSave: TAction
Caption = 'Save File'
OnExecute = actSaveExecute
end
object actLoad: TAction
Caption = 'Load File'
OnExecute = actLoadExecute
end
object actUndo: TAction
Caption = 'actUndo'
OnExecute = actUndoExecute
end
object actGenUnit: TAction
Caption = 'Save .pas'
end
end
object imgOQLState: TImageList
Left = 760
Top = 8
Bitmap = {
4C69020000001000000010000000000000000000000000000000000000000000
00001DA435FF139923FF139923FF139923FF139923FF138C2AFF000000000000
0000000000000000000000000000000000000000000000000000139923FF1399
23FF98E1B5FFBDEED4FFA7E7C4FF90E0B1FF78D99FFF49C779FF1B9D3DFF1B9D
3DFF0000000000000000000000000000000000000000139923FF6ACC88FFD0F4
E3FF9AE1B6FF50C77AFF38BD67FF2CBA5DFF30BB60FF2FBC5DFF23BC4FFF11A3
30FF06620FFF000000000000000000000000139923FF56C573FFC5F0D8FF66CF
8CFF20B452FF23B554FFAAE6C0FF96DEB1FF19B148FF13AC3CFF12AA34FF0FB0
2DFF0A991FFF036B0AFF0000000000000000139923FFAAE7C5FF68D08EFF16AF
48FF1BB14CFF39BF68FFF4FCF7FFFFFFFFFF84D99EFF11AA32FF0EA729FF0BA4
20FF09AF1CFF036B0AFF0000000006780EFF4CBD69FF83DDA7FF22B655FF1CB2
4EFF22B554FF22B554FF55CA7FFFE1F6E9FFFFFFFFFF88D99DFF10AB2FFF0CA6
27FF06A716FF038C0AFF014603FF06780EFF54C57AFF44C674FF52C77DFF57CA
81FF56CA80FF57CA81FF49C573FF79D592FFFAFEFAFFFFFFFFFF97DDA5FF1AAD
33FF07A518FF039D0CFF014603FF087412FF3EBD69FF2ABA5CFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFEFCFFFFFFFFFFFFFFFFFFAAE3
B0FF03A00CFF039F0CFF025205FF06680DFF21B151FF1EB751FFBFEDCFFFBAEA
C6FFB7E9C2FFB8EAC5FFB5E9C2FFB7E9C1FFF6FCF7FFFFFFFFFFEEFAEFFF54C5
5EFF03A00CFF039F0CFF014A04FF035706FF17A341FF18B54AFF11AB34FF06A0
11FF039E0CFF049F0DFF039E0CFF74D07DFFFCFEFCFFF3FBF4FF3EBC48FF039E
0CFF03A10CFF03960AFF014203FF035706FF0D8223FF17B641FF0EA92DFF05A0
13FF049F0DFF07A011FF82D589FFFFFFFFFFF4FCF6FF40BC4AFF039E0CFF039E
0CFF03A50CFF037B08FF014203FF00000000044F09FF10AC30FF0DAB28FF09A4
1CFF039E0FFF16AA20FFD5F2D8FFE9F8EAFF48C052FF039E0CFF039E0CFF039F
0CFF03A70CFF024C04FF0000000000000000044F09FF066B11FF0AAB1FFF07A4
15FF049E0DFF029D0AFF039D0AFF039E0CFF039E0CFF039E0CFF03A00CFF03A7
0CFF026A06FF024C04FF000000000000000000000000034F09FF036509FF04A3
0DFF03A60CFF03A00BFF029E0AFF039F0CFF03A00CFF03A50CFF03A60CFF0269
06FF013402FF0000000000000000000000000000000000000000014503FF0145
03FF037808FF039C0BFF039F0CFF039F0CFF039D0CFF027E09FF014D04FF014D
04FF000000000000000000000000000000000000000000000000000000000000
0000013002FF014103FF025104FF025104FF014303FF013302FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000030FFFF0030FFFF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000030FFFF0030FFFF0030FFFF000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000030FFFF0030FFFF0030FFFF0000
0000000000000000000000000000000000000000000000000000000000000000
00000030FFFF000000000000000000000000000000000030FFFF0030FFFF0030
FFFF0000000000000000000000000000000000000000000000000030FFFF0030
FFFF0000000000000000000000000000000000000000000000000030FFFF0030
EFFF0030FFFF000000000000000000000000000000000030FFFF0030FFFF0000
0000000000000000000000000000000000000000000000000000000000000030
F7FF0030EFFF0030EFFF00000000000000000030F7FF0030FFFF000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000030DEFF0030EFFF0030EFFF0030EFFF0030F7FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000030E7FF0030E7FF0030EFFF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000030DEFF0030E7FF0030E7FF0030EFFF0030DEFF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000030
DEFF0030DEFF0030DEFF000000000030DEFF0030DEFF0030DEFF000000000000
000000000000000000000000000000000000000000000030EFFF0030DEFF0030
DEFF0030DEFF000000000000000000000000000000000030DEFF0030DEFF0000
0000000000000000000000000000000000000030DEFF0030DEFF0030DEFF0030
DEFF0000000000000000000000000000000000000000000000000030DEFF0030
DEFF000000000000000000000000000000000030DEFF0030DEFF0030DEFF0000
0000000000000000000000000000000000000000000000000000000000000030
DEFF0030DEFF0000000000000000000000000030DEFF0030DEFF000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000030DEFF0030DEFF00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000030DEFF0030DEFF
}
end
object ppmTriggers: TPopupMenu
OnPopup = ppmTriggersPopup
Left = 528
Top = 8
object miClear: TMenuItem
Caption = 'Clear'
OnClick = miClearClick
end
end
end
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TXSDExplorer','FORMDATA',[
'TPF0'#12'TXSDExplorer'#11'XSDExplorer'#4'Left'#2#0#6'Height'#3'"'#2#3'Top'#2
+#0#5'Width'#3#229#3#12'ClientHeight'#3'"'#2#11'ClientWidth'#3#229#3#5'Color'
+#7#9'clBtnFace'#10'Font.Color'#7#12'clWindowText'#11'Font.Height'#2#245#9'Fo'
+'nt.Name'#6#6'Tahoma'#8'OnCreate'#7#10'FormCreate'#6'OnShow'#7#8'FormShow'#10
+'LCLVersion'#6#7'2.1.0.0'#11'WindowState'#7#11'wsMaximized'#0#6'TPanel'#6'Pa'
+'nel1'#4'Left'#2#0#6'Height'#2')'#3'Top'#2#0#5'Width'#3#229#3#5'Align'#7#5'a'
+'lTop'#10'BevelInner'#7#9'bvLowered'#12'ClientHeight'#2')'#11'ClientWidth'#3
+#229#3#8'TabOrder'#2#0#0#12'TSpeedButton'#12'btnDeleteXSD'#4'Left'#3#202#0#6
+'Height'#2'!'#3'Top'#2#4#5'Width'#2'Z'#6'Action'#7#12'actDeleteXSD'#10'Glyph'
+'.Data'#10#226#2#0#0#222#2#0#0'BM'#222#2#0#0#0#0#0#0#158#0#0#0'('#0#0#0#24#0
+#0#0#24#0#0#0#1#0#8#0#0#0#0#0'@'#2#0#0#18#11#0#0#18#11#0#0#26#0#0#0#0#0#0#0#2
+#29#212#0#2#29#217#0#1#30#225#0#1#31#234#0#1#31#241#0#1#31#250#0#17'+'#214#0
+#17'+'#217#0#16','#225#0#16'-'#236#0#16'-'#250#0' :'#233#0'1G'#223#0'0H'#231
+#0'0H'#233#0'0I'#241#0'0I'#249#0'AU'#222#0'Qc'#225#0'ar'#234#0'`s'#246#0'`s'
+#250#0'q'#128#235#0#127#142#252#0#255#0#255#0#128#142#237#0#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#7#0#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#1#0#7#24#24#18#0#0#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#1#1#7#24#24#24#17#0#0#0#24#24#24#24#24#24#24#24#24#24
+#24#24#22#1#1#7#24#24#24#24#24#0#0#0#0#24#24#24#24#24#24#24#24#24#24#19#1#2#7
+#24#24#24#24#24#24#24#6#0#1#1#24#24#24#24#24#24#24#24#19#2#2#7#24#24#24#24#24
+#24#24#24#24#12#1#1#1#24#24#24#24#24#24#13#2#2#8#24#24#24#24#24#24#24#24#24
+#24#24#18#1#2#2#24#24#24#24#14#2#2#8#24#24#24#24#24#24#24#24#24#24#24#24#24
+#25#2#2#2#24#24#14#2#2#8#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#8#3
+#2#3#3#2#9#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#11#3#3#3#9
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#9#3#3#3#15#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#3#3#3#3#3#4#15#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#4#3#3#14#24#24#4#4#16#24#24#24#24#24#24#24
+#24#24#24#24#24#24#20#4#4#3#15#24#24#24#24#10#4#16#24#24#24#24#24#24#24#24#24
+#24#24#20#4#4#4#15#24#24#24#24#24#24#16#5#16#24#24#24#24#24#24#24#24#24#21#4
+#4#4#15#24#24#24#24#24#24#24#24#21#5#16#24#24#24#24#24#24#24#16#4#5#4#15#24
+#24#24#24#24#24#24#24#24#24#23#5#10#24#24#24#24#24#16#5#4#4#15#24#24#24#24#24
+#24#24#24#24#24#24#24#24#10#21#24#24#24#24#5#4#5#16#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#16#5#16#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#0#0#12'TSpeedButton'#9'btnNewXSD'#4'Left'#2'h'#6'Heigh'
+'t'#2'!'#3'Top'#2#4#5'Width'#2'Z'#6'Action'#7#9'actNewXSD'#10'Glyph.Data'#10
+'z'#6#0#0'v'#6#0#0'BMv'#6#0#0#0#0#0#0'6'#4#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0
+#8#0#0#0#0#0'@'#2#0#0#0#0#0#0#0#0#0#0#0#1#0#0#0#1#0#0#254#0#254#0#254#0#254#0
+#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254
+#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0
+#254#0#254#0#254#0#254#0#254#0#254#0#254#0#253#0#253#0#251#0#251#0#246#0#246
+#0#238#1#238#0#225#2#225#0#207#4#207#0#186#7#186#0#158#10#158#0'w'#15'w'#0'O'
+#20'O'#0'7'#24'7'#0'*'#27'*'#0#30#30#30#0#31#31#31#0' '#0'!!!'#0'"""'#0'##'
+'#'#0'$$$'#0'%%%'#0'&&&'#0''''''''#0'((('#0')))'#0'***'#0'+++'#0',,,'#0'---'
+#0'...'#0'///'#0'000'#0'111'#0'222'#0'333'#0'444'#0'555'#0'666'#0'777'#0'888'
+#0'999'#0':::'#0';;;'#0'<<<'#0'==='#0'>>>'#0'???'#0'@@@'#0'AAA'#0'BBB'#0'CCC'
+#0'DDD'#0'EEE'#0'FFF'#0'GGG'#0'HHH'#0'III'#0'JJJ'#0'KKK'#0'LLL'#0'MMM'#0'NNN'
+#0'OOO'#0'PPP'#0'QQQ'#0'RRR'#0'SSS'#0'TTT'#0'UUU'#0'VVV'#0'WWW'#0'XXX'#0'YYY'
+#0'ZZZ'#0'[[['#0'\\\'#0']]]'#0'^^^'#0'___'#0'```'#0'aaa'#0'bbb'#0'ccc'#0'ddd'
+#0'eee'#0'fff'#0'mh`'#0#129'mP'#0#149's>'#0#170'x*'#0#187'|'#26#0#197'~'#16#0
+#205#128#8#0#209#129#4#0#211#129#2#0#212#129#1#0#213#129#0#0#213#129#0#0#213
+#129#0#0#213#129#0#0#213#129#0#0#213#129#0#0#213#129#0#0#213#129#0#0#213#129
+#0#0#213#129#0#0#213#129#0#0#213#129#0#0#213#129#0#0#213#129#0#0#213#129#0#0
+#213#129#0#0#213#129#0#0#213#130#0#0#213#130#0#0#213#130#0#0#213#130#0#0#213
+#130#0#0#213#130#0#0#213#130#0#0#213#130#0#0#213#130#0#0#213#130#0#0#213#130
+#0#0#213#130#0#0#213#130#0#0#213#130#0#0#213#130#0#0#213#130#0#0#213#130#0#0
+#213#130#0#0#213#130#1#0#212#130#3#0#211#130#6#0#208#131#12#0#204#133#23#0
+#198#135'%'#0#190#139'='#0#179#144'['#0#169#150'x'#0#160#155#147#0#158#158
+#158#0#159#159#159#0#160#160#160#0#161#161#161#0#167#165#162#0#179#172#164#0
+#188#178#166#0#201#185#168#0#215#194#170#0#229#202#172#0#241#209#172#0#247
+#212#173#0#251#214#173#0#252#215#172#0#253#215#173#0#253#216#173#0#253#216
+#173#0#253#216#173#0#253#216#174#0#253#217#175#0#253#217#176#0#254#218#178#0
,#254#219#179#0#254#219#180#0#254#219#181#0#254#220#182#0#254#220#183#0#254
+#221#184#0#254#222#186#0#254#222#187#0#254#223#188#0#254#223#189#0#254#224
+#190#0#254#225#192#0#254#225#193#0#254#226#194#0#254#226#195#0#254#226#195#0
+#254#227#197#0#254#227#198#0#254#228#199#0#254#228#200#0#254#229#201#0#254
+#230#203#0#254#230#204#0#254#231#205#0#254#232#206#0#254#232#208#0#254#233
+#209#0#254#234#210#0#254#234#211#0#254#234#212#0#254#235#214#0#254#236#216#0
+#254#237#217#0#254#237#218#0#254#238#220#0#254#239#221#0#254#240#223#0#254
+#240#225#0#254#241#227#0#254#242#229#0#254#243#230#0#254#244#232#0#254#245
+#234#0#254#245#236#0#254#246#237#0#254#246#238#0#254#247#239#0#254#248#241#0
+#254#249#243#0#254#250#245#0#254#251#247#0#254#252#249#0#254#252#250#0#254
+#252#250#0#254#252#250#0#253#252#249#0#252#251#247#0#247#249#243#0#234#244
+#231#0#205#233#202#0#130#204#129#0'<'#177'<'#0#13#158#12#0#2#154#2#0#0#153#0
+#0#0#153#0#0#0#153#0#0#0#153#0#0#0#153#0#0#0#153#0#0#0#153#0#0#0#153#0#0#0
+#153#0#0#0#153#0#0#0#153#0#0#0#152#0#0#10#10#10#10#10#10#10#10#10#10#10#10#10
+#10#10#10#10#10#10#10#10#10#10#10#10#10#140#140#140#140#140#140#140#140#140
+#140#140#140#140#140#140#140#140#140#140#140#10#10#10#140#207#204#203#200#196
+#194#191#190#186#185#183#180#179#177#175#175#172#172#172#172#140#10#10#140
+#210#207#249#249#249#249#249#249#249#249#249#249#249#249#249#249#249#249#172
+#172#140#10#10#140#211#210#249#249#249#249#249#249#249#249#249#249#249#249
+#249#249#249#249#172#172#140#10#10#140#214#211#210#208#205#203#200#198#195
+#191#189#188#185#183#181#179#178#176#175#172#140#10#10#140#216#214#249#249
+#249#249#249#249#249#249#249#249#249#249#249#249#249#249#176#175#140#10#10
+#140#218#216#249#249#249#249#249#249#249#249#249#249#249#249#249#249#249#249
+#179#177#140#10#10#140#220#218#216#215#212#210#208#205#203#201#198#196#192
+#190#188#186#184#182#179#179#140#10#10#140#221#220#249#249#249#249#249#249
+#249#249#249#249#249#249#249#249#249#249#182#179#140#10#10#140#223#221#249
+#249#249#249#249#249#249#249#249#249#249#249#249#249#249#249#184#183#140#10
+#10#140#224#224#221#219#218#216#215#213#210#208#206#204#200#198#196#193#190
+#188#186#185#140#10#10#140#227#226#249#249#249#249#249#249#249#249#249#249
+#249#249#249#249#249#249#188#186#140#10#10#140#228#227#249#249#249#249#249
+#249#249#249#249#249#249#249#249#249#249#249#191#189#140#10#10#140#229#228
+#227#226#224#221#220#218#216#214#213#211#209#206#204#201#200#196#193#191#140
+#10#10#140#230#229#249#249#249#249#249#249#249#249#249#249#249#249#249#249
+#249#249#196#193#140#10#10#140#232#231#249#249#249#249#249#249#249#249#249
+#249#249#249#249#249#249#249#200#197#140#10#10#140#234#232#231#230#228#227
+#226#224#221#220#218#217#215#214#211#209#206#204#201#200#140#10#10#140#234
+#234#249#249#249#249#249#249#249#249#249#249#249#249#249#249#249#249#205#202
+#140#10#10#140#234#234#249#249#249#249#249#249#249#249#249#249#249#249#249
+#249#249#249#207#205#140#10#10#140#234#234#234#234#232#231#230#229#228#227
+#224#222#221#219#217#216#214#212#210#207#140#10#10#140#234#234#234#234#234
+#234#231#230#229#228#226#224#222#221#219#217#215#214#212#210#140#10#10#10#140
+#140#140#140#140#140#140#140#140#140#140#140#140#140#140#140#140#140#140#140
+#10#10#10#10#10#10#10#10#10#10#10#10#10#10#10#10#10#10#10#10#10#10#10#10#10
+#10#0#0#12'TSpeedButton'#7'btnSave'#4'Left'#2#6#6'Height'#2'!'#3'Top'#2#4#5
+'Width'#2'Z'#6'Action'#7#7'actSave'#10'Glyph.Data'#10#250#6#0#0#246#6#0#0'BM'
+#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0#192#6
+#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0
+'f'#0#0'f'#0#0'f'#0#0'f'#0#164#148#140#164#148#140#164#148#140#164#148#140
+#164#148#140#164#148#140#164#148#140#164#148#140#164#148#140#164#148#140#164
+#148#140#0'f'#0#0'f'#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255
+#0'f'#0#0#153#0#0#153#0#0#153#0#0#153#0'vvW'#233#226#226#213#204#204#209#192
+#191#233#218#216#246#240#237#246#241#239#235#230#230#227#231#230#227#231#230
+'r'#144'L@m'#8'@y'#13#0#153#0#0#153#0#0'f'#0#255#0#255#255#0#255#255#0#255#0
+'f'#0#0#153#0#0#153#0#0#153#0#0#153#0'N}('#233#226#226#0'f'#0#0'f'#0#10#153
+#10#247#237#234#255#255#253#251#248#245#243#248#246#243#248#246'r'#144'LAi'#8
+'@y'#13#0#153#0#0#153#0#0'f'#0#255#0#255#255#0#255#255#0#255#0'f'#0#0#153#0#0
+#153#0#0#153#0#0#153#0'R|-'#233#226#226#0'f'#0#0'f'#0#10#153#10#234#223#221
+#251#250#247#254#250#247#253#255#252#253#255#255'r'#144'LAi'#8'@y'#13#0#153#0
+#0#153#0#0'f'#0#255#0#255#255#0#255#255#0#255#0'f'#0#0#153#0#0#153#0#0#153#0
+#0#153#0'Q},'#233#226#226#0'f'#0#0'f'#0#10#153#10#218#206#205#240#239#237#251
+#247#245#255#255#255#253#255#255'r'#144'LAi'#8'@y'#13#0#153#0#0#153#0#0'f'#0
,#255#0#255#255#0#255#255#0#255#0'f'#0#0#153#0#0#153#0#0#153#0#0#153#0'Q'#128
+'-'#233#226#226#0'f'#0#0'f'#0#10#153#10#193#180#179#222#222#220#242#237#234
+#255#255#255#253#255#255'r'#144'LBf'#8'@z'#12#0#153#0#0#153#0#0'f'#0#255#0
+#255#255#0#255#255#0#255#0'f'#0#0#153#0#0#153#0#0#153#0#0#153#0'S'#130'.'#233
+#226#226#0'f'#0#0'f'#0#10#153#10#163#155#154#186#192#191#221#222#219#253#255
+#255#253#255#255'r'#144'LB_'#9'?w'#11#0#153#0#0#153#0#0'f'#0#255#0#255#255#0
+#255#255#0#255#0'f'#0#0#153#0#0#153#0#0#153#0#0#153#0'N'#140'%'#233#226#226
+#233#226#226#233#226#226#233#226#226#233#226#226#233#226#226#233#226#226#233
+#226#226#233#226#226'r'#144'LAy'#9'@'#131#15#0#153#0#0#153#0#0'f'#0#255#0#255
+#255#0#255#255#0#255#0'f'#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0
+#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153
+#0#0#153#0#0#153#0#0#153#0#0'f'#0#255#0#255#255#0#255#255#0#255#0'f'#0#0#153
+#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0
+#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0'f'#0
+#255#0#255#255#0#255#255#0#255#0'f'#0#0#153#0#0#153#0#177#208#177#177#208#177
+#177#208#177#177#208#177#177#208#177#177#208#177#177#208#177#177#208#177#177
+#208#177#177#208#177#177#208#177#177#208#177#177#208#177#177#208#177#177#208
+#177#0#153#0#0#153#0#0'f'#0#255#0#255#255#0#255#255#0#255#0'f'#0#0#153#0#0
+#153#0#177#208#177#254#253#253#254#253#253#255#254#254#255#254#254#255#254
+#254#255#254#254#255#254#254#255#254#254#255#254#254#255#254#254#255#254#254
+#254#253#253#253#252#252#177#208#177#0#153#0#0#153#0#0'f'#0#255#0#255#255#0
+#255#255#0#255#0'f'#0#0#153#0#0#153#0#177#208#177#254#254#254#254#254#254#254
+#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254
+#254#254#254#254#254#254#254#254#254#254#254#254#254#177#208#177#0#153#0#0
+#153#0#0'f'#0#255#0#255#255#0#255#255#0#255#0'f'#0#0#153#0#0#153#0#177#208
+#177#254#254#254#254#254#254#205#205#205#205#205#205#205#205#205#205#205#205
+#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#254#254#254#254
+#254#254#177#208#177#0#153#0#0#153#0#0'f'#0#255#0#255#255#0#255#255#0#255#0
+'f'#0#0#153#0#0#153#0#177#208#177#254#254#254#254#254#254#254#254#254#254#254
+#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254
+#254#254#254#254#254#254#254#254#254#177#208#177#0#153#0#0#153#0#0'f'#0#255#0
+#255#255#0#255#255#0#255#0'f'#0#0#153#0#0#153#0#177#208#177#254#254#254#254
+#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254
+#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#177#208#177
+#0#153#0#0#153#0#0'f'#0#255#0#255#255#0#255#255#0#255#0'f'#0#0#153#0#0#153#0
+#177#208#177#254#254#254#254#254#254#205#205#205#205#205#205#205#205#205#205
+#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#254#254
+#254#254#254#254#177#208#177#0#153#0#0#153#0#0'f'#0#255#0#255#255#0#255#255#0
+#255#0'f'#0#0#153#0#0#153#0#177#208#177#254#254#254#254#254#254#254#254#254
+#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254
+#254#254#254#254#254#254#254#254#254#254#254#177#208#177#0#153#0#0#153#0#0'f'
+#0#255#0#255#255#0#255#255#0#255#0'f'#0#0#153#0#0#153#0#177#208#177#254#254
+#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254
+#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#177
+#208#177#0#153#0#0#153#0#0'f'#0#255#0#255#255#0#255#255#0#255#0'f'#0#0#153#0
+#0#153#0#177#208#177#254#254#254#254#254#254#205#205#205#205#205#205#205#205
+#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205#205
+#254#254#254#254#254#254#177#208#177#0#153#0#0#153#0#0'f'#0#255#0#255#255#0
+#255#255#0#255#0'f'#0#0#153#0#0#153#0#177#208#177#254#254#254#254#254#254#254
+#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254
+#254#254#254#254#254#254#254#254#254#254#254#254#254#177#208#177#0#153#0#0
+#153#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0'f'#0#177#208
+#177#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254
+#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254#254
+#254#254#177#208#177#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#0#0#0#12'TPageControl'#12'PageControl1'#4'Left'#2#0#6'Height'#3#198#1#3
+'Top'#2')'#5'Width'#3#229#3#10'ActivePage'#7#5'tsXSD'#5'Align'#7#8'alClient'
+#8'TabIndex'#2#0#8'TabOrder'#2#1#0#9'TTabSheet'#5'tsXSD'#7'Caption'#6#3'XSD'
+#12'ClientHeight'#3#172#1#11'ClientWidth'#3#221#3#0#9'TSplitter'#9'Splitter1'
+#4'Left'#3#25#1#6'Height'#3#172#1#3'Top'#2#0#5'Width'#2#4#0#0#6'TPanel'#6'Pa'
+'nel2'#4'Left'#2#0#6'Height'#3#172#1#3'Top'#2#0#5'Width'#3#25#1#5'Align'#7#6
,'alLeft'#12'ClientHeight'#3#172#1#11'ClientWidth'#3#25#1#8'TabOrder'#2#0#0#9
+'TListView'#7'ltvXSDs'#4'Left'#2#1#6'Height'#3#170#1#3'Top'#2#1#5'Width'#3#23
+#1#5'Align'#7#8'alClient'#7'Columns'#14#1#7'Caption'#6#8'XSD Name'#5'Width'#3
+'X'#2#0#1#7'Caption'#6#4'Erro'#5'Width'#2#0#0#1#7'Caption'#6#3'Qtd'#5'Width'
+#2#0#0#0#8'DragMode'#7#11'dmAutomatic'#13'HideSelection'#8#8'ReadOnly'#9#9'R'
+'owSelect'#9#11'SmallImages'#7#11'imgOQLState'#8'TabOrder'#2#0#9'ViewStyle'#7
+#8'vsReport'#8'OnChange'#7#13'ltvXSDsChange'#16'OnCustomDrawItem'#7#21'ltvXS'
+'DsCustomDrawItem'#10'OnDblClick'#7#15'ltvXSDsDblClick'#0#0#0#6'TPanel'#6'Pa'
+'nel3'#4'Left'#3#29#1#6'Height'#3#172#1#3'Top'#2#0#5'Width'#3#192#2#5'Align'
+#7#8'alClient'#12'ClientHeight'#3#172#1#11'ClientWidth'#3#192#2#8'TabOrder'#2
+#1#0#12'TPageControl'#6'pgcXSD'#4'Left'#2#1#6'Height'#3#170#1#3'Top'#2#1#5'W'
+'idth'#3#190#2#10'ActivePage'#7#9'TabSheet1'#5'Align'#7#8'alClient'#8'TabInd'
+'ex'#2#0#8'TabOrder'#2#0#8'OnChange'#7#12'pgcXSDChange'#0#9'TTabSheet'#9'Tab'
+'Sheet1'#7'Caption'#6#14'XSD Properties'#12'ClientHeight'#3#144#1#11'ClientW'
+'idth'#3#182#2#0#6'TPanel'#6'Panel5'#4'Left'#2#0#6'Height'#3#144#1#3'Top'#2#0
+#5'Width'#3#182#2#5'Align'#7#8'alClient'#12'ClientHeight'#3#144#1#11'ClientW'
+'idth'#3#182#2#8'TabOrder'#2#0#0#6'TPanel'#6'Panel6'#4'Left'#2#1#6'Height'#2
+'P'#3'Top'#2#1#5'Width'#3#180#2#5'Align'#7#5'alTop'#10'BevelInner'#7#9'bvLow'
+'ered'#12'ClientHeight'#2'P'#11'ClientWidth'#3#180#2#8'TabOrder'#2#0#0#6'TLa'
+'bel'#6'Label1'#4'Left'#2')'#6'Height'#2#13#3'Top'#2#18#5'Width'#2#31#7'Capt'
+'ion'#6#5'Name:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#15#6'He'
+'ight'#2#13#3'Top'#2'1'#5'Width'#2'9'#7'Caption'#6#12'Description:'#11'Paren'
+'tColor'#8#0#0#12'TSpeedButton'#21'btnSendExternalEditor'#4'Left'#3#241#1#6
+'Height'#2'('#3'Top'#2#19#5'Width'#2'5'#4'Flat'#9#10'Glyph.Data'#10':'#12#0#0
+'6'#12#0#0'BM6'#12#0#0#0#0#0#0'6'#0#0#0'('#0#0#0' '#0#0#0' '#0#0#0#1#0#24#0#0
+#0#0#0#0#12#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#255#0#255#24#151#201#24
+#151#201#24#151#201#24#151#201#24#151#201#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#24
+#151#201'5'#164#208#187#228#243'^'#195#234'N'#187#229'9'#173#218#24#151#201
+#24#151#201#24#151#201#24#151#201#24#151#201#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#10'x'#18#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#24#151#201#24#151#201#216#238#246'r'#212#248'r'
+#212#248'r'#212#248'r'#212#248'l'#207#244'f'#201#242'N'#187#229'>'#176#221#24
+#151#201#24#151#201#24#151#201#24#151#201#24#151#201#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#10'x'#18#10'x'#18#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#24#151#201'N'
+#190#226#153#208#230#167#228#249'r'#212#248'r'#212#248'r'#212#248'r'#212#248
+'r'#212#248'r'#212#248'r'#212#248'r'#212#248'l'#207#244'`'#199#238'N'#187#229
+'9'#173#218#24#151#201#24#151#201#24#151#201#24#151#201#24#151#201#255#0#255
+#10'x'#18#17#161#29#10'x'#18#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#24#151#201'W'#195#228'J'#175#214#209#240#251'r'#212
+#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248'r'#212
+#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248'r'#212#248'l'#207#244'`'#199
+#238'J'#183#227'9'#173#218#24#151#201#10'x'#18'T'#190'^'#17#161#29#10'x'#18
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#24#151#201'Q'
+#190#225'A'#180#220#210#235#243'{'#215#248'r'#212#248'r'#212#248'r'#212#248
+'r'#212#248'r'#212#248'r'#212#248'r'#212#248#10'x'#18#10'x'#18#10'x'#18#10'x'
+#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18'Z'#193'dZ'
+#193'd'#17#161#29#10'x'#18#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#24#151#201'Q'#190#225'W'#195#228'|'#196#224#167#228#249'u'#215#248'u'#215
+#248'u'#215#248'u'#215#248'u'#215#248'u'#215#248'u'#215#248#10'x'#18#140#233
+#171#190#240#205#190#238#202#186#235#197#186#235#197#177#232#189#162#226#175
+#145#219#158#130#213#143'p'#204'|p'#204'|_'#196'iI'#188'V'#17#161#29#10'x'#18
+#255#0#255#255#0#255#255#0#255#255#0#255#24#151#201'Q'#190#225'X'#192#226'B'
+#174#214#220#244#252'y'#218#248'y'#218#248'y'#218#248'y'#218#248'y'#218#248
+'y'#218#248'y'#218#248#10'x'#18#159#237#186#229#250#236#228#249#235#228#248
+#234#227#248#233#222#246#228#205#241#213#186#235#197#165#226#176#145#219#158
+'z'#211#137'd'#199'pI'#188'V8'#180'C'#17#161#29#10'x'#18#255#0#255#255#0#255
+#255#0#255#24#151#201'S'#191#227'X'#192#226'A'#180#220#210#235#243#140#224
+#248'|'#220#246'|'#219#246'|'#219#246'|'#219#246'|'#219#246'|'#219#246#10'x'
+#18#159#237#186#230#250#237#229#250#236#228#249#235#227#248#233#222#246#228
,#205#241#213#186#235#197#168#228#180#145#219#158#130#213#143'i'#203'wR'#192
+'_8'#180'C%'#173'2'#17#164#30#10'x'#18#255#0#255#255#0#255#24#151#201'S'#191
+#227'Z'#194#229'Z'#194#229'n'#189#221#181#235#248'}'#218#241'|'#216#239'{'
+#216#238'{'#216#238'{'#216#238'{'#216#238#10'x'#18#159#237#186#230#250#237
+#230#250#237#229#250#236#228#249#235#224#247#231#210#244#219#190#238#202#171
+#230#184#152#227#170#130#213#143'n'#206'}W'#196'g@'#186'O%'#173'2'#17#161#29
+#10'x'#18#255#0#255#255#0#255#24#151#201'U'#192#229'\'#193#230'\'#193#230'9'
+#171#212#229#246#250'}'#214#236'z'#209#229'y'#208#227'y'#208#227'y'#208#227
+'y'#208#227#10'x'#18#159#237#186#230#250#237#230#250#237#230#250#237#229#250
+#236#227#248#233#210#244#219#193#239#205#175#233#189#152#227#170#136#218#152
+'s'#209#132']'#200'nI'#188'V'#17#161#29#7'{'#14#255#0#255#255#0#255#255#0#255
+#24#151#201'W'#193#231'^'#195#234'^'#195#234'K'#185#222#179#223#237#166#216
+#233#152#215#227#152#215#227#152#215#227#152#215#227#152#215#227#10'x'#18#140
+#233#171#195#244#212#195#244#212#195#244#212#195#244#212#191#242#208#179#238
+#197#165#233#184#152#227#170#138#221#156#138#221#156'z'#211#137'b'#204'u'#17
+#161#29#10'}'#17#24#151#201#255#0#255#255#0#255#255#0#255#24#151#201'W'#193
+#231'a'#196#236'a'#196#236'\'#193#230'n'#189#221#222#248#251#171#240#250#171
+#240#250#171#240#250#171#240#250#171#240#250#10'x'#18#10'x'#18#10'x'#18#10'x'
+#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#10'x'#18#148#222
+#163'}'#216#145#17#161#29#13#128#23#143#235#248#24#151#201#255#0#255#255#0
+#255#255#0#255#24#151#201'Y'#194#232'c'#197#238'c'#196#237'_'#189#229'C'#155
+#192#196#228#240#203#246#251#175#244#250#175#244#250#175#244#250#175#244#250
+#175#244#250#175#244#250#175#244#250#175#244#250#175#244#250#175#244#250#175
+#244#250#175#244#250#158#222#229#132#218#228#10'x'#18#152#227#170#17#161#29
+#13#128#23#149#241#249#149#241#249']'#200#228#24#151#201#255#0#255#255#0#255
+#24#151#201'c'#196#234'f'#198#241'f'#198#241'b'#191#233#162#163#171'&'#157
+#204#179#223#237#229#246#250#237#251#251#229#250#252#217#249#251#217#249#251
+#202#248#250#185#246#249#181#246#250#181#246#250#181#246#250#181#246#250#179
+#246#250#170#224#229#139#220#228#10'x'#18#17#161#29#17#131#29'|'#220#237#157
+#243#249#157#243#249#157#243#249#31#155#203#255#0#255#255#0#255#24#151#201'n'
+#200#235'f'#201#242'f'#198#241'b'#191#233#194#166#164#197#226#233'`'#182#216
+'R'#176#213'&'#157#204'5'#164#208'Q'#177#214'Q'#177#214#139#203#228#221#240
+#246#217#249#251#198#247#249#198#247#249#198#247#249#198#247#249#187#226#229
+#158#222#229#10'x'#18#17#131#29#160#240#249#140#222#238#179#246#250#179#246
+#250#179#246#250'R'#186#219#24#151#201#255#0#255#24#151#201'z'#202#236'l'#204
+#244'l'#204#244'h'#196#234#194#166#164#254#250#245#254#250#245#254#250#245
+#254#250#245#254#250#245#212#231#234#197#226#233#153#206#225'4'#164#207#179
+#223#237#237#251#251#217#249#251#213#249#250#213#249#250#197#226#233#170#224
+#229#10'x'#18#183#241#248#177#238#247#156#221#241#202#248#250#202#248#250#202
+#248#250#174#232#242#24#151#201#255#0#255#24#151#201#156#221#241'q'#209#245
+'q'#209#245'n'#200#235#194#166#164#254#248#242#254#248#242#254#248#242#254
+#248#242#254#248#242#254#248#242#254#248#242#254#248#242#240#242#239'`'#181
+#214'|'#196#224#236#246#249#237#251#251#236#246#249#212#231#234#187#226#229
+#196#236#241#200#243#249#195#241#249#179#223#237#225#250#251#225#250#251#225
+#250#251#225#250#251#24#151#201#255#0#255#24#151#201#188#235#250'w'#214#246
+'w'#214#246'r'#206#236#194#166#164#254#247#240#254#247#240#254#247#240#254
+#247#240#254#247#240#254#247#240#254#247#240#254#247#240#254#247#240#254#247
+#240#153#206#225'A'#171#211#166#216#233#249#252#253#235#240#240#212#231#234
+#210#235#243#204#243#250#204#243#250#179#223#237#231#250#251#231#250#251#231
+#250#251#231#250#251#139#203#228#24#151#201#24#151#201#188#235#250'|'#219#246
+'|'#217#245'w'#209#236#194#166#164#254#245#237#254#245#237#254#245#237#254
+#245#237#254#245#237#254#245#237#254#245#237#254#245#237#254#245#237#254#245
+#237#254#245#237#229#231#230'o'#186#215'5'#164#208'|'#196#224#139#203#228#166
+#216#233#196#228#240#196#228#240#210#235#243#249#252#253#249#252#253#249#252
+#253#243#252#252#243#252#252#24#151#201#24#151#201#192#238#250#130#223#247
+#130#223#247'}'#214#236#194#166#164#254#244#234#254#244#234#254#244#234#254
+#244#234#254#244#234#254#244#234#254#244#234#254#244#234#254#244#234#254#244
+#234#254#244#234#254#244#234#254#244#234#240#238#232#151#162#173'7'#150#183
+'C'#171#206'K'#185#222'N'#190#226#24#151#201#24#151#201#24#151#201#24#151#201
+#24#151#201#24#151#201#24#151#201#24#151#201#195#241#249#135#228#247#134#227
+#246#130#219#237#194#166#164#255#242#231#255#242#231#255#242#231#255#242#231
+#255#242#231#255#242#231#255#242#231#255#242#231#255#242#231#255#242#231#255
+#242#231#255#242#231#255#242#231#255#242#231#194#166#164#135#228#247#135#228
+#247#130#219#237#134#227#246#24#151#201#255#0#255#255#0#255#255#0#255#255#0
,#255#255#0#255#255#0#255#24#151#201#197#243#251#141#233#248#140#232#247#138
+#227#238#194#166#164#255#241#228#255#241#228#255#241#228#255#241#228#255#241
+#228#255#241#228#255#241#228#255#241#228#255#241#228#255#241#228#255#241#228
+#255#241#228#255#241#228#255#241#228#194#166#164#141#233#248#141#233#248#138
+#227#238#141#233#248#24#151#201#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#24#151#201#206#246#251#146#238#248#146#238#248#138#227#238#194
+#166#164#255#239#225#255#239#225#255#239#225#255#239#225#255#239#225#255#239
+#225#255#239#225#255#239#225#255#239#225#255#238#222#250#234#221#245#230#217
+#245#230#217#245#230#217#194#166#164#146#238#248#146#238#248#138#227#238#146
+#238#248#24#151#201#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#24#151#201#187#228#243#157#243#249#149#241#249#146#233#239#194#166#164
+#255#238#222#255#238#222#255#238#222#255#238#222#255#238#222#255#238#222#255
+#238#222#255#238#222#251#234#219#231#219#208#221#205#193#215#196#186#203#187
+#177#203#187#177#200#177#172#160#240#249#155#241#250#145#232#241#145#238#250
+#24#151#201#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#24
+#151#201'C'#170#211#213#249#250#149#241#249#146#233#239#194#166#164#255#236
+#219#255#236#219#255#236#219#255#236#219#255#236#219#255#236#219#255#236#219
+#255#236#219#250#232#215#215#196#186#189#175#163#171#158#148#159#147#138#182
+#169#159#203#187#177'e'#191#224'g'#195#227'Z'#188#221'K'#185#222#24#151#201
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#24#151
+#201'|'#196#224#175#244#250#146#233#239#194#166#164#255#235#217#255#235#217
+#255#235#217#255#235#217#255#235#217#255#235#217#255#235#217#255#235#217#255
+#235#217#248#241#234#229#231#230#231#219#208#246#236#227#200#177#172#168#158
+#162' '#152#199#24#151#201#24#150#200#24#151#201#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#24#151#201
+'|'#195#223#134#194#218#194#166#164#255#234#214#255#234#214#255#234#214#255
+#234#214#255#234#214#255#234#214#255#234#214#255#234#214#255#234#214#255#242
+#231#254#253#253#254#246#239#210#185#180#194#166#164#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#24#150#200#23#146#195#194
+#166#164#255#232#211#255#232#211#255#232#211#255#232#211#255#232#211#255#232
+#211#255#232#211#255#232#211#255#232#211#231#219#208#254#247#240#210#185#180
+#194#166#164#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#194#166#164#255#231#208#255#231#208
+#255#231#208#255#231#208#255#231#208#255#231#208#255#231#208#255#231#208#255
+#231#208#231#219#208#215#196#186#194#166#164#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#194#166#164#255#230#207#255#230#207#255#230#207#255#230#207#255
+#230#207#255#230#207#255#230#207#255#230#207#251#226#203#215#196#186#195#167
+#165#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#194#166#164#194#166
+#164#194#166#164#194#166#164#194#166#164#194#166#164#194#166#164#194#166#164
+#194#166#164#194#166#164#195#167#165#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#7'OnClick'#7#26'btnSendExternal'
+'EditorClick'#0#0#12'TSpeedButton'#20'btnGetExternalEditor'#4'Left'#3','#2#6
+'Height'#2'('#3'Top'#2#19#5'Width'#2'5'#4'Flat'#9#10'Glyph.Data'#10#250#6#0#0
+#246#6#0#0'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0
+#0#0#0#0#192#6#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#162
+'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#162
+'?'#8#162'?'#8#162'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#162'?'
+#8#170'G'#7#186'V'#4#162'?'#8#162'?'#8#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
,#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#162'?'
+#8#170'G'#7#201'e'#1#196'`'#2#165'B'#8#162'?'#8#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#162'?'#8#170
+'G'#7#201'e'#1#199'b'#2#165'B'#8#162'?'#8#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#162'?'#8#165'B'#8
+#199'b'#2#201'e'#1#170'G'#7#162'?'#8#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#162'?'#8#162'?'#8#194
+'^'#4#204'g'#1#173'I'#6#162'?'#8#255#0#255#255#0#255#255#0#255#162'?'#8#162
+'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'#8
+#162'?'#8#162'?'#8#162'?'#8#255#0#255#162'?'#8#162'?'#8#190']'#15#211'r'#12
+#178'O'#6#162'?'#8#255#0#255#255#0#255#255#0#255#162'?'#8#167'D'#7#173'I'#6
+#173'I'#6#173'I'#6#173'I'#6#173'I'#6#173'I'#6#173'I'#6#173'I'#6#173'I'#6#173
+'I'#6#167'D'#7#162'?'#8#162'?'#8#162'?'#8#171'I'#13#226#136'"'#191'_'#17#162
+'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#194']'#3#204'g'#1#204
+'g'#1#204'g'#1#204'g'#1#204'g'#1#204'g'#1#204'g'#1#204'g'#1#204'g'#1#204'g'#1
+#183'S'#5#162'?'#8#162'?'#8#162'?'#8#210'y&'#224#136')'#191'_'#17#162'?'#8
+#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#167'D'#7#173'I'#6#173'I'#6
+#173'I'#6#173'I'#6#173'I'#6#173'I'#6#201'e'#1#204'g'#1#204'g'#1#204'g'#1#183
+'S'#5#162'?'#8#162'?'#8#173'M'#17#247#168'D'#202'p"'#162'?'#8#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#162'?'#8#162'?'#8#162
+'?'#8#162'?'#8#162'?'#8#183'S'#5#204'g'#1#199'b'#2#188'X'#4#204'g'#1#183'S'#5
+#162'?'#8#162'?'#8#190'b'#29#252#176'L'#184'['#24#162'?'#8#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#162'?'#8#162'?'#8#170'G'#7#204'g'#1#201'e'#1#170'G'#7#183'S'#5#204'g'#1#183
+'S'#5#162'?'#8#162'?'#8#207'x*'#252#176'L'#185'['#25#162'?'#8#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#162
+'?'#8#170'G'#7#201'e'#1#204'g'#1#178'N'#5#162'?'#8#183'S'#5#204'g'#1#183'S'#5
+#162'?'#8#162'?'#8#207'x*'#252#176'L'#185'['#25#162'?'#8#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#162'?'#8#170'G'#7
+#201'e'#1#204'g'#1#178'N'#5#162'?'#8#162'?'#8#183'S'#5#204'g'#1#183'S'#5#162
+'?'#8#162'?'#8#190'b'#29#252#176'L'#201'p&'#168'F'#12#162'?'#8#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#162'?'#8#173'I'#6#201'e'#1#204
+'g'#1#178'N'#5#162'?'#8#162'?'#8#162'?'#8#183'S'#5#204'g'#1#183'S'#5#162'?'#8
+#162'?'#8#168'F'#12#246#169'H'#246#169'H'#168'F'#12#162'?'#8#255#0#255#255#0
+#255#255#0#255#255#0#255#162'?'#8#162'?'#8#186'Y'#14#209'o'#9#205'h'#2#178'N'
+#5#162'?'#8#162'?'#8#255#0#255#162'?'#8#183'S'#5#204'g'#1#183'S'#5#162'?'#8
+#255#0#255#162'?'#8#207'x*'#252#176'L'#235#155'?'#168'F'#12#162'?'#8#162'?'#8
+#162'?'#8#162'?'#8#167'E'#11#205'q'#30#224#133' '#213'w'#20#174'K'#8#162'?'#8
+#162'?'#8#255#0#255#255#0#255#162'?'#8#183'S'#5#204'g'#1#183'S'#5#162'?'#8
+#255#0#255#162'?'#8#162'?'#8#213#127'.'#252#176'L'#241#162'D'#201'p&'#185'['
+#25#196'i"'#212'~.'#240#158'='#238#154'6'#209'v '#166'C'#10#162'?'#8#162'?'#8
+#255#0#255#255#0#255#255#0#255#162'?'#8#183'S'#5#204'g'#1#183'S'#5#162'?'#8
+#255#0#255#255#0#255#162'?'#8#162'?'#8#185'['#25#218#134'3'#246#169'H'#252
+#176'L'#252#176'L'#252#176'L'#223#139'5'#183'X'#22#162'?'#8#162'?'#8#162'?'#8
+#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#183'S'#5#204'g'#1#183'S'#5
+#162'?'#8#255#0#255#255#0#255#255#0#255#162'?'#8#162'?'#8#185'['#25#185'['#25
+#185'['#25#185'['#25#185'['#25#185'['#25#162'?'#8#162'?'#8#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#165'B'#8#180'Q'#5#165
+'B'#8#162'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#162
+'?'#8#162'?'#8#162'?'#8#162'?'#8#162'?'#8#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#162'?'#8#162'?'#8#162
+'?'#8#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#7'Visible'#8#7'OnClick'#7#25'bt'
+'nGetExternalEditorClick'#0#0#12'TSpeedButton'#9'btnCancel'#4'Left'#3'h'#2#6
+'Height'#2'('#3'Top'#2#19#5'Width'#2'5'#4'Flat'#9#10'Glyph.Data'#10#226#2#0#0
+#222#2#0#0'BM'#222#2#0#0#0#0#0#0#158#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#8#0
,#0#0#0#0'@'#2#0#0#18#11#0#0#18#11#0#0#26#0#0#0#0#0#0#0#2#29#212#0#2#29#217#0
+#1#30#225#0#1#31#234#0#1#31#241#0#1#31#250#0#17'+'#214#0#17'+'#217#0#16','
+#225#0#16'-'#236#0#16'-'#250#0' :'#233#0'1G'#223#0'0H'#231#0'0H'#233#0'0I'
+#241#0'0I'#249#0'AU'#222#0'Qc'#225#0'ar'#234#0'`s'#246#0'`s'#250#0'q'#128#235
+#0#127#142#252#0#255#0#255#0#128#142#237#0#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#7#0#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#1#0#7#24#24#18#0#0#24#24#24#24#24#24#24#24#24#24#24#24#24
+#24#24#1#1#7#24#24#24#17#0#0#0#24#24#24#24#24#24#24#24#24#24#24#24#22#1#1#7
+#24#24#24#24#24#0#0#0#0#24#24#24#24#24#24#24#24#24#24#19#1#2#7#24#24#24#24#24
+#24#24#6#0#1#1#24#24#24#24#24#24#24#24#19#2#2#7#24#24#24#24#24#24#24#24#24#12
+#1#1#1#24#24#24#24#24#24#13#2#2#8#24#24#24#24#24#24#24#24#24#24#24#18#1#2#2
+#24#24#24#24#14#2#2#8#24#24#24#24#24#24#24#24#24#24#24#24#24#25#2#2#2#24#24
+#14#2#2#8#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#8#3#2#3#3#2#9#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#11#3#3#3#9#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#9#3#3#3#15#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#3#3#3#3#3#4#15#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#4#3#3#14#24#24#4#4#16#24#24#24#24#24#24#24#24#24#24#24#24#24
+#20#4#4#3#15#24#24#24#24#10#4#16#24#24#24#24#24#24#24#24#24#24#24#20#4#4#4#15
+#24#24#24#24#24#24#16#5#16#24#24#24#24#24#24#24#24#24#21#4#4#4#15#24#24#24#24
+#24#24#24#24#21#5#16#24#24#24#24#24#24#24#16#4#5#4#15#24#24#24#24#24#24#24#24
+#24#24#23#5#10#24#24#24#24#24#16#5#4#4#15#24#24#24#24#24#24#24#24#24#24#24#24
+#24#10#21#24#24#24#24#5#4#5#16#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#16#5#16#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24
+#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#24#7
+'Visible'#8#7'OnClick'#7#14'btnCancelClick'#0#0#5'TEdit'#7'edtName'#4'Left'#2
+'N'#6'Height'#2#21#3'Top'#2#15#5'Width'#3#147#1#8'TabOrder'#2#0#0#0#5'TEdit'
+#14'edtDescription'#4'Left'#2'N'#6'Height'#2#21#3'Top'#2'.'#5'Width'#3#147#1
+#8'TabOrder'#2#1#0#0#0#6'TPanel'#11'pnlExplorer'#4'Left'#2#1#6'Height'#3'>'#1
+#3'Top'#2'Q'#5'Width'#3#180#2#5'Align'#7#8'alClient'#10'BevelInner'#7#9'bvLo'
+'wered'#12'ClientHeight'#3'>'#1#11'ClientWidth'#3#180#2#8'TabOrder'#2#1#0#244
+#8'TSynEdit'#6'memXsd'#4'Left'#2#2#6'Height'#3':'#1#3'Top'#2#2#5'Width'#3#176
+#2#5'Align'#7#8'alClient'#10'Font.Color'#7#12'clWindowText'#11'Font.Height'#2
+#243#9'Font.Name'#6#11'Courier New'#10'Font.Pitch'#7#7'fpFixed'#12'Font.Qual'
+'ity'#7#16'fqNonAntialiased'#11'ParentColor'#8#10'ParentFont'#8#8'TabOrder'#2
+#0#12'Gutter.Width'#2'9'#19'Gutter.MouseActions'#14#0#17'RightGutter.Width'#2
+#0#24'RightGutter.MouseActions'#14#0#10'Keystrokes'#14#0#12'MouseActions'#14
+#0#16'MouseTextActions'#14#0#15'MouseSelActions'#14#0#19'VisibleSpecialChars'
+#11#8'vscSpace'#12'vscTabAtLast'#0#26'SelectedColor.BackPriority'#2'2'#26'Se'
+'lectedColor.ForePriority'#2'2'#27'SelectedColor.FramePriority'#2'2'#26'Sele'
+'ctedColor.BoldPriority'#2'2'#28'SelectedColor.ItalicPriority'#2'2'#31'Selec'
+'tedColor.UnderlinePriority'#2'2'#31'SelectedColor.StrikeOutPriority'#2'2'#21
+'BracketHighlightStyle'#7#8'sbhsBoth'#28'BracketMatchColor.Background'#7#6'c'
+'lNone'#28'BracketMatchColor.Foreground'#7#6'clNone'#23'BracketMatchColor.St'
+'yle'#11#6'fsBold'#0#26'FoldedCodeColor.Background'#7#6'clNone'#26'FoldedCod'
+'eColor.Foreground'#7#6'clGray'#26'FoldedCodeColor.FrameColor'#7#6'clGray'#25
+'MouseLinkColor.Background'#7#6'clNone'#25'MouseLinkColor.Foreground'#7#6'cl'
+'Blue'#29'LineHighlightColor.Background'#7#6'clNone'#29'LineHighlightColor.F'
+'oreground'#7#6'clNone'#0#244#18'TSynGutterPartList'#22'SynLeftGutterPartLis'
+'t1'#0#15'TSynGutterMarks'#15'SynGutterMarks1'#5'Width'#2#24#12'MouseActions'
+#14#0#0#0#20'TSynGutterLineNumber'#20'SynGutterLineNumber1'#5'Width'#2#17#12
+'MouseActions'#14#0#21'MarkupInfo.Background'#7#9'clBtnFace'#21'MarkupInfo.F'
+'oreground'#7#6'clNone'#10'DigitCount'#2#2#30'ShowOnlyLineNumbersMultiplesOf'
+#2#1#9'ZeroStart'#8#12'LeadingZeros'#8#0#0#17'TSynGutterChanges'#17'SynGutte'
+'rChanges1'#5'Width'#2#4#12'MouseActions'#14#0#13'ModifiedColor'#4#252#233#0
+#0#10'SavedColor'#7#7'clGreen'#0#0#19'TSynGutterSeparator'#19'SynGutterSepar'
+'ator1'#5'Width'#2#2#12'MouseActions'#14#0#21'MarkupInfo.Background'#7#7'clW'
+'hite'#21'MarkupInfo.Foreground'#7#6'clGray'#0#0#21'TSynGutterCodeFolding'#21
+'SynGutterCodeFolding1'#12'MouseActions'#14#0#21'MarkupInfo.Background'#7#6
+'clNone'#21'MarkupInfo.Foreground'#7#6'clGray'#20'MouseActionsExpanded'#14#0
+#21'MouseActionsCollapsed'#14#0#0#0#0#0#0#0#0#9'TTabSheet'#11'tbsTriggers'#7
+'Caption'#6#8'Triggers'#12'ClientHeight'#2#0#11'ClientWidth'#2#0#10'ImageInd'
+'ex'#2#1#0#9'TTreeView'#9'trvStates'#4'Left'#2#0#6'Height'#3'i'#1#3'Top'#2'#'
,#5'Width'#3#182#2#5'Align'#7#8'alClient'#8'DragKind'#7#6'dkDock'#10'Font.Col'
+'or'#7#12'clWindowText'#11'Font.Height'#2#243#9'Font.Name'#6#11'Courier New'
+#6'Indent'#2#19#10'ParentFont'#8#9'PopupMenu'#7#11'ppmTriggers'#8'ReadOnly'#9
+#9'RowSelect'#9#8'TabOrder'#2#0#16'OnCustomDrawItem'#7#23'trvStatesCustomDra'
+'wItem'#10'OnDragDrop'#7#17'trvStatesDragDrop'#10'OnDragOver'#7#17'trvStates'
+'DragOver'#7'Options'#11#17'tvoAutoItemHeight'#16'tvoHideSelection'#21'tvoKe'
+'epCollapsedNodes'#11'tvoReadOnly'#12'tvoRowSelect'#14'tvoShowButtons'#12'tv'
+'oShowLines'#11'tvoShowRoot'#11'tvoToolTips'#13'tvoThemedDraw'#0#0#0#6'TPane'
+'l'#6'Panel7'#4'Left'#2#0#6'Height'#2'#'#3'Top'#2#0#5'Width'#3#182#2#5'Align'
+#7#5'alTop'#10'BevelInner'#7#9'bvLowered'#12'ClientHeight'#2'#'#11'ClientWid'
+'th'#3#182#2#8'TabOrder'#2#1#0#12'TSpeedButton'#19'btnClearAllMappings'#4'Le'
+'ft'#2#8#6'Height'#2#22#3'Top'#2#7#5'Width'#2'Q'#7'Caption'#6#9'Clear all'#7
+'OnClick'#7#24'btnClearAllMappingsClick'#0#0#0#0#0#0#0#0#6'TPanel'#6'Panel4'
+#4'Left'#2#0#6'Height'#2'3'#3'Top'#3#239#1#5'Width'#3#229#3#5'Align'#7#8'alB'
+'ottom'#12'ClientHeight'#2'3'#11'ClientWidth'#3#229#3#8'TabOrder'#2#2#0#7'TB'
+'itBtn'#12'btnSaveClose'#4'Left'#3#219#2#6'Height'#2'#'#3'Top'#2#6#5'Width'#2
+'r'#7'Anchors'#11#5'akTop'#0#7'Caption'#6#14'Save and Close'#10'Glyph.Data'
+#10#226#1#0#0#222#1#0#0'BM'#222#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0'$'#0#0#0#18#0
+#0#0#1#0#4#0#0#0#0#0'h'#1#0#0#0#0#0#0#0#0#0#0#16#0#0#0#0#0#0#0#0#0#0#0#0#0
+#128#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0#192#192#192#0
+#128#128#128#0#0#0#255#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0#255#0#255#255
+#0#0#255#255#255#0'333333333333333333'#0#0'333333333333'#243'33333'#0#0'334C'
+'33333338'#143'33333'#0#0'33B$3333333'#131'8'#243'3333'#0#0'34""C33333833'
+#143'3333'#0#0'3B""$33333'#131'338'#243'333'#0#0'4"*""C3338'#243'8'#243'3'
+#143'333'#0#0'2"'#163#162'"C3338'#243#131#143'3'#143'333'#0#0':*3:"$3338'#248
+'38'#243'8'#243'33'#0#0'3'#163'33'#162'"C333'#131'33'#143'3'#143'33'#0#0'333'
+'3:"$3333338'#243'8'#243'3'#0#0'33333'#162'"C333333'#143'3'#143'3'#0#0'33333'
+':"$3333338'#243'8'#243#0#0'333333'#162'"C333333'#143'3'#143#0#0'333333:"C33'
+'33338'#243#143#0#0'3333333'#162'#3333333'#143#131#0#0'3333333:3333333383'#0
+#0'333333333333333333'#0#0#11'ModalResult'#2#1#9'NumGlyphs'#2#2#7'OnClick'#7
+#17'btnSaveCloseClick'#8'TabOrder'#2#0#0#0#7'TBitBtn'#14'btnCancelClose'#4'L'
+'eft'#3'v'#3#6'Height'#2'#'#3'Top'#2#6#5'Width'#2'K'#7'Anchors'#11#5'akTop'#0
+#4'Kind'#7#8'bkCancel'#8'TabOrder'#2#1#0#0#0#11'TActionList'#6'alMain'#4'Lef'
+'t'#3#152#2#3'Top'#2#8#0#7'TAction'#9'actNewXSD'#7'Caption'#6#7'New XSD'#9'O'
+'nExecute'#7#16'actNewXSDExecute'#0#0#7'TAction'#12'actDeleteXSD'#7'Caption'
+#6#10'Delete XSD'#9'OnExecute'#7#19'actDeleteXSDExecute'#0#0#7'TAction'#9'ac'
+'tSaveAs'#7'Caption'#6#10'Save as...'#0#0#7'TAction'#7'actSave'#7'Caption'#6
+#9'Save File'#9'OnExecute'#7#14'actSaveExecute'#0#0#7'TAction'#7'actLoad'#7
+'Caption'#6#9'Load File'#9'OnExecute'#7#14'actLoadExecute'#0#0#7'TAction'#7
+'actUndo'#7'Caption'#6#7'actUndo'#9'OnExecute'#7#14'actUndoExecute'#0#0#7'TA'
+'ction'#10'actGenUnit'#7'Caption'#6#9'Save .pas'#0#0#0#10'TImageList'#11'img'
+'OQLState'#4'Left'#3#248#2#3'Top'#2#8#6'Bitmap'#10#14#8#0#0'Li'#2#0#0#0#16#0
+#0#0#16#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#29#164'5'#255#19#153'#'
+#255#19#153'#'#255#19#153'#'#255#19#153'#'#255#19#140'*'#255#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#19#153'#'#255#19#153'#'#255
+#152#225#181#255#189#238#212#255#167#231#196#255#144#224#177#255'x'#217#159
+#255'I'#199'y'#255#27#157'='#255#27#157'='#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#19#153'#'#255'j'#204#136#255#208#244#227#255#154#225#182#255'P'
+#199'z'#255'8'#189'g'#255','#186']'#255'0'#187'`'#255'/'#188']'#255'#'#188'O'
+#255#17#163'0'#255#6'b'#15#255#0#0#0#0#0#0#0#0#0#0#0#0#19#153'#'#255'V'#197
+'s'#255#197#240#216#255'f'#207#140#255' '#180'R'#255'#'#181'T'#255#170#230
+#192#255#150#222#177#255#25#177'H'#255#19#172'<'#255#18#170'4'#255#15#176'-'
+#255#10#153#31#255#3'k'#10#255#0#0#0#0#0#0#0#0#19#153'#'#255#170#231#197#255
+'h'#208#142#255#22#175'H'#255#27#177'L'#255'9'#191'h'#255#244#252#247#255#255
+#255#255#255#132#217#158#255#17#170'2'#255#14#167')'#255#11#164' '#255#9#175
+#28#255#3'k'#10#255#0#0#0#0#6'x'#14#255'L'#189'i'#255#131#221#167#255'"'#182
+'U'#255#28#178'N'#255'"'#181'T'#255'"'#181'T'#255'U'#202#127#255#225#246#233
+#255#255#255#255#255#136#217#157#255#16#171'/'#255#12#166''''#255#6#167#22
+#255#3#140#10#255#1'F'#3#255#6'x'#14#255'T'#197'z'#255'D'#198't'#255'R'#199
+'}'#255'W'#202#129#255'V'#202#128#255'W'#202#129#255'I'#197's'#255'y'#213#146
+#255#250#254#250#255#255#255#255#255#151#221#165#255#26#173'3'#255#7#165#24
+#255#3#157#12#255#1'F'#3#255#8't'#18#255'>'#189'i'#255'*'#186'\'#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#252#254#252#255#255#255#255#255#255#255#255#255#170#227#176#255
,#3#160#12#255#3#159#12#255#2'R'#5#255#6'h'#13#255'!'#177'Q'#255#30#183'Q'#255
+#191#237#207#255#186#234#198#255#183#233#194#255#184#234#197#255#181#233#194
+#255#183#233#193#255#246#252#247#255#255#255#255#255#238#250#239#255'T'#197
+'^'#255#3#160#12#255#3#159#12#255#1'J'#4#255#3'W'#6#255#23#163'A'#255#24#181
+'J'#255#17#171'4'#255#6#160#17#255#3#158#12#255#4#159#13#255#3#158#12#255't'
+#208'}'#255#252#254#252#255#243#251#244#255'>'#188'H'#255#3#158#12#255#3#161
+#12#255#3#150#10#255#1'B'#3#255#3'W'#6#255#13#130'#'#255#23#182'A'#255#14#169
+'-'#255#5#160#19#255#4#159#13#255#7#160#17#255#130#213#137#255#255#255#255
+#255#244#252#246#255'@'#188'J'#255#3#158#12#255#3#158#12#255#3#165#12#255#3
+'{'#8#255#1'B'#3#255#0#0#0#0#4'O'#9#255#16#172'0'#255#13#171'('#255#9#164#28
+#255#3#158#15#255#22#170' '#255#213#242#216#255#233#248#234#255'H'#192'R'#255
+#3#158#12#255#3#158#12#255#3#159#12#255#3#167#12#255#2'L'#4#255#0#0#0#0#0#0#0
+#0#4'O'#9#255#6'k'#17#255#10#171#31#255#7#164#21#255#4#158#13#255#2#157#10
+#255#3#157#10#255#3#158#12#255#3#158#12#255#3#158#12#255#3#160#12#255#3#167
+#12#255#2'j'#6#255#2'L'#4#255#0#0#0#0#0#0#0#0#0#0#0#0#3'O'#9#255#3'e'#9#255#4
+#163#13#255#3#166#12#255#3#160#11#255#2#158#10#255#3#159#12#255#3#160#12#255
+#3#165#12#255#3#166#12#255#2'i'#6#255#1'4'#2#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#1'E'#3#255#1'E'#3#255#3'x'#8#255#3#156#11#255#3#159#12#255#3#159
+#12#255#3#157#12#255#2'~'#9#255#1'M'#4#255#1'M'#4#255#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'0'#2#255#1'A'#3#255#2'Q'#4#255#2
+'Q'#4#255#1'C'#3#255#1'3'#2#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#255#255#0'0'#255#255#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#255#255#0'0'#255#255#0'0'#255#255#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#255#255#0'0'#255#255#0'0'#255#255#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#255#255
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#255#255#0'0'#255#255#0'0'#255#255#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#255#255#0'0'#255#255#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#255#255#0'0'#239#255#0'0'#255
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#255#255#0'0'#255#255#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#247#255#0'0'#239#255
+#0'0'#239#255#0#0#0#0#0#0#0#0#0'0'#247#255#0'0'#255#255#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#222#255#0'0'
+#239#255#0'0'#239#255#0'0'#239#255#0'0'#247#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#231
+#255#0'0'#231#255#0'0'#239#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#222#255#0'0'#231#255
+#0'0'#231#255#0'0'#239#255#0'0'#222#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#222#255#0'0'#222#255#0'0'#222
+#255#0#0#0#0#0'0'#222#255#0'0'#222#255#0'0'#222#255#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#239#255#0'0'#222#255#0'0'#222#255#0'0'
+#222#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#222#255#0'0'#222#255#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#222#255#0'0'#222#255#0'0'#222#255#0'0'
+#222#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#222#255#0'0'
+#222#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#222#255#0'0'#222#255#0'0'#222
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#222
+#255#0'0'#222#255#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#222#255#0'0'#222#255#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'
+#222#255#0'0'#222#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'0'#222#255
+#0'0'#222#255#0#0#10'TPopupMenu'#11'ppmTriggers'#7'OnPopup'#7#16'ppmTriggers'
+'Popup'#4'Left'#3#16#2#3'Top'#2#8#0#9'TMenuItem'#7'miClear'#7'Caption'#6#5'C'
+'lear'#7'OnClick'#7#12'miClearClick'#0#0#0#0
]);
unit ituXSDExplorer;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, SynEdit,
Dialogs, ExtCtrls, StdCtrls, utuXSD, Menus, ComCtrls, Buttons, ActnList, ImgList;
type
TXSDExplorer = class(TForm)
Panel1: TPanel;
PageControl1: TPageControl;
tsXSD: TTabSheet;
Panel2: TPanel;
ltvXSDs: TListView;
Splitter1: TSplitter;
alMain: TActionList;
actSaveAs: TAction;
actSave: TAction;
actLoad: TAction;
actUndo: TAction;
actGenUnit: TAction;
btnDeleteXSD: TSpeedButton;
btnNewXSD: TSpeedButton;
imgOQLState: TImageList;
Panel4: TPanel;
btnSaveClose: TBitBtn;
Panel3: TPanel;
pgcXSD: TPageControl;
TabSheet1: TTabSheet;
tbsTriggers: TTabSheet;
Panel5: TPanel;
Panel6: TPanel;
Label1: TLabel;
Label2: TLabel;
edtName: TEdit;
edtDescription: TEdit;
pnlExplorer: TPanel;
trvStates: TTreeView;
memXsd: TSynEdit;
ppmTriggers: TPopupMenu;
miClear: TMenuItem;
btnCancelClose: TBitBtn;
btnSendExternalEditor: TSpeedButton;
btnGetExternalEditor: TSpeedButton;
btnCancel: TSpeedButton;
btnSave: TSpeedButton;
Panel7: TPanel;
btnClearAllMappings: TSpeedButton;
procedure actLoadExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure actNewXSDExecute(Sender: TObject);
procedure actSaveXSDExecute(Sender: TObject);
procedure actSaveExecute(Sender: TObject);
procedure Close1Click(Sender: TObject);
procedure actDeleteXSDExecute(Sender: TObject);
procedure ltvXSDsCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
var DefaultDraw: Boolean);
procedure ltvXSDsChange(Sender: TObject; Item: TListItem; Change: TItemChange);
procedure ltvXSDsChanging(Sender: TObject; Item: TListItem; Change: TItemChange; var AllowChange: Boolean);
procedure actUndoExecute(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btnSaveCloseClick(Sender: TObject);
procedure trvStatesCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode;
State: TCustomDrawState; var DefaultDraw: Boolean);
procedure trvStatesDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure trvStatesDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure miClearClick(Sender: TObject);
procedure ppmTriggersPopup(Sender: TObject);
procedure pgcXSDChange(Sender: TObject);
procedure ltvXSDsDblClick(Sender: TObject);
procedure btnSendExternalEditorClick(Sender: TObject);
procedure btnGetExternalEditorClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure btnClearAllMappingsClick(Sender: TObject);
private
{ Private declarations }
fBeforeXSD, fAfterXSD: string;
fEditing: boolean;
fXSDList: utXSDFile;
// FStarUMLApp: IStarUMLApplication;
// FUMLUseCase: IUMLUseCase;
fCurrentFileName: string;
procedure UpdateXSDList;
procedure UpdateTreeView;
procedure UpdateTriggersXSDName(piOldName, piNewName: string);
procedure UpdateUsedTriggerCount;
procedure SelectedXSDToInterface;
procedure InterfaceToSelectedXSD;
function ValidaXSD(piXSD: string): string;
function GetTagName(piNodeText: string): string;
function GetCurrentFileName: string;
function GetExternalXSDEditor: string;
function GetTempPath: String;
procedure SetCurrentFileName(const Value: string);
procedure SetEditing(const Value: boolean);
property TempPath: String read GetTempPath;
property CurrentFileName: string read GetCurrentFileName write SetCurrentFileName;
property ExternalXSDEditor: string read GetExternalXSDEditor;
property Editing: boolean read fEditing write SetEditing;
public
{ Public declarations }
constructor Create(piOwner: TComponent); reintroduce;
end;
var
XSDExplorer: TXSDExplorer;
implementation
uses acuObject, utuStateMachine, IntegracaoDelphiSUML, acuXSDDocument;
{$R *.dfm}
procedure TXSDExplorer.actDeleteXSDExecute(Sender: TObject);
var lXSD: utXSD;
li: integer;
begin
if assigned(ltvXSDs.Selected) then
begin
lXSD := utXSD(ltvXSDs.Selected.Data);
li := ltvXSDs.Selected.Index;
ltvXSDs.Selected.Delete;
lXSD.Delete;
if ltvXSDs.Items.Count > 0 then
if li - 1 >= 0 then
ltvXSDs.Selected := ltvXSDs.Items[li-1]
else
ltvXSDs.Selected := ltvXSDs.Items[0];
SelectedXSDToInterface;
end;
end;
procedure TXSDExplorer.actLoadExecute(Sender: TObject);
var lXSDs: string;
begin
try
try
// lXSDs := FUMLUseCase.GetTaggedValueAsString('DBMappings', 'UseCaseMap', 'XSDs');
ltvXSDs.ItemIndex := -1;
if assigned(fXSDList) then freeandnil(fXSDList);
fXSDList := utXSDFile.create(lXSDs);
Except
on e:exception do
begin
if assigned(fXSDList) then freeandnil(fXSDList);
fXSDList := utXSDFile.create;
raise;
end;
end;
finally
UpdateXSDList;
end;
end;
procedure TXSDExplorer.actNewXSDExecute(Sender: TObject);
var lListItem: TListItem;
lXSD: utXSD;
lCont: integer;
begin
pgcXSD.ActivePageIndex := 0;
InterfaceToSelectedXSD;
lCont := 1;
while fXSDList.XSDExists('_NEW_XSD_' + inttostr(lCont)) do
Inc(lCont);
lXSD := fXSDList.NewXSD('_NEW_XSD_' + inttostr(lCont));
lListItem := ltvXSDs.Items.Add;
lListItem.Caption := lXSD.ID;
lListItem.Data := lXSD;
lListItem.ImageIndex := 1;
lListItem.SubItems.Add('');
lListItem.SubItems.Add('');
ltvXSDs.Selected := lListItem;
SelectedXSDToInterface;
edtName.SetFocus;
edtName.SelectAll;
end;
procedure TXSDExplorer.actSaveExecute(Sender: TObject);
begin
InterfaceToSelectedXSD;
ltvXSDs.SortType := stText;
ltvXSDs.SortType := stNone;
// FUMLUseCase.SetTaggedValueAsString('DBMappings', 'UseCaseMap', 'XSDs', fXSDList.XML);
end;
procedure TXSDExplorer.actSaveXSDExecute(Sender: TObject);
begin
InterfaceToSelectedXSD;
end;
procedure TXSDExplorer.actUndoExecute(Sender: TObject);
var lXSD: utXSD;
begin
if Assigned(ltvXSDs.Selected) then
begin
lXSD := utXSD(ltvXSDs.Selected.Data);
edtName.Text := lXSD.ID;
edtDescription.Text := lXSD.Description;
memXSD.Lines.Text := lXSD.Text;
end;
end;
procedure TXSDExplorer.btnCancelClick(Sender: TObject);
begin
self.Editing := false;
end;
procedure TXSDExplorer.btnGetExternalEditorClick(Sender: TObject);
var laux: TStringList;
begin
lAux := TStringList.Create;
try
lAux.LoadFromFile(self.TempPath + Self.CurrentFileName);
fAfterXSD := lAux.Text;
finally
lAux.free;
end;
if fBeforeXSD <> fAfterXSD then
begin
memXSD.Lines.Text := fAfterXSD;
//
// if pgcPrincipal.ActivePage = tbsXSDIn then
// Self.XSDIn := fAfterXSD
// else if pgcPrincipal.ActivePage = tbsXSDOut then
// Self.XSDOut := fAfterXSD;
end;
self.Editing := false;
end;
procedure TXSDExplorer.btnSaveCloseClick(Sender: TObject);
begin
actSaveExecute(sender);
end;
procedure TXSDExplorer.btnSendExternalEditorClick(Sender: TObject);
var
SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
lOk: boolean;
lAux: TStringList;
begin
if Self.ExternalXSDEditor = '' then
begin
Application.MessageBox('Need to define an external XSD editor.','StarUML', MB_ICONINFORMATION);
exit;
end;
Self.CurrentFileName := 'StarUmlXSDTmpFile.xsd';
lAux := TStringList.Create;
try
if trim(memXSD.Lines.Text) = '' then
lAux.Text := '<?xml version="1.0" encoding="utf-8" ?>' + #13#10 +
'<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" />'
else
lAux.Text := memXSD.Lines.Text;
fBeforeXSD := lAux.Text;
try
if FileExists(self.TempPath + Self.CurrentFileName) then DeleteFile(self.TempPath + Self.CurrentFileName);
lAux.SaveToFile(self.TempPath + Self.CurrentFileName);
except
Randomize;
Self.CurrentFileName := 'StarUmlXSDTmpFile' + inttostr(Random(999999)) + '.xsd';
lAux.SaveToFile(self.TempPath + Self.CurrentFileName);
end;
finally
lAux.free;
end;
FillChar(SUInfo, SizeOf(SUInfo), #0);
SUInfo.cb := SizeOf(SUInfo);
SUInfo.dwFlags := STARTF_USESHOWWINDOW;
SUInfo.wShowWindow := SW_SHOWNORMAL;
lOk := CreateProcess(nil,
PChar(ExternalXSDEditor + ' ' + self.TempPath + Self.CurrentFileName),
nil,
nil,
false,
CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS,
nil,
nil,
SUInfo,
ProcInfo);
self.Editing := lOK;
if (lOk) then
begin
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
end;
procedure TXSDExplorer.miClearClick(Sender: TObject);
begin
// IUMLTransition(trvStates.Selected.Data).SetTaggedValueAsString('DBMappings', 'TransitionMap', GetTagName(trvStates.Selected.text), '');
trvStates.Selected.Text := GetTagName(trvStates.Selected.text);
UpdateUsedTriggerCount;
trvStates.Repaint;
end;
procedure TXSDExplorer.Close1Click(Sender: TObject);
begin
Close;
end;
constructor TXSDExplorer.Create(piOwner: TComponent);
begin
inherited Create(piOwner);
// FStarUMLApp := piStarUMLApp;
// FUMLUseCase := piUMLUseCase;
actLoadExecute(nil);
UpdateTreeView;
end;
procedure TXSDExplorer.FormCreate(Sender: TObject);
begin
// fXSDList := utXSDFile.create('');
// UpdateXSDList;
end;
procedure TXSDExplorer.FormShow(Sender: TObject);
begin
if fXSDList.Count = 0 then
actNewXSDExecute(sender);
end;
function TXSDExplorer.GetCurrentFileName: string;
begin
result := fCurrentFileName;
end;
function TXSDExplorer.GetExternalXSDEditor: string;
begin
// result := Self.FStarUMLAPP.GetOptionValue(cOPTIONSCHEMAID, 'EXTERNAL_XSD_EDITOR');
if (result = '') or (not FileExists(result)) then
begin
result := '';
if FileExists('C:\Arquivos de programas\Liquid Technologies\Liquid XML Studio 2008 (v6)\XMLStudio.exe') then
result := 'C:\Arquivos de programas\Liquid Technologies\Liquid XML Studio 2008 (v6)\XMLStudio.exe'
else
if FileExists('C:\Program Files\Liquid Technologies\Liquid XML Studio 2008 (v6)\XMLStudio.exe') then
result := 'C:\Arquivos de programas\Liquid Technologies\Liquid XML Studio 2008 (v6)\XMLStudio.exe';
end;
end;
function TXSDExplorer.GetTagName(piNodeText: string): string;
begin
result := trim(copy(piNodeText,1,7));
end;
function TXSDExplorer.GetTempPath: String;
begin
Result := IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP'));
end;
procedure TXSDExplorer.InterfaceToSelectedXSD;
var lXSD: utXSD;
lErro: string;
begin
if Assigned(ltvXSDs.Selected) then
begin
lerro := '';
lXSD := utXSD(ltvXSDs.Selected.Data);
UpdateTriggersXSDName(lXSD.ID, edtName.text);
lXSD.ID := edtName.Text;
lXSD.Description := edtDescription.Text;
lXSD.Text := memXSD.Lines.Text;
lErro := ValidaXSD(lXSD.Text);
if lErro = '' then
ltvXSDs.Selected.ImageIndex := 0
else
ltvXSDs.Selected.ImageIndex := 1;
ltvXSDs.Selected.Caption := edtName.Text;
ltvXSDs.Selected.SubItems[0] := lErro;
end;
end;
procedure TXSDExplorer.ltvXSDsChange(Sender: TObject; Item: TListItem; Change: TItemChange);
begin
SelectedXSDToInterface;
end;
procedure TXSDExplorer.ltvXSDsChanging(Sender: TObject; Item: TListItem; Change: TItemChange; var AllowChange: Boolean);
begin
InterfaceToSelectedXSD;
end;
procedure TXSDExplorer.ltvXSDsCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
var DefaultDraw: Boolean);
begin
//item.SubItems[1] guarda a quantidade de trasicoes que usam a trigger
if (item.SubItems[1] = '') or (strtoint(item.SubItems[1]) = 0) then
ltvXSDs.Canvas.font.Color := clred;
end;
procedure TXSDExplorer.ltvXSDsDblClick(Sender: TObject);
begin
if assigned(ltvXSDs.Selected) then
if ltvXSDs.Selected.SubItems[0] <> '' then
ShowMessage(ltvXSDs.Selected.SubItems[0]);
end;
procedure TXSDExplorer.pgcXSDChange(Sender: TObject);
begin
InterfaceToSelectedXSD;
end;
procedure TXSDExplorer.ppmTriggersPopup(Sender: TObject);
begin
miClear.Caption := 'Clear ';
miClear.Enabled := false;
if (assigned(trvStates.Selected)) and (trvStates.Selected.Level = 2) then
begin
miClear.Caption := miClear.Caption + trvStates.Selected.Parent.Text + ' (' + trvStates.Selected.Text + ')';
// miClear.Caption := miClear.Caption + IUMLTransition(trvStates.Selected.Data).GetTriggerAt(0).Name + '(' + trvStates.Selected.Text + ')';
miClear.Enabled := true;
end;
end;
procedure TXSDExplorer.UpdateTreeView;
//var lUMLTopState: IUMLCompositeState;
// lStateCount, lTransitionCount: integer;
// lUMLState: IUMLStateVertex;
// lNodeState, lNodeTransition: TTreeNode;
// lUMLTransition: IUMLTransition;
// lTransitionName: string;
begin
//trvStates.Items.Clear;
//lUMLTopState := FUMLUseCase.GetBehaviorAt(0).Top as IUMLCompositeState;
//trvStates.Items.BeginUpdate;
//try
// for lStateCount := 0 to lUMLTopState.GetSubvertexCount - 1 do
// begin
// lUMLState := lUMLTopState.GetSubvertexAt(lStateCount);
// lNodeState := trvStates.Items.AddChild(nil, lUMLState.Name);
//
// for lTransitionCount := 0 to lUMLState.GetOutgoingCount - 1 do
// begin
// lUMLTransition := lUMLState.GetOutgoingAt(lTransitionCount);
// lTransitionName := '';
// if lUMLTransition.GetTriggerCount > 0 then
// lTransitionName := lUMLTransition.GetTriggerAt(0).Name;
// if lUMLTransition.GetEffectCount > 0 then
// lTransitionName := lTransitionName + ' / ' + lUMLTransition.GetEffectAt(0).Name;
//
// lNodeTransition := trvStates.Items.AddChildObject(lNodeState, lTransitionName, Pointer(lUMLTransition));
//
// if lUMLTransition.GetTaggedValueAsString('DBMappings', 'TransitionMap', 'XSD In') = '' then
// trvStates.Items.AddChildObject(lNodeTransition, 'XSD In', Pointer(lUMLTransition))
// else
// trvStates.Items.AddChildObject(lNodeTransition, 'XSD In [' + lUMLTransition.GetTaggedValueAsString('DBMappings', 'TransitionMap', 'XSD In') + ']', Pointer(lUMLTransition));
//
// if lUMLTransition.GetTaggedValueAsString('DBMappings', 'TransitionMap', 'XSD Out') = '' then
// trvStates.Items.AddChildObject(lNodeTransition, 'XSD Out', Pointer(lUMLTransition))
// else
// trvStates.Items.AddChildObject(lNodeTransition, 'XSD Out [' + lUMLTransition.GetTaggedValueAsString('DBMappings', 'TransitionMap', 'XSD Out') + ']',Pointer(lUMLTransition));
// end;
// lNodeState.Expand(true);
// end;
//finally
// trvStates.Items.EndUpdate;
//end;
end;
procedure TXSDExplorer.UpdateTriggersXSDName(piOldName, piNewName: string);
//var lUMLTopState: IUMLCompositeState;
// lStateCount, lTransitionCount: integer;
// lUMLState: IUMLStateVertex;
// lUMLTransition: IUMLTransition;
// lFound: boolean;
begin
//if piOldName <> piNewName then
//begin
// lFound := false;
// lUMLTopState := FUMLUseCase.GetBehaviorAt(0).Top as IUMLCompositeState;
// for lStateCount := 0 to lUMLTopState.GetSubvertexCount - 1 do
// begin
// lUMLState := lUMLTopState.GetSubvertexAt(lStateCount);
// for lTransitionCount := 0 to lUMLState.GetOutgoingCount - 1 do
// begin
// lUMLTransition := lUMLState.GetOutgoingAt(lTransitionCount);
// if lUMLTransition.GetTaggedValueAsString('DBMappings', 'TransitionMap', 'XSD In') = piOldName then
// begin
// lUMLTransition.SetTaggedValueAsString('DBMappings', 'TransitionMap', 'XSD In', piNewName);
// lFound := true;
// end;
//
// if lUMLTransition.GetTaggedValueAsString('DBMappings', 'TransitionMap', 'XSD Out') = piOldName then
// begin
// lUMLTransition.SetTaggedValueAsString('DBMappings', 'TransitionMap', 'XSD Out', piNewName);
// lFound := true;
// end;
// end;
// end;
// if lFound then UpdateTreeView;
//end;
end;
procedure TXSDExplorer.UpdateUsedTriggerCount;
//var lUMLTopState: IUMLCompositeState;
// lStateCount, lTransitionCount: integer;
// lUMLState: IUMLStateVertex;
// lUMLTransition: IUMLTransition;
// lListItem: TListItem;
// I: Integer;
begin
//for I := 0 to ltvXSDs.Items.Count - 1 do ltvXSDs.Items[i].SubItems[1] := '0';
//
//lUMLTopState := FUMLUseCase.GetBehaviorAt(0).Top as IUMLCompositeState;
//for lStateCount := 0 to lUMLTopState.GetSubvertexCount - 1 do
//begin
// lUMLState := lUMLTopState.GetSubvertexAt(lStateCount);
//
// for lTransitionCount := 0 to lUMLState.GetOutgoingCount - 1 do
// begin
// lUMLTransition := lUMLState.GetOutgoingAt(lTransitionCount);
//
// lListItem := ltvXSDs.FindCaption(0,lUMLTransition.GetTaggedValueAsString('DBMappings', 'TransitionMap', 'XSD In'),false,true,true);
// if assigned(lListItem) then
// lListItem.SubItems[1] := inttostr(strtoint(lListItem.SubItems[1]) + 1);
//
// lListItem := ltvXSDs.FindCaption(0,lUMLTransition.GetTaggedValueAsString('DBMappings', 'TransitionMap', 'XSD Out'),false,true,true);
// if assigned(lListItem) then
// lListItem.SubItems[1] := inttostr(strtoint(lListItem.SubItems[1]) + 1);
// end;
//end;
//ltvXSDs.Repaint;
end;
procedure TXSDExplorer.UpdateXSDList;
var lListItem: TListItem;
lEnum: acEnumerator;
lXSD: utXSD;
lErro: string;
begin
ltvXSDs.Items.BeginUpdate;
try
ltvXSDs.Clear;
lEnum := fXSDList.GetXSDEnumerator;
try
while not lEnum.EOL do
begin
lerro := '';
lXSD := utXSD(lEnum.Current);
lListItem := ltvXSDs.Items.Add;
lListItem.Caption := lXSD.ID;
lListItem.Data := lXSD;
lErro := ValidaXSD(lXSD.Text);
if lErro = '' then
lListItem.ImageIndex := 0
else
lListItem.ImageIndex := 1;
lListItem.SubItems.Add(lErro);
lListItem.SubItems.Add('');
lEnum.MoveNext;
end;
finally
lEnum.free;
end;
UpdateUsedTriggerCount;
finally
ltvXSDs.Items.EndUpdate;
end;
if ltvXSDs.Items.Count > 0 then
begin
ltvXSDs.ItemIndex := 0;
SelectedXSDToInterface;
end;
ltvXSDs.Repaint;
end;
function TXSDExplorer.ValidaXSD(piXSD: string): string;
var lXSDDoc: acXSDDocument;
begin
result := '';
lXSDDoc := acXSDDocument.Create;
try
try
lXSDDoc.XML := piXSD;
Except
on e:exception do
begin
Result := e.Message;
end;
end;
finally
lXSDDoc.free;
end;
end;
procedure TXSDExplorer.SelectedXSDToInterface;
var lXSD: utXSD;
begin
trvStates.Repaint;
edtName.Text := '';
edtDescription.Text := '';
memXSD.Lines.Text := '';
if Assigned(ltvXSDs.Selected) then
begin
lXSD := utXSD(ltvXSDs.Selected.Data);
edtName.Text := lXSD.ID;
edtDescription.Text := lXSD.Description;
memXSD.Lines.Text := lXSD.Text;
end;
ltvXSDs.Column[0].Caption := 'XSD Name (' + IntToStr(fXSDList.Count) + ')';
end;
procedure TXSDExplorer.SetCurrentFileName(const Value: string);
begin
fCurrentFileName := value;
end;
procedure TXSDExplorer.SetEditing(const Value: boolean);
begin
fEditing := Value;
btnSendExternalEditor.Visible := not value;
btnGetExternalEditor.Visible := value;
btnCancel.Visible := value;
tbsTriggers.Visible := not value;
ltvXSDs.Enabled := not value;
btnSaveClose.Enabled := not value;
btnCancelClose.Enabled := not value;
btnNewXSD.Enabled := not value;
btnSave.Enabled := not value;
btnDeleteXSD.Enabled := not value;
end;
procedure TXSDExplorer.btnClearAllMappingsClick(Sender: TObject);
var I: integer;
begin
Screen.Cursor := crhourglass;
try
for I := 0 to trvStates.Items.Count - 1 do
if (trvStates.Items[i].Level = 2) then
begin
// IUMLTransition(trvStates.Items[i].Data).SetTaggedValueAsString('DBMappings', 'TransitionMap', GetTagName(trvStates.Items[i].text), '');
trvStates.Items[i].Text := GetTagName(trvStates.Items[i].text);
end;
UpdateUsedTriggerCount;
trvStates.Repaint;
finally
Screen.Cursor := crdefault;
end;
end;
procedure TXSDExplorer.trvStatesCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
Sender.Canvas.Font.Size := 10;
Sender.Canvas.Font.Color:=clblack;
Sender.Canvas.Font.Style := [];
if node.Level = 0 then
begin
Sender.Canvas.Font.Style := [fsBold];
Sender.Canvas.Font.Color:=clMaroon;
end
else if Node.Level = 2 then
begin
//if IUMLTransition(Node.Data).GetTaggedValueAsString('DBMappings', 'TransitionMap', GetTagName(Node.text)) = '' then
//begin
// Sender.Canvas.Font.Color:=clGray;
//end
//else
// if assigned(ltvXSDs.Selected) then
// if IUMLTransition(Node.Data).GetTaggedValueAsString('DBMappings', 'TransitionMap', GetTagName(Node.text)) = ltvXSDs.Selected.Caption then
// begin
// Sender.Canvas.Font.Size := 12;
// Sender.Canvas.Font.Style := [fsBold];
// Sender.Canvas.Font.Color:=clBlue;
// end
// else
// if not assigned(ltvXSDs.FindCaption(0,IUMLTransition(Node.Data).GetTaggedValueAsString('DBMappings', 'TransitionMap', GetTagName(Node.text)),false,true,true)) then
// begin
// Sender.Canvas.Font.Color:=clred;
// end;
end;
end;
procedure TXSDExplorer.trvStatesDragDrop(Sender, Source: TObject; X,
Y: Integer);
var lNode: TTreeNode;
begin
if source = ltvXSDs then
begin
lNode := (Sender as TTreeView).GetNodeAt(X,Y);
if assigned(lNode) then
begin
if lNode.Level = 2 then
begin
// IUMLTransition(lNode.Data).SetTaggedValueAsString('DBMappings', 'TransitionMap', GetTagName(lNode.text), (source as TListView).Selected.Caption);
if GetTagName(lNode.text) = 'XSD In' then
lNode.Text := 'XSD In [' + (source as TListView).Selected.Caption + ']'
else
lNode.Text := 'XSD Out [' + (source as TListView).Selected.Caption + ']';
(Sender as TTreeView).Repaint;
end;
UpdateUsedTriggerCount;
end;
end;
end;
procedure TXSDExplorer.trvStatesDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if sender = ltvXSDs then
accept := true;
end;
end.
unit odbc_dsn_win;
{$mode delphi}
interface
Uses Windows, Classes, SysUtils, Registry;
procedure GetODBCDriversList(aODBCDriversList: TStrings);
procedure GetUserDSNList(aDSNList: TStrings);
procedure GetSystemDSNList(aDSNList: TStrings);
function GetDSNLastUser(aDSNName: String): String;
implementation
procedure GetODBCDriversList(aODBCDriversList: TStrings);
var
aStringlist : TStringlist;
aRegistry : TRegistry;
begin
aStringlist:= Tstringlist.Create;
try
aRegistry:= TRegistry.Create;
try
with aRegistry do
begin
rootkey:= HKEY_LOCAL_MACHINE;
OpenKey('Software\ODBC\ODBCINST.INI\ODBC Drivers',False);
GetValueNames(aStringlist);
end;
finally
aRegistry.Free;
end;
aStringlist.Sort;
aODBCDriversList.AddStrings(aStringlist);
finally
aStringlist.Free;
end;
end;
procedure GetUserDSNList(aDSNList: TStrings);
var
lStringList : TStringlist;
lRegistry : TRegistry;
Begin
lStringlist := TStringlist.Create;
try
lRegistry := Tregistry.Create;
try
With lRegistry do
begin
RootKey:=HKEY_CURRENT_USER;
if OpenKeyReadOnly('\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources')
then GetValueNames(lStringlist);
end;
finally
lRegistry.Free;
end;
lStringlist.Sort;
aDSNList.AddStrings(lStringlist);
finally
lStringlist.Free;
end;
end;
procedure GetSystemDSNList(aDSNList: TStrings);
var
lStringList : TStringlist;
lRegistry : TRegistry;
Begin
lStringlist := TStringlist.Create;
try
lRegistry := TRegistry.Create;
try
with lRegistry do
begin
RootKey := HKEY_LOCAL_MACHINE;
if OpenKeyReadOnly('\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources')
then GetValueNames(lStringlist);
end;
finally
lRegistry.Free;
end;
lStringlist.Sort;
aDSNList.AddStrings(lStringlist);
finally
lStringlist.Free;
end;
end;
function GetDSNLastUser(aDSNName: String): String;
var
lRegistry : TRegistry;
Begin
Result := '';
lRegistry := TRegistry.Create;
try
with lRegistry do
begin
RootKey := HKEY_LOCAL_MACHINE;
if OpenKeyReadOnly('\SOFTWARE\ODBC\ODBC.INI\' + aDSNName) then
begin
if ValueExists('LastUser') then Result := ReadString('LastUser');
end;
end;
finally
lRegistry.Free;
end;
lRegistry := Tregistry.Create;
try
With lRegistry do
begin
RootKey := HKEY_CURRENT_USER;
if OpenKeyReadOnly('\SOFTWARE\ODBC\ODBC.INI\' + aDSNName) then
begin
if ValueExists('LastUser') then Result := ReadString('LastUser');
end;
end;
finally
lRegistry.Free;
end;
end;
end.
object CadastroCasoDeUso: TCadastroCasoDeUso
Left = 0
Height = 401
Top = 0
Width = 761
BorderStyle = bsDialog
Caption = 'Cadastro de caso de uso'
ClientHeight = 401
ClientWidth = 761
Color = clBtnFace
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Position = poDesktopCenter
LCLVersion = '2.1.0.0'
object pnPrincipal: TPanel
Left = 8
Height = 252
Top = 9
Width = 743
BevelOuter = bvLowered
ClientHeight = 252
ClientWidth = 743
Color = 15658734
ParentColor = False
TabOrder = 0
object lblNome: TLabel
Left = 8
Height = 13
Top = 71
Width = 32
Caption = 'Nome'
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object lblCodigo: TLabel
Left = 8
Height = 13
Top = 6
Width = 38
Caption = 'Código'
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object lblDescricao: TLabel
Left = 8
Height = 13
Top = 114
Width = 55
Caption = 'Descrição'
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object lblEntidade: TLabel
Left = 8
Height = 13
Top = 205
Width = 49
Caption = 'Entidade'
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object lblCategoria: TLabel
Left = 8
Height = 13
Top = 159
Width = 55
Caption = 'Categoria'
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object lblValorCodigo: TLabel
Left = 8
Height = 13
Top = 24
Width = 47
Caption = '<código>'
Layout = tlCenter
ParentColor = False
end
object Label1: TLabel
Left = 304
Height = 13
Top = 6
Width = 62
Caption = 'Operações'
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object Label2: TLabel
Left = 437
Height = 13
Top = 6
Width = 51
Caption = 'Sistemas'
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object edtNome: TEdit
Left = 8
Height = 21
Top = 86
Width = 281
TabOrder = 0
end
object cbxEntidade: TComboBox
Left = 8
Height = 21
Top = 220
Width = 281
AutoDropDown = True
ItemHeight = 13
Sorted = True
Style = csDropDownList
TabOrder = 3
end
object cbxCategoria: TComboBox
Left = 8
Height = 21
Top = 176
Width = 281
AutoDropDown = True
ItemHeight = 13
Sorted = True
Style = csDropDownList
TabOrder = 2
end
object ltvSistema: TListView
Left = 434
Height = 220
Top = 21
Width = 299
Checkboxes = True
Columns = <
item
Caption = 'Sistemas'
Width = 10
end>
SortType = stText
TabOrder = 5
end
object ltvOperacao: TListView
Left = 302
Height = 220
Top = 21
Width = 123
Checkboxes = True
Columns = <
item
Caption = 'Operações'
Width = 10
end>
SortType = stText
TabOrder = 4
end
object edtDescricao: TEdit
Left = 8
Height = 21
Top = 129
Width = 281
TabOrder = 1
end
object GroupBox1: TGroupBox
Left = 209
Height = 71
Top = 6
Width = 73
Caption = 'Ícone'
ClientHeight = 53
ClientWidth = 69
TabOrder = 6
object Label5: TLabel
Left = 16
Height = 28
Top = 26
Width = 37
Alignment = taCenter
AutoSize = False
Caption = 'Clique Aqui'
Color = clBtnFace
Font.Color = clBlue
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsUnderline]
ParentColor = False
ParentFont = False
Transparent = False
WordWrap = True
end
object imgIcone: TImage
Cursor = crHandPoint
Left = 5
Height = 55
Top = 10
Width = 63
Center = True
OnClick = imgIconeClick
end
end
end
object Panel1: TPanel
Left = 220
Height = 56
Top = 267
Width = 531
ClientHeight = 56
ClientWidth = 531
TabOrder = 2
object Label3: TLabel
Left = 8
Height = 13
Top = 7
Width = 202
Caption = 'Destino para criação do caso de uso'
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object btnSelecionarDestino: TSpeedButton
Left = 391
Height = 25
Top = 21
Width = 128
Caption = 'Selecionar destino'
Glyph.Data = {
36050000424D3605000000000000360400002800000010000000100000000100
0800000000000001000000000000000000000001000000010000000000000000
0000000000000101010002020200030303000404040005050500070707000909
09000A0A0A000B0B0B000C0C0C000D0D0D0019130D0025190D00311F0D003C24
0D004E2D0C005F350B006E3C0A007A4209008A4908009A510700A8570500B25B
0400BA5F0300BF610300C3630200C6650200C9660200CA680500CC6B0900CE70
0F00D1741500D47A1D00D7812600DB893100E0913C00E2964300E4984700E59A
4A00E4984700E2964500E0924000DE8E3C00DC8B3800D7853300D37E2D00CD76
2700C1661D00B7581300AF4E0B00AC4A0900AB480800AB480800AB490800A947
0900A7450900A5430A00A2400A009F3E0B009E3C0B009D3B0C009C3B0C009B3B
0C009B3A0C009A390C0096380C0090350B0086320A007C2E0A00722B09006526
08005E2307005E230700602407006125080065260800682708006D290900732B
0A00782E0B007F310D00853410008C371500903B1E007B3C3E00643D62004F3D
8300413D9A00343EAE00293EBF00203ECF00193ED900143EE200103EE9000C3E
EF00093FF400083EF600073EF700063EF800063EF900063EF900063EF900073E
F900073FF800083FF700093FF6000A40F5000B41F3000D41F1000F42EE001244
EB001546E7001A48E2001F4BDB00264ED4002F52CA003958BF00465FB1004C62
AC005265A6005869A0005F6D9A00677193006F768D00777A8600808080008181
8100828282008383830084848400858585008686860087878700888888008989
89008A8A8A008B8B8B008C8C8C008D8D8D008E8E8E008F8F8F00909090009191
9100929292009393930094949400959595009696960097979700989898009999
99009A9A9A009B9B9B009C9C9C009D9D9D009E9E9E009F9F9F00A0A0A000A1A1
A100A2A2A200A3A3A300A4A4A400A5A5A500A6A6A600A7A7A700A8A8A800A9A9
A900AAAAAA00ABABAB00ACACAC00ADADAD00AEAEAE00AFAFAF00B0B0B000B1B1
B100B2B2B200B3B3B300B4B4B400B5B5B500B6B6B600B7B7B700B8B8B800B9B9
B900BABABA00BBBBBB00BCBCBC00BDBDBD00BEBEBE00BFBFBF00C0C0C000C1C1
C100C2C2C200C3C3C300C4C4C400C8C5C100CCC7BF00D0C8BE00D3C9BD00D5CA
BC00DACBB800DDCCB600DFCDB500E2CDB400E2C6B900E8AAC100F179D000F84D
DE00FC33E600FE24EC00FE18F200FE0CF800FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00E9E91EE9E9E9
4040404040E9E9E9E9E9E9E91E1E1E1F40CD292540E9E9E9E9E9E9E91EE9E9E9
4340424240E9E9E9E9E9E9E91EE9E9E9E9E9E9E9E9E9E9E9E9E9E9E91EE9E9E9
4040404040E9E9E9E9E9E9E91E1E1E1E40CD292540E9E9E9E9E9E9E91EE9E9E9
4340424240E9E9E9E9E9E9E91EE9E9E9E9E9E9E9E9E9E9E9E9E9E9E91EE9E9E9
4040404040E9E9E9E9E9E9E91E1E1E1E40CD292540E9E9E9E9E9E9E91EE9E9E9
4340424240E9E9E9E9E94040404040E9E9E9E9E9E902020202E940CD292540E9
E9E9E9E9E902E96602E94340424240E9E9E9E9E9E90266E966E9E9E9E9E9E9E9
E9E9E9E9E90202020266E9E9E9E9E9E9E9E9E9E9E9E9E9E9E966
}
OnClick = btnSelecionarDestinoClick
end
object edtPackage: TEdit
Left = 8
Height = 21
Top = 23
Width = 377
Color = 15461355
ReadOnly = True
TabOrder = 0
end
end
object Panel2: TPanel
Left = 8
Height = 56
Top = 267
Width = 206
ClientHeight = 56
ClientWidth = 206
TabOrder = 1
object Label4: TLabel
Left = 8
Height = 13
Top = 7
Width = 193
Caption = 'Nome no StarUML (case sensitive)'
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object edtUseCaseName: TEdit
Left = 8
Height = 21
Top = 23
Width = 190
TabOrder = 0
end
end
object Panel3: TPanel
Left = 8
Height = 64
Top = 329
Width = 743
ClientHeight = 64
ClientWidth = 743
TabOrder = 3
object btnSalvar: TSpeedButton
Left = 482
Height = 41
Top = 13
Width = 105
Caption = 'Salvar'
Glyph.Data = {
360C0000424D360C000000000000360000002800000020000000200000000100
180000000000000C0000120B0000120B00000000000000000000FF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF0066000066000066000066000066000066005B8D5AB5B3B3B5B3B3B5B3
B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B32D792D00660000
6600006600006600006600006600FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
006600008300008C00008C00008C00008C00007000367C36FAF6F3FDF9F6FDF9
F6FDF9F6FDF9F6FDF9F6F9F6F3F0EEECE7E5E4DEDDDDDEDDDD327E3200660000
6600006600007500008A00008300006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300297528FAF6F30066000066
00006600006600FAF6F3FDF9F6F9F6F3F0EEECE7E5E4DEDDDD37833600660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000073002A7629F6F0ED0066000066
00006600006600F3F0EDFBF7F4FDF9F7F8F4F2EFECEAE6E4E338843800660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000073002B772AEFE8E40066000066
00006600006600E9E6E4F5F2EFFCF8F5FDF9F6F6F3F0EDEBE93A863900660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000073002D782BE8DEDB0066000066
00006600006600DBD8D7ECE9E6F7F3F0FCF9F6FCF9F6F5F1EF3C883B00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300307A2DE0D4D10066000066
00006600006600C9C7C5DEDCDAEEEBE8F8F4F1FDF9F6FBF8F53E893C00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300327C2FDACCC90066000066
00006600006600B2B1B0CDCBCAE2DFDDF0EDEAF9F5F3FDF9F63F8B3E00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300357E30D6C6C30066000066
00006600006600A2A1A1B7B6B5D1CFCDE5E2E0F2EFECFAF7F43F8B3E00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300377F32D6C6C3C9BDBABDB4
B2B2ADACA9A6A6A3A2A1A3A3A3BCBBBAD5D3D1E8E4E2F4F0EE3E8A3D00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000099000099000099000099000099
0000990000990000990000990000990000990000990000990000990000990000
9900009900009900009800008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000099000099000099000099000099
0000990000990000990000990000990000990000990000990000990000990000
9900009900009900009900008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009300008C00018E01049408079B0F0AA0140CA4180DA61A0DA6
1A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0D
A61A0DA61A0AA213009900008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00008000006600036B051187211EA13C29B65130C56133CB6733CB
6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733
CB6733CB6726BF4D009900008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
0066000083000079003B863AFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BB4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF006600006600317D31C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2
C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3
C2C2D6BCBB26B24D006600006600FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
}
OnClick = btnSalvarClick
end
object SpeedButton1: TSpeedButton
Left = 626
Height = 41
Top = 13
Width = 97
Caption = 'Cancelar'
Glyph.Data = {
360C0000424D360C000000000000360000002800000020000000200000000100
180000000000000C0000120B0000120B00000000000000000000FF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FF0732DE0732DEFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FF0732DE0732DE0732DE0732DEFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FF0732DE0732DE0732DE0732DE0732DEFF00FFFF00FFFF00FF
0533EC0533EBFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FF0732DE0732DE0732DE0732DE0732DEFF00FFFF00FFFF00FF0534EE
0534ED0533EC0533EBFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FF0732DE0732DE0732DE0732DE0732DEFF00FFFF00FFFF00FFFF00FF0534EF
0534EE0534ED0533EC0533EBFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF07
32DE0732DE0732DE0732DE0732DEFF00FFFF00FFFF00FFFF00FFFF00FF0534F0
0534EF0534EE0534ED0533EC0533ECFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0732DE07
32DE0732DE0732DE0732DEFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
0534F00534EF0534EE0534EE0534ED0533ECFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0732E00732DF07
32DF0732DE0732DEFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF0434F00534EF0534EF0534EE0534ED0533ECFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0632E20732E10732E007
32E00732DFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FF0434F00534F00534EF0534EE0534ED0533ECFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0633E40633E30632E20732E207
32E1FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FF0434F00534F00534EF0534EE0534ED0533ECFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FF0633E60633E50633E40633E30632E3FF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FF0434F10534F00534EF0534EE0534EE0534EDFF00
FFFF00FFFF00FFFF00FFFF00FF0633E80633E70633E60633E50633E4FF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F00534EF0534EF0534EE0534
EDFF00FFFF00FFFF00FF0533EA0633E90633E80633E70633E60633E5FF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F00534F00534EF0534
EE0534EDFF00FF0533EB0533EB0533EA0533E90633E80633E7FF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F10534F00534
EF0534EE0534ED0533EC0533EC0533EB0533EA0533E9FF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F10534
F00534EF0534EE0534EE0534ED0533EC0533EBFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434
F10434F00534EF0534EF0534EE0534EDFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F30434
F20434F10434F00534F00534EF0534EEFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F50434F40434
F30434F20434F10434F10534F00534EF0534EEFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0435F70434F60434F50434
F40434F30434F2FF00FF0434F10534F00534EF0534EEFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0335F90335F80435F70434F60434
F50434F4FF00FFFF00FFFF00FF0434F10434F00534EF0534EEFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FF0335FA0335FA0335F90335F80435F70434
F6FF00FFFF00FFFF00FFFF00FFFF00FF0434F10434F00534F00534EFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FF0335FB0335FB0335FB0335FA0335F90335F8FF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F10434F10534F00534EFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FF0335FB0335FB0335FB0335FB0335FB0335FAFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F10434F10534F005
34EFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FF0335FB0335FB0335FB0335FB0335FB0335FBFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F105
34F00534EFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF0335FB0335FB0335FB0335FB0335FB0335FBFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF04
34F10434F00534EFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
0335FB0335FB0335FB0335FB0335FB0335FB0335FBFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FF0434F10434F00534F0FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0335FB
0335FB0335FB0335FB0335FB0335FB0335FBFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FF0434F10434F10534F0FF00FFFF00FFFF00FFFF00FF0335FB0335FB
0335FB0335FB0335FB0335FB0335FBFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FF0434F1FF00FFFF00FFFF00FFFF00FFFF00FF0335FB0335FB
0335FB0335FB0335FB0335FBFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0335FB0335FB
0335FB0335FB0335FBFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0335FB
0335FB0335FBFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
}
OnClick = SpeedButton1Click
end
end
end
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TCadastroCasoDeUso','FORMDATA',[
'TPF0'#18'TCadastroCasoDeUso'#17'CadastroCasoDeUso'#4'Left'#2#0#6'Height'#3
+#145#1#3'Top'#2#0#5'Width'#3#249#2#11'BorderStyle'#7#8'bsDialog'#7'Caption'#6
+#23'Cadastro de caso de uso'#12'ClientHeight'#3#145#1#11'ClientWidth'#3#249#2
+#5'Color'#7#9'clBtnFace'#10'Font.Color'#7#12'clWindowText'#11'Font.Height'#2
+#245#9'Font.Name'#6#6'Tahoma'#8'Position'#7#15'poDesktopCenter'#10'LCLVersio'
+'n'#6#7'2.1.0.0'#0#6'TPanel'#11'pnPrincipal'#4'Left'#2#8#6'Height'#3#252#0#3
+'Top'#2#9#5'Width'#3#231#2#10'BevelOuter'#7#9'bvLowered'#12'ClientHeight'#3
+#252#0#11'ClientWidth'#3#231#2#5'Color'#4#238#238#238#0#11'ParentColor'#8#8
+'TabOrder'#2#0#0#6'TLabel'#7'lblNome'#4'Left'#2#8#6'Height'#2#13#3'Top'#2'G'
+#5'Width'#2' '#7'Caption'#6#4'Nome'#10'Font.Color'#7#12'clWindowText'#11'Fon'
+'t.Height'#2#245#9'Font.Name'#6#6'Tahoma'#10'Font.Style'#11#6'fsBold'#0#11'P'
+'arentColor'#8#10'ParentFont'#8#0#0#6'TLabel'#9'lblCodigo'#4'Left'#2#8#6'Hei'
+'ght'#2#13#3'Top'#2#6#5'Width'#2'&'#7'Caption'#6#7'C'#195#179'digo'#10'Font.'
+'Color'#7#12'clWindowText'#11'Font.Height'#2#245#9'Font.Name'#6#6'Tahoma'#10
+'Font.Style'#11#6'fsBold'#0#11'ParentColor'#8#10'ParentFont'#8#0#0#6'TLabel'
+#12'lblDescricao'#4'Left'#2#8#6'Height'#2#13#3'Top'#2'r'#5'Width'#2'7'#7'Cap'
+'tion'#6#11'Descri'#195#167#195#163'o'#10'Font.Color'#7#12'clWindowText'#11
+'Font.Height'#2#245#9'Font.Name'#6#6'Tahoma'#10'Font.Style'#11#6'fsBold'#0#11
+'ParentColor'#8#10'ParentFont'#8#0#0#6'TLabel'#11'lblEntidade'#4'Left'#2#8#6
+'Height'#2#13#3'Top'#3#205#0#5'Width'#2'1'#7'Caption'#6#8'Entidade'#10'Font.'
+'Color'#7#12'clWindowText'#11'Font.Height'#2#245#9'Font.Name'#6#6'Tahoma'#10
+'Font.Style'#11#6'fsBold'#0#11'ParentColor'#8#10'ParentFont'#8#0#0#6'TLabel'
+#12'lblCategoria'#4'Left'#2#8#6'Height'#2#13#3'Top'#3#159#0#5'Width'#2'7'#7
+'Caption'#6#9'Categoria'#10'Font.Color'#7#12'clWindowText'#11'Font.Height'#2
+#245#9'Font.Name'#6#6'Tahoma'#10'Font.Style'#11#6'fsBold'#0#11'ParentColor'#8
+#10'ParentFont'#8#0#0#6'TLabel'#14'lblValorCodigo'#4'Left'#2#8#6'Height'#2#13
+#3'Top'#2#24#5'Width'#2'/'#7'Caption'#6#9'<c'#195#179'digo>'#6'Layout'#7#8't'
+'lCenter'#11'ParentColor'#8#0#0#6'TLabel'#6'Label1'#4'Left'#3'0'#1#6'Height'
+#2#13#3'Top'#2#6#5'Width'#2'>'#7'Caption'#6#11'Opera'#195#167#195#181'es'#10
+'Font.Color'#7#12'clWindowText'#11'Font.Height'#2#245#9'Font.Name'#6#13'MS S'
+'ans Serif'#10'Font.Style'#11#6'fsBold'#0#11'ParentColor'#8#10'ParentFont'#8
+#0#0#6'TLabel'#6'Label2'#4'Left'#3#181#1#6'Height'#2#13#3'Top'#2#6#5'Width'#2
+'3'#7'Caption'#6#8'Sistemas'#10'Font.Color'#7#12'clWindowText'#11'Font.Heigh'
+'t'#2#245#9'Font.Name'#6#13'MS Sans Serif'#10'Font.Style'#11#6'fsBold'#0#11
+'ParentColor'#8#10'ParentFont'#8#0#0#5'TEdit'#7'edtNome'#4'Left'#2#8#6'Heigh'
+'t'#2#21#3'Top'#2'V'#5'Width'#3#25#1#8'TabOrder'#2#0#0#0#9'TComboBox'#11'cbx'
+'Entidade'#4'Left'#2#8#6'Height'#2#21#3'Top'#3#220#0#5'Width'#3#25#1#12'Auto'
+'DropDown'#9#10'ItemHeight'#2#13#6'Sorted'#9#5'Style'#7#14'csDropDownList'#8
+'TabOrder'#2#3#0#0#9'TComboBox'#12'cbxCategoria'#4'Left'#2#8#6'Height'#2#21#3
+'Top'#3#176#0#5'Width'#3#25#1#12'AutoDropDown'#9#10'ItemHeight'#2#13#6'Sorte'
+'d'#9#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#2#0#0#9'TListView'#10'ltvS'
+'istema'#4'Left'#3#178#1#6'Height'#3#220#0#3'Top'#2#21#5'Width'#3'+'#1#10'Ch'
+'eckboxes'#9#7'Columns'#14#1#7'Caption'#6#8'Sistemas'#5'Width'#2#10#0#0#8'So'
+'rtType'#7#6'stText'#8'TabOrder'#2#5#0#0#9'TListView'#11'ltvOperacao'#4'Left'
+#3'.'#1#6'Height'#3#220#0#3'Top'#2#21#5'Width'#2'{'#10'Checkboxes'#9#7'Colum'
+'ns'#14#1#7'Caption'#6#11'Opera'#195#167#195#181'es'#5'Width'#2#10#0#0#8'Sor'
+'tType'#7#6'stText'#8'TabOrder'#2#4#0#0#5'TEdit'#12'edtDescricao'#4'Left'#2#8
+#6'Height'#2#21#3'Top'#3#129#0#5'Width'#3#25#1#8'TabOrder'#2#1#0#0#9'TGroupB'
+'ox'#9'GroupBox1'#4'Left'#3#209#0#6'Height'#2'G'#3'Top'#2#6#5'Width'#2'I'#7
+'Caption'#6#6#195#141'cone'#12'ClientHeight'#2'5'#11'ClientWidth'#2'E'#8'Tab'
+'Order'#2#6#0#6'TLabel'#6'Label5'#4'Left'#2#16#6'Height'#2#28#3'Top'#2#26#5
+'Width'#2'%'#9'Alignment'#7#8'taCenter'#8'AutoSize'#8#7'Caption'#6#11'Clique'
+' Aqui'#5'Color'#7#9'clBtnFace'#10'Font.Color'#7#6'clBlue'#11'Font.Height'#2
+#245#9'Font.Name'#6#6'Tahoma'#10'Font.Style'#11#11'fsUnderline'#0#11'ParentC'
+'olor'#8#10'ParentFont'#8#11'Transparent'#8#8'WordWrap'#9#0#0#6'TImage'#8'im'
+'gIcone'#6'Cursor'#7#11'crHandPoint'#4'Left'#2#5#6'Height'#2'7'#3'Top'#2#10#5
+'Width'#2'?'#6'Center'#9#7'OnClick'#7#13'imgIconeClick'#0#0#0#0#6'TPanel'#6
+'Panel1'#4'Left'#3#220#0#6'Height'#2'8'#3'Top'#3#11#1#5'Width'#3#19#2#12'Cli'
+'entHeight'#2'8'#11'ClientWidth'#3#19#2#8'TabOrder'#2#2#0#6'TLabel'#6'Label3'
+#4'Left'#2#8#6'Height'#2#13#3'Top'#2#7#5'Width'#3#202#0#7'Caption'#6'%Destin'
+'o para cria'#195#167#195#163'o do caso de uso'#10'Font.Color'#7#12'clWindow'
+'Text'#11'Font.Height'#2#245#9'Font.Name'#6#6'Tahoma'#10'Font.Style'#11#6'fs'
+'Bold'#0#11'ParentColor'#8#10'ParentFont'#8#0#0#12'TSpeedButton'#20'btnSelec'
+'ionarDestino'#4'Left'#3#135#1#6'Height'#2#25#3'Top'#2#21#5'Width'#3#128#0#7
,'Caption'#6#18'Selecionar destino'#10'Glyph.Data'#10':'#5#0#0'6'#5#0#0'BM6'#5
+#0#0#0#0#0#0'6'#4#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0#8#0#0#0#0#0#0#1#0#0#0#0
+#0#0#0#0#0#0#0#1#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#1#1#0#2#2#2#0#3#3#3#0
+#4#4#4#0#5#5#5#0#7#7#7#0#9#9#9#0#10#10#10#0#11#11#11#0#12#12#12#0#13#13#13#0
+#25#19#13#0'%'#25#13#0'1'#31#13#0'<$'#13#0'N-'#12#0'_5'#11#0'n<'#10#0'zB'#9#0
+#138'I'#8#0#154'Q'#7#0#168'W'#5#0#178'['#4#0#186'_'#3#0#191'a'#3#0#195'c'#2#0
+#198'e'#2#0#201'f'#2#0#202'h'#5#0#204'k'#9#0#206'p'#15#0#209't'#21#0#212'z'
+#29#0#215#129'&'#0#219#137'1'#0#224#145'<'#0#226#150'C'#0#228#152'G'#0#229
+#154'J'#0#228#152'G'#0#226#150'E'#0#224#146'@'#0#222#142'<'#0#220#139'8'#0
+#215#133'3'#0#211'~-'#0#205'v'''#0#193'f'#29#0#183'X'#19#0#175'N'#11#0#172'J'
+#9#0#171'H'#8#0#171'H'#8#0#171'I'#8#0#169'G'#9#0#167'E'#9#0#165'C'#10#0#162
+'@'#10#0#159'>'#11#0#158'<'#11#0#157';'#12#0#156';'#12#0#155';'#12#0#155':'
+#12#0#154'9'#12#0#150'8'#12#0#144'5'#11#0#134'2'#10#0'|.'#10#0'r+'#9#0'e&'#8
+#0'^#'#7#0'^#'#7#0'`$'#7#0'a%'#8#0'e&'#8#0'h'''#8#0'm)'#9#0's+'#10#0'x.'#11#0
+#127'1'#13#0#133'4'#16#0#140'7'#21#0#144';'#30#0'{<>'#0'd=b'#0'O='#131#0'A='
+#154#0'4>'#174#0')>'#191#0' >'#207#0#25'>'#217#0#20'>'#226#0#16'>'#233#0#12
+'>'#239#0#9'?'#244#0#8'>'#246#0#7'>'#247#0#6'>'#248#0#6'>'#249#0#6'>'#249#0#6
+'>'#249#0#7'>'#249#0#7'?'#248#0#8'?'#247#0#9'?'#246#0#10'@'#245#0#11'A'#243#0
+#13'A'#241#0#15'B'#238#0#18'D'#235#0#21'F'#231#0#26'H'#226#0#31'K'#219#0'&N'
+#212#0'/R'#202#0'9X'#191#0'F_'#177#0'Lb'#172#0'Re'#166#0'Xi'#160#0'_m'#154#0
+'gq'#147#0'ov'#141#0'wz'#134#0#128#128#128#0#129#129#129#0#130#130#130#0#131
+#131#131#0#132#132#132#0#133#133#133#0#134#134#134#0#135#135#135#0#136#136
+#136#0#137#137#137#0#138#138#138#0#139#139#139#0#140#140#140#0#141#141#141#0
+#142#142#142#0#143#143#143#0#144#144#144#0#145#145#145#0#146#146#146#0#147
+#147#147#0#148#148#148#0#149#149#149#0#150#150#150#0#151#151#151#0#152#152
+#152#0#153#153#153#0#154#154#154#0#155#155#155#0#156#156#156#0#157#157#157#0
+#158#158#158#0#159#159#159#0#160#160#160#0#161#161#161#0#162#162#162#0#163
+#163#163#0#164#164#164#0#165#165#165#0#166#166#166#0#167#167#167#0#168#168
+#168#0#169#169#169#0#170#170#170#0#171#171#171#0#172#172#172#0#173#173#173#0
+#174#174#174#0#175#175#175#0#176#176#176#0#177#177#177#0#178#178#178#0#179
+#179#179#0#180#180#180#0#181#181#181#0#182#182#182#0#183#183#183#0#184#184
+#184#0#185#185#185#0#186#186#186#0#187#187#187#0#188#188#188#0#189#189#189#0
+#190#190#190#0#191#191#191#0#192#192#192#0#193#193#193#0#194#194#194#0#195
+#195#195#0#196#196#196#0#200#197#193#0#204#199#191#0#208#200#190#0#211#201
+#189#0#213#202#188#0#218#203#184#0#221#204#182#0#223#205#181#0#226#205#180#0
+#226#198#185#0#232#170#193#0#241'y'#208#0#248'M'#222#0#252'3'#230#0#254'$'
+#236#0#254#24#242#0#254#12#248#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0
+#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254
+#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0
+#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254
+#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0
+#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254
+#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0#254#0
+#254#0#254#0#233#233#30#233#233#233'@@@@@'#233#233#233#233#233#233#233#30#30
+#30#31'@'#205')%@'#233#233#233#233#233#233#233#30#233#233#233'C@BB@'#233#233
+#233#233#233#233#233#30#233#233#233#233#233#233#233#233#233#233#233#233#233
+#233#233#30#233#233#233'@@@@@'#233#233#233#233#233#233#233#30#30#30#30'@'#205
+')%@'#233#233#233#233#233#233#233#30#233#233#233'C@BB@'#233#233#233#233#233
+#233#233#30#233#233#233#233#233#233#233#233#233#233#233#233#233#233#233#30
+#233#233#233'@@@@@'#233#233#233#233#233#233#233#30#30#30#30'@'#205')%@'#233
+#233#233#233#233#233#233#30#233#233#233'C@BB@'#233#233#233#233#233'@@@@@'#233
+#233#233#233#233#233#2#2#2#2#233'@'#205')%@'#233#233#233#233#233#233#2#233'f'
+#2#233'C@BB@'#233#233#233#233#233#233#2'f'#233'f'#233#233#233#233#233#233#233
+#233#233#233#233#233#2#2#2#2'f'#233#233#233#233#233#233#233#233#233#233#233
+#233#233#233#233'f'#7'OnClick'#7#25'btnSelecionarDestinoClick'#0#0#5'TEdit'
+#10'edtPackage'#4'Left'#2#8#6'Height'#2#21#3'Top'#2#23#5'Width'#3'y'#1#5'Col'
+'or'#4#235#235#235#0#8'ReadOnly'#9#8'TabOrder'#2#0#0#0#0#6'TPanel'#6'Panel2'
+#4'Left'#2#8#6'Height'#2'8'#3'Top'#3#11#1#5'Width'#3#206#0#12'ClientHeight'#2
+'8'#11'ClientWidth'#3#206#0#8'TabOrder'#2#1#0#6'TLabel'#6'Label4'#4'Left'#2#8
+#6'Height'#2#13#3'Top'#2#7#5'Width'#3#193#0#7'Caption'#6' Nome no StarUML (c'
+'ase sensitive)'#10'Font.Color'#7#12'clWindowText'#11'Font.Height'#2#245#9'F'
+'ont.Name'#6#6'Tahoma'#10'Font.Style'#11#6'fsBold'#0#11'ParentColor'#8#10'Pa'
+'rentFont'#8#0#0#5'TEdit'#14'edtUseCaseName'#4'Left'#2#8#6'Height'#2#21#3'To'
+'p'#2#23#5'Width'#3#190#0#8'TabOrder'#2#0#0#0#0#6'TPanel'#6'Panel3'#4'Left'#2
,#8#6'Height'#2'@'#3'Top'#3'I'#1#5'Width'#3#231#2#12'ClientHeight'#2'@'#11'Cl'
+'ientWidth'#3#231#2#8'TabOrder'#2#3#0#12'TSpeedButton'#9'btnSalvar'#4'Left'#3
+#226#1#6'Height'#2')'#3'Top'#2#13#5'Width'#2'i'#7'Caption'#6#6'Salvar'#10'Gl'
+'yph.Data'#10':'#12#0#0'6'#12#0#0'BM6'#12#0#0#0#0#0#0'6'#0#0#0'('#0#0#0' '#0
+#0#0' '#0#0#0#1#0#24#0#0#0#0#0#0#12#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0
+#0'f'#0#0'f'#0#0'f'#0#0'f'#0#0'f'#0'['#141'Z'#181#179#179#181#179#179#181#179
+#179#181#179#179#181#179#179#181#179#179#181#179#179#181#179#179#181#179#179
+#181#179#179#181#179#179'-y-'#0'f'#0#0'f'#0#0'f'#0#0'f'#0#0'f'#0#0'f'#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#131#0#0#140#0
+#0#140#0#0#140#0#0#140#0#0'p'#0'6|6'#250#246#243#253#249#246#253#249#246#253
+#249#246#253#249#246#253#249#246#249#246#243#240#238#236#231#229#228#222#221
+#221#222#221#221'2~2'#0'f'#0#0'f'#0#0'f'#0#0'u'#0#0#138#0#0#131#0#0'f'#0#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0
+#0#153#0#0#153#0#0's'#0')u('#250#246#243#0'f'#0#0'f'#0#0'f'#0#0'f'#0#250#246
+#243#253#249#246#249#246#243#240#238#236#231#229#228#222#221#221'7'#131'6'#0
+'f'#0#0'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0's'
+#0'*v)'#246#240#237#0'f'#0#0'f'#0#0'f'#0#0'f'#0#243#240#237#251#247#244#253
+#249#247#248#244#242#239#236#234#230#228#227'8'#132'8'#0'f'#0#0'f'#0#0'f'#0#0
+'z'#0#0#151#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0's'#0'+w*'#239#232#228#0
+'f'#0#0'f'#0#0'f'#0#0'f'#0#233#230#228#245#242#239#252#248#245#253#249#246
+#246#243#240#237#235#233':'#134'9'#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0#151#0#0#140
+#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0
+#153#0#0#153#0#0#153#0#0#153#0#0's'#0'-x+'#232#222#219#0'f'#0#0'f'#0#0'f'#0#0
+'f'#0#219#216#215#236#233#230#247#243#240#252#249#246#252#249#246#245#241#239
+'<'#136';'#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0
+#153#0#0's'#0'0z-'#224#212#209#0'f'#0#0'f'#0#0'f'#0#0'f'#0#201#199#197#222
+#220#218#238#235#232#248#244#241#253#249#246#251#248#245'>'#137'<'#0'f'#0#0
+'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0's'#0'2|/'
+#218#204#201#0'f'#0#0'f'#0#0'f'#0#0'f'#0#178#177#176#205#203#202#226#223#221
+#240#237#234#249#245#243#253#249#246'?'#139'>'#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0
+#151#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'
+#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0's'#0'5~0'#214#198#195#0'f'#0#0
+'f'#0#0'f'#0#0'f'#0#162#161#161#183#182#181#209#207#205#229#226#224#242#239
+#236#250#247#244'?'#139'>'#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0
+#153#0#0#153#0#0#153#0#0's'#0'7'#127'2'#214#198#195#201#189#186#189#180#178
+#178#173#172#169#166#166#163#162#161#163#163#163#188#187#186#213#211#209#232
+#228#226#244#240#238'>'#138'='#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0
+'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153
+#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0
+#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153
+#0#0#153#0#0#153#0#0#152#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0
+#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0
+#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#140#0#0'f'#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#147#0#0
+#140#0#1#142#1#4#148#8#7#155#15#10#160#20#12#164#24#13#166#26#13#166#26#13
+#166#26#13#166#26#13#166#26#13#166#26#13#166#26#13#166#26#13#166#26#13#166#26
+#13#166#26#13#166#26#13#166#26#13#166#26#10#162#19#0#153#0#0#140#0#0'f'#0#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0#0'f'#0
+#3'k'#5#17#135'!'#30#161'<)'#182'Q0'#197'a3'#203'g3'#203'g3'#203'g3'#203'g3'
,#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'#203
+'g&'#191'M'#0#153#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'
+#137'='#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0
+'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128
+#0'?'#137'='#250#243#242#250#243#242#250#243#242#192#192#192#192#192#192#192
+#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192
+#192#192#192#192#192#192#192#192#192#192#192#192#192#250#243#242#250#243#242
+#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0
+#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0
+#128#0'?'#137'='#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250#243
+#242#250#243#242#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192
+#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192
+#192#192#192#192#192#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0
+'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0
+#0#128#0'?'#137'='#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153
+#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0
+#140#0#0#128#0'?'#137'='#250#243#242#250#243#242#250#243#242#192#192#192#192
+#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192
+#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#250#243#242
+#250#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242'&'#191'M'#0
+#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0
+#0#140#0#0#128#0'?'#137'='#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#131#0#0'y'#0';'#134':'#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242'&'#187
+'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#0'f'#0#0'f'#0'1}1'#195#194#194#195#194#194#195#194#194#195#194#194
+#195#194#194#195#194#194#195#194#194#195#194#194#195#194#194#195#194#194#195
+#194#194#195#194#194#195#194#194#195#194#194#195#194#194#195#194#194#195#194
,#194#195#194#194#214#188#187'&'#178'M'#0'f'#0#0'f'#0#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7'OnClick'#7#14'btnSa'
+'lvarClick'#0#0#12'TSpeedButton'#12'SpeedButton1'#4'Left'#3'r'#2#6'Height'#2
+')'#3'Top'#2#13#5'Width'#2'a'#7'Caption'#6#8'Cancelar'#10'Glyph.Data'#10':'
+#12#0#0'6'#12#0#0'BM6'#12#0#0#0#0#0#0'6'#0#0#0'('#0#0#0' '#0#0#0' '#0#0#0#1#0
+#24#0#0#0#0#0#0#12#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#7'2'#222#7'2'#222#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7'2'#222#7'2'#222#7'2'#222
+#7'2'#222#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7'2'#222#7'2'#222#7'2'
+#222#7'2'#222#7'2'#222#255#0#255#255#0#255#255#0#255#5'3'#236#5'3'#235#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7'2'#222#7'2'#222#7'2'
+#222#7'2'#222#7'2'#222#255#0#255#255#0#255#255#0#255#5'4'#238#5'4'#237#5'3'
+#236#5'3'#235#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7'2'#222#7'2'#222#7'2'#222
+#7'2'#222#7'2'#222#255#0#255#255#0#255#255#0#255#255#0#255#5'4'#239#5'4'#238
+#5'4'#237#5'3'#236#5'3'#235#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#7'2'#222#7'2'#222#7'2'#222#7'2'
+#222#7'2'#222#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#5'4'#240#5'4'
+#239#5'4'#238#5'4'#237#5'3'#236#5'3'#236#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#7'2'#222#7'2'#222#7'2'#222#7'2'#222
+#7'2'#222#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#5'4'#240#5'4'#239#5'4'#238#5'4'#238#5'4'#237#5'3'#236#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#7'2'#224#7'2'#223#7'2'#223#7'2'#222
+#7'2'#222#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#4'4'#240#5'4'#239#5'4'#239#5'4'#238#5'4'#237#5'3'
+#236#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#6'2'#226#7'2'#225#7'2'#224#7'2'#224
+#7'2'#223#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#4'4'#240#5'4'#240#5'4'#239#5'4'
+#238#5'4'#237#5'3'#236#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#6'3'#228#6'3'#227#6'2'#226#7'2'#226#7'2'
+#225#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#4'4'#240#5'4'
+#240#5'4'#239#5'4'#238#5'4'#237#5'3'#236#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#6'3'#230#6'3'#229#6'3'#228#6'3'#227#6'2'
+#227#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#4'4'#241#5'4'#240#5'4'#239#5'4'#238#5'4'#238#5'4'#237#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#6'3'#232#6'3'#231#6'3'#230#6'3'#229#6'3'
+#228#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
,#255#255#0#255#255#0#255#255#0#255#4'4'#240#5'4'#239#5'4'#239#5'4'#238#5'4'
+#237#255#0#255#255#0#255#255#0#255#5'3'#234#6'3'#233#6'3'#232#6'3'#231#6'3'
+#230#6'3'#229#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#4'4'#240#5'4'#240#5'4'#239
+#5'4'#238#5'4'#237#255#0#255#5'3'#235#5'3'#235#5'3'#234#5'3'#233#6'3'#232#6
+'3'#231#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#4'4'#241#5
+'4'#240#5'4'#239#5'4'#238#5'4'#237#5'3'#236#5'3'#236#5'3'#235#5'3'#234#5'3'
+#233#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#4'4'#241#5'4'#240#5'4'#239#5'4'#238#5'4'#238#5'4'#237#5'3'#236#5
+'3'#235#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#4'4'#241#4'4'#240#5'4'#239#5'4'#239#5'4'#238#5
+'4'#237#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#4'4'#243#4'4'#242#4'4'#241#4'4'#240#5'4'#240#5
+'4'#239#5'4'#238#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#4'4'#245#4'4'#244#4'4'#243#4'4'#242#4'4'#241#4
+'4'#241#5'4'#240#5'4'#239#5'4'#238#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#4'5'#247#4'4'#246#4'4'#245#4'4'#244#4'4'#243#4
+'4'#242#255#0#255#4'4'#241#5'4'#240#5'4'#239#5'4'#238#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#3'5'#249#3'5'#248#4'5'#247#4'4'#246#4'4'#245#4'4'
+#244#255#0#255#255#0#255#255#0#255#4'4'#241#4'4'#240#5'4'#239#5'4'#238#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#3'5'#250#3'5'#250#3'5'#249#3'5'#248#4'5'#247#4'4'
+#246#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#4'4'#241#4'4'#240#5'4'
+#240#5'4'#239#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#3'5'#251#3'5'#251#3'5'#251#3'5'#250#3'5'#249#3'5'#248
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#4'4'
+#241#4'4'#241#5'4'#240#5'4'#239#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#250
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#4'4'#241#4'4'#241#5'4'#240#5'4'#239#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#4'4'#241#5'4'#240#5'4'#239#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#4'4'#241#4
+'4'#240#5'4'#239#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3
+'5'#251#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#4'4'#241#4'4'#240#5'4'#240#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
,#255#0#255#255#0#255#4'4'#241#4'4'#241#5'4'#240#255#0#255#255#0#255#255#0#255
+#255#0#255#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#4'4'#241#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#3'5'#251#3'5'#251#3'5'#251#3'5'#251#3'5'#251
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#3'5'#251#3'5'#251#3'5'
+#251#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7'OnClick'#7#17
+'SpeedButton1Click'#0#0#0#0
]);
unit uCadastroCasoDeUso;
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
interface
uses
{$IFnDEF FPC}
Windows,
{$ELSE}
LCLIntf, LCLType, LMessages,
{$ENDIF}
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls, utuMessage, uCadastroCasoDeUsoIcones, acuObject, cxuCadastroCasoDeUso,
Buttons, cxuSession;
type
TCadastroCasoDeUso = class(TForm)
pnPrincipal: TPanel;
lblNome: TLabel;
lblCodigo: TLabel;
lblDescricao: TLabel;
lblEntidade: TLabel;
lblCategoria: TLabel;
lblValorCodigo: TLabel;
Label1: TLabel;
Label2: TLabel;
edtNome: TEdit;
cbxEntidade: TComboBox;
cbxCategoria: TComboBox;
ltvSistema: TListView;
ltvOperacao: TListView;
edtDescricao: TEdit;
GroupBox1: TGroupBox;
imgIcone: TImage;
Panel1: TPanel;
edtPackage: TEdit;
Label3: TLabel;
btnSelecionarDestino: TSpeedButton;
Panel2: TPanel;
edtUseCaseName: TEdit;
Label4: TLabel;
Panel3: TPanel;
btnSalvar: TSpeedButton;
SpeedButton1: TSpeedButton;
Label5: TLabel;
procedure imgIconeClick(Sender: TObject);
procedure btnSelecionarDestinoClick(Sender: TObject);
procedure btnSalvarClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
FOID: integer;
// fUMLUseCase: IUMLUseCase;
fFormIcones: TCadastroCasoDeUsoIcones;
fcxCadastroCasoDeUso: cxCadatroCasoDeUso;
// fUseCasePackage: IUMLPackage;
procedure SaveFromInterface(piField: utField);
procedure SendToInterface(piField: utField);
procedure SalvaObjeto;
// procedure SetUseCasePackage(const Value: IUMLPackage);
procedure Initialize;
{ Private declarations }
public
{ Public declarations }
// FStarUMLAPP: IStarUMLApplication;
Constructor Create(Sender: TComponent; piConnectionString: string); reintroduce; overload;
Constructor Create(Sender: TComponent; piSession: cxSession); reintroduce; overload;
// property UseCasePackage: IUMLPackage read fUseCasePackage write SetUseCasePackage;
// property GetUseCase: IUMLUseCase read fUMLUseCase;
end;
var
CadastroCasoDeUso: TCadastroCasoDeUso;
implementation
uses IntegracaoDelphiSUML;
{$R *.dfm}
constructor TCadastroCasoDeUso.Create(Sender: TComponent; piConnectionString: string);
begin
inherited Create(sender);
// fUseCasePackage := nil;
// fUMLUseCase := piUseCase;
fFormIcones := TCadastroCasoDeUsoIcones.Create(self);
fcxCadastroCasoDeUso := cxCadatroCasoDeUso.Create(piConnectionString);
self.Initialize;
end;
constructor TCadastroCasoDeUso.Create(Sender: TComponent; piSession: cxSession);
begin
inherited Create(sender);
// fUseCasePackage := nil;
// fUMLUseCase := piUseCase;
fFormIcones := TCadastroCasoDeUsoIcones.Create(self);
fcxCadastroCasoDeUso := cxCadatroCasoDeUso.Create(piSession);
self.Initialize;
end;
procedure TCadastroCasoDeUso.imgIconeClick(Sender: TObject);
begin
if fFormIcones.ShowModal = mrOk then
if assigned(fFormIcones.ltvIcones.Selected) then
begin
fFormIcones.imgListaIcone.GetBitmap(fFormIcones.ltvIcones.Selected.ImageIndex, imgIcone.Picture.Bitmap);
imgIcone.Refresh;
end;
end;
procedure TCadastroCasoDeUso.Initialize;
var lField, lResponseField: utField;
lUseCaseCode: string;
begin
//Retorna do caso de uso os atributos da classe
lResponseField := utField.Create;
try
lField := utField.Create;
fcxCadastroCasoDeUso.rmObtemContexto(lField, lResponseField);
SendToInterface(lResponseField);
finally
lResponseField.free;
end;
//if assigned(fUMLUseCase) then
//begin
// lField := utField.Create;
// lUseCaseCode := fUMLUseCase.GetTaggedValueAsString('DBMappings', 'DBUseCaseMap', 'Code');
// lField.AddField('CODIGO').AsString := lUseCaseCode;
// lResponseField := utField.Create;
// try
// fcxCadastroCasoDeUso.rmEditaObjeto(lField, lResponseField);
// SendToInterface(lResponseField);
// finally
// lResponseField.free;
// end;
//
// edtUseCaseName.Text := fUMLUseCase.Name;
// edtPackage.Text := fUMLUseCase.Namespace.Pathname;
// btnSelecionarDestino.Enabled := false;
//end
//else
//begin
lResponseField := utField.Create;
try
lField := utField.Create;
fcxCadastroCasoDeUso.rmIncluiObjeto(lField, lResponseField);
SendToInterface(lResponseField);
finally
lResponseField.free;
end;
// end;
end;
procedure TCadastroCasoDeUso.SalvaObjeto;
var lField: utField;
begin
lField := utField.Create;
SaveFromInterface(lField);
fcxCadastroCasoDeUso.rmSalvaObjeto(lField);
end;
procedure TCadastroCasoDeUso.SaveFromInterface(piField: utField);
var lFieldCasoDeUso, lFieldSistemas, lFieldOperacoes: utField;
I: Integer;
begin
inherited;
lFieldCasoDeUso := piField.AddField('CasoDeUso');
// lFieldCasoDeUso.AddAttribute('OID').AsInteger := FOID;
lFieldCasoDeUso.AddAttribute('nome').AsString := edtNome.Text;
lFieldCasoDeUso.AddAttribute('descricao').AsString := edtDescricao.Text;
if cbxEntidade.ItemIndex <> -1 then lFieldCasoDeUso.AddAttribute('idoentidade').AsInteger := integer(cbxEntidade.Items.Objects[cbxEntidade.ItemIndex]);
if cbxCategoria.ItemIndex <> -1 then lFieldCasoDeUso.AddAttribute('idocategoria').AsInteger := integer(cbxCategoria.Items.Objects[cbxCategoria.ItemIndex]);
if assigned(fFormIcones.ltvIcones.Selected) then lFieldCasoDeUso.AddAttribute('idoicone').AsInteger := integer(fFormIcones.ltvIcones.Selected.Data);
lFieldSistemas := lFieldCasoDeUso.AddField('sistemas');
for I := 0 to ltvSistema.Items.Count - 1 do
if ltvSistema.Items[i].Checked then
lFieldSistemas.AddField('ido').AsInteger := integer(ltvSistema.Items[i].Data);
lFieldOperacoes := lFieldCasoDeUso.AddField('operacoes');
for I := 0 to ltvOperacao.Items.Count - 1 do
if ltvOperacao.Items[i].Checked then
lFieldOperacoes.AddField('ido').AsInteger := integer(ltvOperacao.Items[i].Data);
end;
procedure TCadastroCasoDeUso.SendToInterface(piField: utField);
var lFieldCategorias, lFieldCategoria,
lFieldEntidades, lFieldEntidade,
lFieldIcones, lFieldIcone,
lFieldSistemas, lFieldSistema,
lFieldOperacoes, lFieldOperacao,
lFieldCasoDeUsoSistemas,
lFieldCasoDeUsoOperacoes,
lFieldCasoDeUso: utField;
lEnum: acEnumerator;
lBMP: TBitmap;
lMemoryStream: TMemoryStream;
lListItem: TListItem;
lIDO: integer;
I: integer;
begin
inherited;
//CATEGORIAS
// ShowMessage(piField.GetXMLString([xoLegible]));
lFieldCategorias := piField.FindField('categorias');
if Assigned(lFieldCategorias) then
begin
cbxCategoria.Clear;
lEnum := lFieldCategorias.GetFieldsEnumerator;
while not lEnum.EOL do
begin
lFieldCategoria := utField(lEnum.Current);
cbxCategoria.AddItem(lFieldCategoria.AttributeByName('nome').AsString, pointer(lFieldCategoria.AttributeByName('ido').AsInteger));
lEnum.MoveNext;
end;
end;
//ENTIDADES
lFieldEntidades := piField.FindField('entidades');
if Assigned(lFieldEntidades) then
begin
cbxEntidade.Clear;
lEnum := lFieldEntidades.GetFieldsEnumerator;
while not lEnum.EOL do
begin
lFieldEntidade := utField(lEnum.Current);
cbxEntidade.AddItem(lFieldEntidade.AttributeByName('nome').AsString, pointer(lFieldEntidade.AttributeByName('ido').AsInteger));
lEnum.MoveNext;
end;
end;
//ICONES
lFieldIcones := piField.FindField('icones');
if Assigned(lFieldIcones) then
begin
fFormIcones.ltvIcones.Clear;
fFormIcones.imgListaIcone.Clear;
lEnum := lFieldIcones.GetFieldsEnumerator;
while not lEnum.EOL do
begin
lFieldIcone := utField(lEnum.Current);
lListItem := fFormIcones.ltvIcones.Items.Add;
lListItem.Caption := lFieldIcone.AttributeByName('descricao').AsString;
lListItem.Data := pointer(lFieldIcone.AttributeByName('ido').AsInteger);
lMemoryStream := TMemoryStream.Create;
try
lFieldIcone.AttributeByName('imagem').WriteToStream(lMemoryStream);
lMemoryStream.Position := 0;
lBMP := TBitmap.Create;
try
lBMP.LoadFromStream(lMemoryStream);
fFormIcones.imgListaIcone.Height := lBMP.Height;
fFormIcones.imgListaIcone.Width := lBMP.Width;
lListItem.ImageIndex := fFormIcones.imgListaIcone.Add(lBMP, nil);
finally
lBMP.free;
end;
finally
lMemoryStream.free;
end;
lEnum.MoveNext;
end;
end;
//SISTEMAS
lFieldSistemas := piField.FindField('sistemas');
if Assigned(lFieldSistemas) then
begin
ltvSistema.Clear;
lEnum := lFieldSistemas.GetFieldsEnumerator;
while not lEnum.EOL do
begin
lFieldSistema := utField(lEnum.Current);
lListItem := ltvSistema.Items.Add;
lListItem.Caption := lFieldSistema.AttributeByName('nome').AsString;
lListItem.Data := pointer(lFieldSistema.AttributeByName('ido').AsInteger);
lEnum.MoveNext;
end;
end;
//OPERAES
lFieldOperacoes :=piField.FindField('operacoes1');
if Assigned(lFieldOperacoes) then
begin
ltvOperacao.Clear;
lEnum := lFieldOperacoes.GetFieldsEnumerator;
while not lEnum.EOL do
begin
lFieldOperacao := utField(lEnum.Current);
lListItem := ltvOperacao.Items.Add;
lListItem.Caption := lFieldOperacao.AttributeByName('descricao').AsString;
lListItem.Data := pointer(lFieldOperacao.AttributeByName('ido').AsInteger);
lEnum.MoveNext;
end;
end;
//CASO DE USO
lFieldCasoDeUso := piField.FindField('CasoDeUso');
if assigned(lFieldCasoDeUso) then
begin
if lFieldCasoDeUso.HasAttribute('OID') then FOID := lFieldCasoDeUso.AttributeByName('OID').AsInteger;
if lFieldCasoDeUso.HasAttribute('Codigo') then lblValorCodigo.Caption := lFieldCasoDeUso.AttributeByName('Codigo').AsString;
if lFieldCasoDeUso.HasAttribute('Nome') then edtNome.Text := lFieldCasoDeUso.AttributeByName('Nome').AsString;
if lFieldCasoDeUso.HasAttribute('Descricao') then edtDescricao.Text := lFieldCasoDeUso.AttributeByName('Descricao').AsString;
if lFieldCasoDeUso.HasAttribute('Entidade') then
begin
lIDO := lFieldCasoDeUso.AttributeByName('Entidade').AsInteger;
for I := 0 to cbxEntidade.Items.Count - 1 do
if integer(cbxEntidade.Items.Objects[i]) = lIDO then
begin
cbxEntidade.ItemIndex := I;
break;
end;
end;
if lFieldCasoDeUso.HasAttribute('Categoria') then
begin
lIDO := lFieldCasoDeUso.AttributeByName('Categoria').AsInteger;
for I := 0 to cbxCategoria.Items.Count - 1 do
if integer(cbxCategoria.Items.Objects[i]) = lIDO then
begin
cbxCategoria.ItemIndex := I;
break;
end;
end;
if lFieldCasoDeUso.HasAttribute('Icone') then
begin
lIDO := lFieldCasoDeUso.AttributeByName('Icone').AsInteger;
for I := 0 to fFormIcones.ltvIcones.Items.Count - 1 do
if integer(fFormIcones.ltvIcones.Items[i].Data) = lIDO then
begin
fFormIcones.ltvIcones.Selected := fFormIcones.ltvIcones.Items[i];
fFormIcones.imgListaIcone.GetBitmap(fFormIcones.ltvIcones.Items[i].ImageIndex, imgIcone.Picture.Bitmap);
break;
end;
end;
lFieldCasoDeUsoOperacoes := lFieldCasoDeUso.FindField('operacoes');
if assigned(lFieldCasoDeUsoOperacoes) then
begin
lEnum := lFieldCasoDeUsoOperacoes.GetFieldsEnumerator;
try
while not lEnum.EOL do
begin
lIDO := utField(lEnum.Current).AsInteger;
for I := 0 to ltvOperacao.Items.Count - 1 do
if lido = integer(ltvOperacao.Items[i].Data) then
begin
ltvOperacao.Items[i].Checked := true;
break;
end;
lEnum.MoveNext;
end;
finally
lEnum.free;
end;
end;
lFieldCasoDeUsoSistemas := lFieldCasoDeUso.FindField('sistemas');
if assigned(lFieldCasoDeUsoSistemas) then
begin
lEnum := lFieldCasoDeUsoSistemas.GetFieldsEnumerator;
try
while not lEnum.EOL do
begin
lIDO := utField(lEnum.Current).AsInteger;
for I := 0 to ltvSistema.Items.Count - 1 do
if lido = integer(ltvSistema.Items[i].Data) then
begin
ltvSistema.Items[i].Checked := true;
break;
end;
lEnum.MoveNext;
end;
finally
lEnum.free;
end;
end;
end;
end;
procedure TCadastroCasoDeUso.SpeedButton1Click(Sender: TObject);
begin
ModalResult := mrCancel;
end;
procedure TCadastroCasoDeUso.btnSelecionarDestinoClick(Sender: TObject);
//var lElementSelector: IElementSelector;
begin
// lElementSelector := fStarUMLApp.ElementSelector;
// lElementSelector.AllowNull := false;
// lElementSelector.Filter(fkPackages);
// lElementSelector.ClearSelectableModels();
// lElementSelector.AddSelectableModel('UMLPackage');
// if lElementSelector.Execute('Selecione o local para criar o caso de uso') then
// UseCasePackage := lElementSelector.GetSelectedModel as IUMLPackage;
end;
procedure TCadastroCasoDeUso.btnSalvarClick(Sender: TObject);
//var lUMLFactory: IUMLFactory;
// lUMLucUseCase: IUMLUseCase;
// lUMLClassDiagram: IUMLClassDiagram;
// lUMLStateMachine: IUMLStateMachine;
// lUMLStatechartDiagram: IUMLStatechartDiagram;
// lUMLPseudoState: IUMLPseudoState;
// lUMLCompositeState: IUMLCompositeState;
begin
// if edtUseCaseName.Text = '' then
// begin
// application.MessageBox(' necessrio informar o nome do caso de uso no StarUML.','StarUML', MB_ICONEXCLAMATION + MB_OK);
// exit;
// end;
//
// try
// if assigned(fUMLUseCase) then
// begin
//// if (assigned(fUseCasePackage.FindByName(edtUseCaseName.Text))) and (edtUseCaseName.Text <> fUMLUseCase.Name) then
//// begin
//// application.MessageBox('Caso de uso j existente no pacote selecionado.','StarUML', MB_ICONEXCLAMATION + MB_OK);
//// exit;
//// end;
//
// SalvaObjeto;
// fUMLUseCase.Name := edtUseCaseName.Text;
// end
// else
// begin
// if edtPackage.Text = '' then
// begin
// application.MessageBox(' necessrio informar o package onde ser criado o caso de uso.','StarUML', MB_ICONEXCLAMATION + MB_OK);
// exit;
// end else if assigned(fUseCasePackage.FindByName(edtUseCaseName.Text)) then
// begin
// application.MessageBox('Caso de uso j existente no pacote selecionado.','StarUML', MB_ICONEXCLAMATION + MB_OK);
// exit;
// end;
//
// lUMLucUseCase := FStarUMLAPP.FindByPathname(cBASE_USECASE_CLASS_FULL_PATH) as IUMLUseCase;
// if not assigned(lUMLucUseCase) then
// begin
// application.MessageBox('ucUsecase not found in "' + cBASE_USECASE_CLASS_FULL_PATH + '"', 'StarUML', MB_ICONEXCLAMATION + MB_OK);
// exit;
// end;
//
// SalvaObjeto;
// lUMLFactory := FStarUMLAPP.UMLFactory;
// //Cria Caso de uso
// fUMLUseCase := lUMLFactory.CreateUseCase(fUseCasePackage);
// fUMLUseCase.Name := edtUseCaseName.Text;
// fUMLUseCase.SetTaggedValueAsString('DBMappings', 'DBUseCaseMap', 'Code', lblValorCodigo.Caption);
//
// //Cria diagrama de classe para o caso de uso
// lUMLClassDiagram := lUMLFactory.CreateClassDiagram(fUMLUseCase);
// lUMLClassDiagram.Name := 'ClassDiagram';
//
// //Cria o relacionamento entre ucUsecase e o novo caso de uso
// fUMLUseCase.AddGeneralization(lUMLFactory.CreateGeneralization(fUMLUseCase.Namespace, lUMLucUseCase, fUMLUseCase));
//
// //Cria StateMachine para o caso de uso com um estado inicial, final e uma transicao ligando os dois
// lUMLStateMachine := lUMLFactory.CreateStateMachine(fUMLUseCase);
// lUMLStateMachine.Name := 'sm' + edtUseCaseName.Text;
//
// //Cria StatechartDiagram para o StateMachine
// lUMLStatechartDiagram := lUMLFactory.CreateStatechartDiagram(lUMLStateMachine);
// lUMLStatechartDiagram.Name := 'sc' + edtUseCaseName.Text;
//
// //Cria 2 estados e insere no diagrama s para torn-lo vlido
// lUMLPseudoState := lUMLFactory.CreatePseudostate(lUMLStateMachine.Top as IUMLCompositeState);
// lUMLPseudoState.PseudostateKind := pkInitial;
// lUMLPseudoState.Name := 'Initial1';
// lUMLCompositeState := lUMLFactory.CreateCompositeState(lUMLStateMachine.Top as IUMLCompositeState);
// lUMLCompositeState.Name := 'Executando';
// lUMLFactory.CreateTransition(lUMLStateMachine, lUMLPseudoState, lUMLCompositeState);
// lUMLStatechartDiagram.DiagramView.CreateViewOf(lUMLPseudoState, 200, 100);
// lUMLStatechartDiagram.DiagramView.CreateViewOf(lUMLCompositeState, 165, 200);
// end;
// ModalResult := mrOk;
// except
// on e:Exception do
// begin
// ModalResult := mrnone;
// raise;
// end;
// end;
end;
end.
object CadastroCasoDeUsoIcones: TCadastroCasoDeUsoIcones
Left = 0
Top = 0
Caption = 'Ícones'
ClientHeight = 405
ClientWidth = 497
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel
Left = 0
Top = 364
Width = 497
Height = 41
Align = alBottom
TabOrder = 0
object BitBtn1: TBitBtn
Left = 311
Top = 8
Width = 75
Height = 25
TabOrder = 0
Kind = bkOK
end
object BitBtn2: TBitBtn
Left = 408
Top = 8
Width = 75
Height = 25
Caption = 'Cancelar'
TabOrder = 1
Kind = bkCancel
end
end
object Panel2: TPanel
Left = 0
Top = 0
Width = 497
Height = 364
Align = alClient
TabOrder = 1
object ltvIcones: TListView
Left = 1
Top = 1
Width = 495
Height = 362
Align = alClient
Columns = <
item
Caption = 'Operações'
Width = 10
end>
HideSelection = False
LargeImages = imgListaIcone
ReadOnly = True
SortType = stText
TabOrder = 0
OnDblClick = ltvIconesDblClick
end
end
object imgListaIcone: TImageList
Height = 32
ShareImages = True
Width = 32
Left = 440
Top = 56
end
end
unit uCadastroCasoDeUsoIcones;
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
interface
uses
{$IFnDEF FPC}
Windows,
{$ELSE}
LCLIntf, LCLType, LMessages,
{$ENDIF}
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, ImgList;
type
TCadastroCasoDeUsoIcones = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
ltvIcones: TListView;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
imgListaIcone: TImageList;
procedure ltvIconesDblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.dfm}
procedure TCadastroCasoDeUsoIcones.ltvIconesDblClick(Sender: TObject);
begin
if Assigned(ltvIcones.Selected) then ModalResult := mrok;
end;
end.
object CadastroClasse: TCadastroClasse
Left = 0
Top = 0
BorderStyle = bsDialog
Caption = 'Cadastro de Classe'
ClientHeight = 285
ClientWidth = 452
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel
Left = 0
Top = 0
Width = 452
Height = 285
Align = alClient
TabOrder = 0
object Panel3: TPanel
Left = 6
Top = 141
Width = 437
Height = 73
TabOrder = 2
object Panel5: TPanel
Left = 12
Top = 13
Width = 180
Height = 48
TabOrder = 0
object Label4: TLabel
Left = 8
Top = 5
Width = 155
Height = 13
Caption = 'Nome da classe no StarUML'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentFont = False
end
object edtNomeStarUML: TEdit
Left = 8
Top = 21
Width = 163
Height = 21
TabOrder = 0
end
end
object GroupBox1: TGroupBox
Left = 210
Top = 0
Width = 217
Height = 68
Caption = 'DB Mappings'
TabOrder = 1
object Label1: TLabel
Left = 12
Top = 20
Width = 30
Height = 13
Caption = 'Table:'
end
object Label2: TLabel
Left = 6
Top = 43
Width = 36
Height = 13
Caption = 'DBIDO:'
end
object edtDBTableName: TEdit
Left = 48
Top = 17
Width = 157
Height = 21
TabOrder = 0
end
object edtDBIDO: TEdit
Left = 48
Top = 40
Width = 157
Height = 21
TabOrder = 1
end
end
end
object Panel2: TPanel
Left = 6
Top = 79
Width = 437
Height = 56
TabOrder = 1
object Label3: TLabel
Left = 8
Top = 7
Width = 171
Height = 13
Caption = 'Destino para criação da classe'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentFont = False
end
object btnSelecionarDestino: TSpeedButton
Left = 299
Top = 21
Width = 128
Height = 25
Caption = 'Selecionar destino'
Glyph.Data = {
36050000424D3605000000000000360400002800000010000000100000000100
0800000000000001000000000000000000000001000000010000000000000000
0000000000000101010002020200030303000404040005050500070707000909
09000A0A0A000B0B0B000C0C0C000D0D0D0019130D0025190D00311F0D003C24
0D004E2D0C005F350B006E3C0A007A4209008A4908009A510700A8570500B25B
0400BA5F0300BF610300C3630200C6650200C9660200CA680500CC6B0900CE70
0F00D1741500D47A1D00D7812600DB893100E0913C00E2964300E4984700E59A
4A00E4984700E2964500E0924000DE8E3C00DC8B3800D7853300D37E2D00CD76
2700C1661D00B7581300AF4E0B00AC4A0900AB480800AB480800AB490800A947
0900A7450900A5430A00A2400A009F3E0B009E3C0B009D3B0C009C3B0C009B3B
0C009B3A0C009A390C0096380C0090350B0086320A007C2E0A00722B09006526
08005E2307005E230700602407006125080065260800682708006D290900732B
0A00782E0B007F310D00853410008C371500903B1E007B3C3E00643D62004F3D
8300413D9A00343EAE00293EBF00203ECF00193ED900143EE200103EE9000C3E
EF00093FF400083EF600073EF700063EF800063EF900063EF900063EF900073E
F900073FF800083FF700093FF6000A40F5000B41F3000D41F1000F42EE001244
EB001546E7001A48E2001F4BDB00264ED4002F52CA003958BF00465FB1004C62
AC005265A6005869A0005F6D9A00677193006F768D00777A8600808080008181
8100828282008383830084848400858585008686860087878700888888008989
89008A8A8A008B8B8B008C8C8C008D8D8D008E8E8E008F8F8F00909090009191
9100929292009393930094949400959595009696960097979700989898009999
99009A9A9A009B9B9B009C9C9C009D9D9D009E9E9E009F9F9F00A0A0A000A1A1
A100A2A2A200A3A3A300A4A4A400A5A5A500A6A6A600A7A7A700A8A8A800A9A9
A900AAAAAA00ABABAB00ACACAC00ADADAD00AEAEAE00AFAFAF00B0B0B000B1B1
B100B2B2B200B3B3B300B4B4B400B5B5B500B6B6B600B7B7B700B8B8B800B9B9
B900BABABA00BBBBBB00BCBCBC00BDBDBD00BEBEBE00BFBFBF00C0C0C000C1C1
C100C2C2C200C3C3C300C4C4C400C8C5C100CCC7BF00D0C8BE00D3C9BD00D5CA
BC00DACBB800DDCCB600DFCDB500E2CDB400E2C6B900E8AAC100F179D000F84D
DE00FC33E600FE24EC00FE18F200FE0CF800FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00
FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00E9E91EE9E9E9
4040404040E9E9E9E9E9E9E91E1E1E1F40CD292540E9E9E9E9E9E9E91EE9E9E9
4340424240E9E9E9E9E9E9E91EE9E9E9E9E9E9E9E9E9E9E9E9E9E9E91EE9E9E9
4040404040E9E9E9E9E9E9E91E1E1E1E40CD292540E9E9E9E9E9E9E91EE9E9E9
4340424240E9E9E9E9E9E9E91EE9E9E9E9E9E9E9E9E9E9E9E9E9E9E91EE9E9E9
4040404040E9E9E9E9E9E9E91E1E1E1E40CD292540E9E9E9E9E9E9E91EE9E9E9
4340424240E9E9E9E9E94040404040E9E9E9E9E9E902020202E940CD292540E9
E9E9E9E9E902E96602E94340424240E9E9E9E9E9E90266E966E9E9E9E9E9E9E9
E9E9E9E9E90202020266E9E9E9E9E9E9E9E9E9E9E9E9E9E9E966}
OnClick = btnSelecionarDestinoClick
end
object edtPackage: TEdit
Left = 8
Top = 23
Width = 286
Height = 21
Color = 15461355
ReadOnly = True
TabOrder = 0
end
end
object Panel4: TPanel
Left = 6
Top = 7
Width = 437
Height = 66
TabOrder = 0
object lblNome: TLabel
Left = 97
Top = 13
Width = 125
Height = 13
Caption = 'Nome (case sensitive)'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentFont = False
end
object lblValorCodigo: TLabel
Left = 9
Top = 32
Width = 67
Height = 13
Caption = 'lblValorCodigo'
end
object lblCodigo: TLabel
Left = 9
Top = 13
Width = 38
Height = 13
Caption = 'Código'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentFont = False
end
object edtNome: TEdit
Left = 96
Top = 32
Width = 331
Height = 21
TabOrder = 0
OnChange = edtNomeChange
end
end
object Panel6: TPanel
Left = 6
Top = 221
Width = 437
Height = 56
TabOrder = 3
object SpeedButton1: TSpeedButton
Left = 330
Top = 7
Width = 97
Height = 41
Caption = 'Cancelar'
Glyph.Data = {
360C0000424D360C000000000000360000002800000020000000200000000100
180000000000000C0000120B0000120B00000000000000000000FF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FF0732DE0732DEFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FF0732DE0732DE0732DE0732DEFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FF0732DE0732DE0732DE0732DE0732DEFF00FFFF00FFFF00FF
0533EC0533EBFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FF0732DE0732DE0732DE0732DE0732DEFF00FFFF00FFFF00FF0534EE
0534ED0533EC0533EBFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FF0732DE0732DE0732DE0732DE0732DEFF00FFFF00FFFF00FFFF00FF0534EF
0534EE0534ED0533EC0533EBFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF07
32DE0732DE0732DE0732DE0732DEFF00FFFF00FFFF00FFFF00FFFF00FF0534F0
0534EF0534EE0534ED0533EC0533ECFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0732DE07
32DE0732DE0732DE0732DEFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
0534F00534EF0534EE0534EE0534ED0533ECFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0732E00732DF07
32DF0732DE0732DEFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF0434F00534EF0534EF0534EE0534ED0533ECFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0632E20732E10732E007
32E00732DFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FF0434F00534F00534EF0534EE0534ED0533ECFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0633E40633E30632E20732E207
32E1FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FF0434F00534F00534EF0534EE0534ED0533ECFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FF0633E60633E50633E40633E30632E3FF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FF0434F10534F00534EF0534EE0534EE0534EDFF00
FFFF00FFFF00FFFF00FFFF00FF0633E80633E70633E60633E50633E4FF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F00534EF0534EF0534EE0534
EDFF00FFFF00FFFF00FF0533EA0633E90633E80633E70633E60633E5FF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F00534F00534EF0534
EE0534EDFF00FF0533EB0533EB0533EA0533E90633E80633E7FF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F10534F00534
EF0534EE0534ED0533EC0533EC0533EB0533EA0533E9FF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F10534
F00534EF0534EE0534EE0534ED0533EC0533EBFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434
F10434F00534EF0534EF0534EE0534EDFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F30434
F20434F10434F00534F00534EF0534EEFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F50434F40434
F30434F20434F10434F10534F00534EF0534EEFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0435F70434F60434F50434
F40434F30434F2FF00FF0434F10534F00534EF0534EEFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0335F90335F80435F70434F60434
F50434F4FF00FFFF00FFFF00FF0434F10434F00534EF0534EEFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FF0335FA0335FA0335F90335F80435F70434
F6FF00FFFF00FFFF00FFFF00FFFF00FF0434F10434F00534F00534EFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FF0335FB0335FB0335FB0335FA0335F90335F8FF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F10434F10534F00534EFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FF0335FB0335FB0335FB0335FB0335FB0335FAFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F10434F10534F005
34EFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FF0335FB0335FB0335FB0335FB0335FB0335FBFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0434F105
34F00534EFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF0335FB0335FB0335FB0335FB0335FB0335FBFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF04
34F10434F00534EFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
0335FB0335FB0335FB0335FB0335FB0335FB0335FBFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FF0434F10434F00534F0FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0335FB
0335FB0335FB0335FB0335FB0335FB0335FBFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FF0434F10434F10534F0FF00FFFF00FFFF00FFFF00FF0335FB0335FB
0335FB0335FB0335FB0335FB0335FBFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FF0434F1FF00FFFF00FFFF00FFFF00FFFF00FF0335FB0335FB
0335FB0335FB0335FB0335FBFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0335FB0335FB
0335FB0335FB0335FBFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0335FB
0335FB0335FBFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
OnClick = SpeedButton1Click
end
object btnSalvar: TSpeedButton
Left = 211
Top = 7
Width = 105
Height = 41
Caption = 'Salvar'
Glyph.Data = {
360C0000424D360C000000000000360000002800000020000000200000000100
180000000000000C0000120B0000120B00000000000000000000FF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF0066000066000066000066000066000066005B8D5AB5B3B3B5B3B3B5B3
B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B32D792D00660000
6600006600006600006600006600FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
006600008300008C00008C00008C00008C00007000367C36FAF6F3FDF9F6FDF9
F6FDF9F6FDF9F6FDF9F6F9F6F3F0EEECE7E5E4DEDDDDDEDDDD327E3200660000
6600006600007500008A00008300006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300297528FAF6F30066000066
00006600006600FAF6F3FDF9F6F9F6F3F0EEECE7E5E4DEDDDD37833600660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000073002A7629F6F0ED0066000066
00006600006600F3F0EDFBF7F4FDF9F7F8F4F2EFECEAE6E4E338843800660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000073002B772AEFE8E40066000066
00006600006600E9E6E4F5F2EFFCF8F5FDF9F6F6F3F0EDEBE93A863900660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000073002D782BE8DEDB0066000066
00006600006600DBD8D7ECE9E6F7F3F0FCF9F6FCF9F6F5F1EF3C883B00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300307A2DE0D4D10066000066
00006600006600C9C7C5DEDCDAEEEBE8F8F4F1FDF9F6FBF8F53E893C00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300327C2FDACCC90066000066
00006600006600B2B1B0CDCBCAE2DFDDF0EDEAF9F5F3FDF9F63F8B3E00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300357E30D6C6C30066000066
00006600006600A2A1A1B7B6B5D1CFCDE5E2E0F2EFECFAF7F43F8B3E00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300377F32D6C6C3C9BDBABDB4
B2B2ADACA9A6A6A3A2A1A3A3A3BCBBBAD5D3D1E8E4E2F4F0EE3E8A3D00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000099000099000099000099000099
0000990000990000990000990000990000990000990000990000990000990000
9900009900009900009800008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000099000099000099000099000099
0000990000990000990000990000990000990000990000990000990000990000
9900009900009900009900008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009300008C00018E01049408079B0F0AA0140CA4180DA61A0DA6
1A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0D
A61A0DA61A0AA213009900008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00008000006600036B051187211EA13C29B65130C56133CB6733CB
6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733
CB6733CB6726BF4D009900008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
0066000083000079003B863AFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BB4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF006600006600317D31C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2
C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3
C2C2D6BCBB26B24D006600006600FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
OnClick = btnSalvarClick
end
end
end
end
unit uCadastroClasse;
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
interface
uses
{$IFnDEF FPC}
Windows,
{$ELSE}
LCLIntf, LCLType, LMessages,
{$ENDIF}
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls, utuMessage, uCadastroCasoDeUsoIcones, acuObject, cxuCadastroClasse,
Buttons, cxuSession;
type
TCadastroClasse = class(TForm)
Panel1: TPanel;
Panel3: TPanel;
Panel2: TPanel;
Label3: TLabel;
btnSelecionarDestino: TSpeedButton;
edtPackage: TEdit;
Panel4: TPanel;
edtNome: TEdit;
lblNome: TLabel;
lblValorCodigo: TLabel;
lblCodigo: TLabel;
Panel5: TPanel;
Label4: TLabel;
edtNomeStarUML: TEdit;
Panel6: TPanel;
SpeedButton1: TSpeedButton;
btnSalvar: TSpeedButton;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
edtDBTableName: TEdit;
edtDBIDO: TEdit;
procedure SpeedButton1Click(Sender: TObject);
procedure btnSalvarClick(Sender: TObject);
procedure btnSelecionarDestinoClick(Sender: TObject);
procedure edtNomeChange(Sender: TObject);
private
{ Private declarations }
FOID: integer;
// fUMLClass: IUMLClass;
fcxCadastroClasse: cxCadastroClasse;
// fClassPackage: IUMLPackage;
procedure SaveFromInterface(piField: utField);
procedure SendToInterface(piField: utField);
procedure SalvaObjeto;
// procedure SetClassPackage(const Value: IUMLPackage);
procedure Initialize;
public
{ Public declarations }
// FStarUMLAPP: IStarUMLApplication;
Constructor Create(Sender: TComponent; piConnectionString: string); reintroduce; overload;
Constructor Create(Sender: TComponent; piSession: cxSession); reintroduce; overload;
// property ClassPackage: IUMLPackage read fClassPackage write SetClassPackage;
// property UMLClass: IUMLClass read fUMLClass write fUMLClass;
end;
var
CadastroClasse: TCadastroClasse;
implementation
uses IntegracaoDelphiSUML;
{$R *.dfm}
{ TCadastroClasse }
constructor TCadastroClasse.Create(Sender: TComponent; piConnectionString: string);
begin
inherited Create(sender);
// if assigned(piUMLClass) then
// begin
// edtDBIDO.Text := fUMLClass.GetTaggedValueAsString('DBMappings', 'DBClassMap', 'DBIDO');
// edtDBTableName.Text := fUMLClass.GetTaggedValueAsString('DBMappings', 'DBClassMap', 'Table');
// end;
fcxCadastroClasse := cxCadastroClasse.Create(piConnectionString);
self.Initialize;
end;
procedure TCadastroClasse.btnSalvarClick(Sender: TObject);
//var lUMLFactory: IUMLFactory;
// lUMLPersistentObject: IUMLCLass;
begin
// if edtNomeStarUML.Text = '' then
// begin
// application.MessageBox(' necessrio informar o nome da classe no StarUML.','StarUML', MB_ICONEXCLAMATION + MB_OK);
// exit;
// end else
// if edtPackage.Text = '' then
// begin
// application.MessageBox(' necessrio informar o package onde ser criado o caso de uso.','StarUML', MB_ICONEXCLAMATION + MB_OK);
// exit;
// end;
//
// try
// //Se em modo de edio (classe j criada)
// if assigned(fUMLClass) then
// begin
//// if (assigned(fClassPackage.FindByName(edtNomeStarUML.Text))) and (fUMLClass.name <> edtNomeStarUML.Text) then
//// begin
//// application.MessageBox('Classe j existente no pacote selecionado.','StarUML', MB_ICONEXCLAMATION + MB_OK);
//// exit;
//// end;
//
// SalvaObjeto;
// fUMLClass.Name := edtNomeStarUML.Text;
// fUMLClass.SetTaggedValueAsString('DBMappings', 'DBClassMap', 'Table', edtDBTableName.Text);
// fUMLClass.SetTaggedValueAsString('DBMappings', 'DBClassMap', 'DBIDO', edtDBIDO.Text);
// end
// else
// begin
// //Seno cria o objeto no StarUML e salva no caso de uso
// if assigned(fClassPackage.FindByName(edtNomeStarUML.Text)) then
// begin
// application.MessageBox('Classe j existente no pacote selecionado.','StarUML', MB_ICONEXCLAMATION + MB_OK);
// exit;
// end;
//
// lUMLPersistentObject := FStarUMLAPP.FindByPathname(cBASE_PERSISTENT_OBJECT_CLASS_FULL_PATH) as IUMLCLass;
// if not assigned(lUMLPersistentObject) then
// begin
// application.MessageBox('acPersistentObject not found in "' + cBASE_PERSISTENT_OBJECT_CLASS_FULL_PATH + '"', 'StarUML', MB_ICONEXCLAMATION + MB_OK);
// exit;
// end;
// SalvaObjeto;
// lUMLFactory := FStarUMLAPP.UMLFactory;
// //Cria classe
// fUMLClass := lUMLFactory.CreateClass(fClassPackage);
// fUMLClass.Name := edtNomeStarUML.Text;
// fUMLClass.SetTaggedValueAsString('DBMappings', 'DBClassMap', 'Cod', lblValorCodigo.Caption);
// fUMLClass.SetTaggedValueAsString('DBMappings', 'DBClassMap', 'Table', edtDBTableName.Text);
// fUMLClass.SetTaggedValueAsString('DBMappings', 'DBClassMap', 'DBIDO', edtDBIDO.Text);
//
// //Cria o relacionamento entre acPersistentObject e a nova classe
// fUMLClass.AddGeneralization(lUMLFactory.CreateGeneralization(fUMLClass.Namespace, lUMLPersistentObject, fUMLClass));
// end;
// ModalResult := mrOk;
// except
// on e:Exception do
// begin
// ModalResult := mrnone;
// raise;
// end;
// end;
end;
procedure TCadastroClasse.btnSelecionarDestinoClick(Sender: TObject);
//var lElementSelector: IElementSelector;
begin
//lElementSelector := fStarUMLApp.ElementSelector;
//lElementSelector.AllowNull := false;
//lElementSelector.Filter(fkPackages);
//lElementSelector.ClearSelectableModels();
//lElementSelector.AddSelectableModel('UMLPackage');
//lElementSelector.AddSelectableModel('UMLModel');
//if lElementSelector.Execute('Selecione o local para criar o caso de uso') then
// ClassPackage := lElementSelector.GetSelectedModel as IUMLPackage;
end;
constructor TCadastroClasse.Create(Sender: TComponent; piSession: cxSession);
begin
inherited Create(sender);
//if assigned(piUMLClass) then
//begin
// edtDBIDO.Text := fUMLClass.GetTaggedValueAsString('DBMappings', 'DBClassMap', 'DBIDO');
// edtDBTableName.Text := fUMLClass.GetTaggedValueAsString('DBMappings', 'DBClassMap', 'Table');
//end;
fcxCadastroClasse := cxCadastroClasse.Create(piSession);
self.Initialize;
end;
procedure TCadastroClasse.edtNomeChange(Sender: TObject);
begin
edtNomeStarUML.text := 'ng' + edtNome.Text;
// if sametext(copy(edtNome.Text,1,2), 'ng') then
// begin
// edtDBTableName.Text := uppercase(copy(edtNome.Text,3,length(edtNome.Text)-2));
// edtDBIDO.Text := 'ID_' + uppercase(copy(edtNome.Text,3,length(edtNome.Text)-2));
// end
// else
// begin
// edtDBTableName.Text := uppercase(edtNome.Text);
// edtDBIDO.Text := 'ID_' + uppercase(edtNome.Text);
// end;
end;
procedure TCadastroClasse.Initialize;
var lField, lResponseField: utField;
lClassCode: string;
begin
FOID := -1;
//Se for edio, seta o contexto no caso de uso (cadastro de classe )para a classe corrente
// atraves do cdigo
//if assigned(fUMLClass) then
//begin
// lField := utField.Create;
// lClassCode := fUMLClass.GetTaggedValueAsString('DBMappings', 'DBClassMap', 'Cod');
// lField.AddField('CODIGO').AsString := lClassCode;
//
// lResponseField := utField.Create;
// try
// fcxCadastroClasse.rmEditaObjeto(lField, lResponseField);
// SendToInterface(lResponseField);
// finally
// lResponseField.free;
// end;
// btnSelecionarDestino.Enabled := false;
// edtPackage.Text := fUMLClass.Namespace.Pathname;
//end
//else
//begin
lResponseField := utField.Create;
try
lField := utField.Create;
fcxCadastroClasse.rmIncluiObjeto(lField, lResponseField);
SendToInterface(lResponseField);
finally
lResponseField.free;
end;
// end;
end;
procedure TCadastroClasse.SalvaObjeto;
var lField: utField;
begin
lField := utField.Create;
SaveFromInterface(lField);
fcxCadastroClasse.rmSalvaObjeto(lField);
end;
procedure TCadastroClasse.SaveFromInterface(piField: utField);
var lFieldClasse: utField;
begin
inherited;
lFieldClasse := piField.AddField('Classe');
lFieldClasse.AddAttribute('OID').AsInteger := FOID;
lFieldClasse.AddAttribute('Nome').AsString := edtNome.Text;
lFieldClasse.AddAttribute('Codigo').AsString := lblValorCodigo.Caption;
end;
procedure TCadastroClasse.SendToInterface(piField: utField);
var lFieldClasse: utField;
begin
inherited;
lFieldClasse := piField.FindField('Classe');
if assigned(lFieldClasse) then
begin
if lFieldClasse.HasAttribute('OID') then FOID := lFieldClasse.AttributeByName('OID').AsInteger;
if lFieldClasse.HasAttribute('Codigo') then
lblValorCodigo.Caption := lFieldClasse.AttributeByName('Codigo').AsString;
if lFieldClasse.HasAttribute('Nome') then
edtNome.Text := lFieldClasse.AttributeByName('Nome').AsString;
end;
end;
procedure TCadastroClasse.SpeedButton1Click(Sender: TObject);
begin
ModalResult := mrcancel;
end;
end.
object ConnStringsTemplates: TConnStringsTemplates
Left = 0
Top = 0
BorderStyle = bsDialog
Caption = 'Database Connection'
ClientHeight = 195
ClientWidth = 287
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
PixelsPerInch = 96
TextHeight = 13
object rdgOptions: TRadioGroup
Left = 8
Top = 8
Width = 273
Height = 137
Caption = 'Options'
ItemIndex = 0
Items.Strings = (
'SQL Server - Windows Authentication'
'SQL Server - SQL Server Authentication'
'Oracle'
'User Defined:')
TabOrder = 0
end
object BitBtn1: TBitBtn
Left = 125
Top = 162
Width = 75
Height = 25
Caption = 'OK'
Default = True
TabOrder = 1
OnClick = BitBtn1Click
Glyph.Data = {
DE010000424DDE01000000000000760000002800000024000000120000000100
0400000000006801000000000000000000001000000000000000000000000000
80000080000000808000800000008000800080800000C0C0C000808080000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
3333333333333333333333330000333333333333333333333333F33333333333
00003333344333333333333333388F3333333333000033334224333333333333
338338F3333333330000333422224333333333333833338F3333333300003342
222224333333333383333338F3333333000034222A22224333333338F338F333
8F33333300003222A3A2224333333338F3838F338F33333300003A2A333A2224
33333338F83338F338F33333000033A33333A222433333338333338F338F3333
0000333333333A222433333333333338F338F33300003333333333A222433333
333333338F338F33000033333333333A222433333333333338F338F300003333
33333333A222433333333333338F338F00003333333333333A22433333333333
3338F38F000033333333333333A223333333333333338F830000333333333333
333A333333333333333338330000333333333333333333333333333333333333
0000}
NumGlyphs = 2
end
object BitBtn2: TBitBtn
Left = 206
Top = 162
Width = 75
Height = 25
TabOrder = 2
Kind = bkCancel
end
object edtUserDefined: TEdit
Left = 106
Top = 114
Width = 167
Height = 21
TabOrder = 3
OnChange = edtUserDefinedChange
end
end
unit uConnStringTemplates;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TConnStringsTemplates = class(TForm)
rdgOptions: TRadioGroup;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
edtUserDefined: TEdit;
procedure BitBtn1Click(Sender: TObject);
procedure edtUserDefinedChange(Sender: TObject);
private
function GetConnectionString: string;
{ Private declarations }
public
{ Public declarations }
property ConnectionString: string read GetConnectionString;
end;
var
ConnStringsTemplates: TConnStringsTemplates;
implementation
{$R *.dfm}
{ TConnStringsTemplates }
procedure TConnStringsTemplates.BitBtn1Click(Sender: TObject);
begin
if (rdgOptions.ItemIndex = 3) and (edtUserDefined.Text = '') then
begin
Application.MessageBox('Connection string not specified.', 'Attention', MB_ICONINFORMATION);
edtUserDefined.SetFocus;
end
else
ModalResult := mrok;
end;
procedure TConnStringsTemplates.edtUserDefinedChange(Sender: TObject);
begin
rdgOptions.ItemIndex := 3;
end;
function TConnStringsTemplates.GetConnectionString: string;
begin
case rdgOptions.ItemIndex of
0: result := 'Provider=SQLNCLI.1;Data Source=;Initial Catalog=;Integrated Security=SSPI';
1: result := 'Provider=SQLNCLI.1;Data Source=;Initial Catalog=;User ID=;Password=';
2: result := 'Provider=OraOLEDB.Oracle.1;Data Source=;User ID=;Password=';
3: result := edtUserDefined.Text;
end;
end;
end.
object fDBAttributeParameters: TfDBAttributeParameters
Left = 0
Top = 0
BorderStyle = bsDialog
Caption = 'fDBAttributeParameters'
ClientHeight = 359
ClientWidth = 348
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
KeyPreview = True
OldCreateOrder = False
Position = poDesktopCenter
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object pnlError: TPanel
Left = 0
Top = 0
Width = 348
Height = 27
Align = alTop
TabOrder = 2
object lblError: TLabel
Left = 5
Top = 4
Width = 336
Height = 18
Alignment = taCenter
AutoSize = False
Caption = 'lblError'
Font.Charset = DEFAULT_CHARSET
Font.Color = clRed
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
Layout = tlCenter
WordWrap = True
end
end
object Panel2: TPanel
Left = 0
Top = 315
Width = 348
Height = 44
Align = alBottom
TabOrder = 1
object ckbCheckLength: TCheckBox
Left = 9
Top = 6
Width = 88
Height = 33
Caption = 'Check length'
TabOrder = 0
WordWrap = True
end
object BitBtn1: TBitBtn
Left = 160
Top = 6
Width = 75
Height = 30
Caption = 'OK'
Default = True
TabOrder = 1
OnClick = BitBtn1Click
Glyph.Data = {
DE010000424DDE01000000000000760000002800000024000000120000000100
0400000000006801000000000000000000001000000000000000000000000000
80000080000000808000800000008000800080800000C0C0C000808080000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
3333333333333333333333330000333333333333333333333333F33333333333
00003333344333333333333333388F3333333333000033334224333333333333
338338F3333333330000333422224333333333333833338F3333333300003342
222224333333333383333338F3333333000034222A22224333333338F338F333
8F33333300003222A3A2224333333338F3838F338F33333300003A2A333A2224
33333338F83338F338F33333000033A33333A222433333338333338F338F3333
0000333333333A222433333333333338F338F33300003333333333A222433333
333333338F338F33000033333333333A222433333333333338F338F300003333
33333333A222433333333333338F338F00003333333333333A22433333333333
3338F38F000033333333333333A223333333333333338F830000333333333333
333A333333333333333338330000333333333333333333333333333333333333
0000}
NumGlyphs = 2
end
object BitBtn2: TBitBtn
Left = 253
Top = 6
Width = 75
Height = 30
TabOrder = 2
Kind = bkCancel
end
end
object Panel3: TPanel
Left = 0
Top = 27
Width = 348
Height = 288
Align = alClient
TabOrder = 0
object GroupBox1: TGroupBox
Left = 11
Top = 6
Width = 323
Height = 85
Caption = 'Attribute (StarUML)'
TabOrder = 0
object Label5: TLabel
Left = 12
Top = 54
Width = 33
Height = 16
Caption = 'Type:'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object Label6: TLabel
Left = 7
Top = 23
Width = 38
Height = 16
Caption = 'Name:'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object cbbStarUMLTypes: TComboBox
Left = 52
Top = 50
Width = 249
Height = 24
Style = csDropDownList
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = []
ItemHeight = 16
ParentFont = False
TabOrder = 1
OnClick = cbbStarUMLTypesClick
end
object edtAttributeName: TEdit
Left = 52
Top = 20
Width = 249
Height = 24
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
TabOrder = 0
OnChange = edtAttributeNameChange
end
end
object GroupBox2: TGroupBox
Left = 11
Top = 97
Width = 323
Height = 184
Caption = 'DB Mappings'
TabOrder = 1
object Label1: TLabel
Left = 16
Top = 32
Width = 38
Height = 16
Caption = 'Name:'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object Label2: TLabel
Left = 21
Top = 62
Width = 33
Height = 16
Caption = 'Type:'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object Label3: TLabel
Left = 18
Top = 92
Width = 36
Height = 16
Caption = 'FSize:'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object Label4: TLabel
Left = 17
Top = 123
Width = 37
Height = 16
Caption = 'VSize:'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object lblAttLength: TLabel
Left = 290
Top = 35
Width = 58
Height = 13
Caption = 'lblAttLength'
end
object ckbMand: TCheckBox
Left = 18
Top = 159
Width = 97
Height = 17
Caption = 'Mandatory'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
TabOrder = 4
end
object edtName: TEdit
Left = 67
Top = 29
Width = 214
Height = 24
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
TabOrder = 0
OnChange = edtNameChange
end
object edtFSize: TEdit
Left = 67
Top = 89
Width = 78
Height = 24
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
TabOrder = 2
end
object edtVSize: TEdit
Left = 67
Top = 119
Width = 78
Height = 24
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
TabOrder = 3
end
object cbbType: TComboBox
Left = 67
Top = 59
Width = 214
Height = 24
Style = csDropDownList
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = []
ItemHeight = 16
ParentFont = False
TabOrder = 1
OnClick = cbbTypeClick
Items.Strings = (
'CHAR'
'DATETIME'
'DECIMAL'
'IMAGE'
'INT'
'NUMERIC'
'TEXT'
'VARCHAR')
end
object ckbIsAuditable: TCheckBox
Left = 154
Top = 159
Width = 97
Height = 17
Caption = 'IsAuditable'
TabOrder = 5
end
end
end
end
unit uDBAttributeParameters;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls, Grids, ValEdit, StdCtrls, IntegracaoDelphiSUML, StarUMLintf;
type
TfDBAttributeParameters = class(TForm)
pnlError: TPanel;
Panel2: TPanel;
Panel3: TPanel;
lblError: TLabel;
ckbCheckLength: TCheckBox;
GroupBox1: TGroupBox;
Label5: TLabel;
Label6: TLabel;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
lblAttLength: TLabel;
ckbMand: TCheckBox;
edtName: TEdit;
edtFSize: TEdit;
edtVSize: TEdit;
cbbType: TComboBox;
ckbIsAuditable: TCheckBox;
cbbStarUMLTypes: TComboBox;
edtAttributeName: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure btnCancelClick(Sender: TObject);
procedure edtNameChange(Sender: TObject);
procedure cbbStarUMLTypesClick(Sender: TObject);
procedure cbbTypeClick(Sender: TObject);
procedure edtAttributeNameChange(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
FUMLAttribute: IUMLAttribute;
FStarUML: IStarUMLApplication;
function GetDBTypeByACType(piACType: string): string;
procedure SetFSize(const Value: integer);
procedure SetVSize(const Value: integer);
procedure SetMand(const Value: boolean);
procedure SetName_(const Value: String);
procedure SetType1(const Value: String);
function GetFSize: integer;
function GetVSize: integer;
function GetMand: boolean;
function GetName_: String;
function GetType1: String;
function GetError: String;
procedure SetError(const Value: String);
function GetIsAuditable: boolean;
procedure SetIsAuditable(const Value: boolean);
function GetAttributeName: string;
function GetAttributeType: string;
procedure SetAttributeName(const Value: string);
procedure SetAttributeType(const Value: string);
{ Private declarations }
public
{ Public declarations }
fError: string;
Util: TUtil;
constructor Create(AOwner: TComponent; piStarUML: IStarUMLApplication; var piUMLAttribute: IUMLAttribute); reintroduce;
property AttributeName: string read GetAttributeName write SetAttributeName;
property AttributeType: string read GetAttributeType write SetAttributeType;
property Error: String read GetError write SetError;
property Name_: String read GetName_ write SetName_;
property Type1: String read GetType1 write SetType1;
property FSize: integer read GetFSize write SetFSize;
property VSize: integer read GetVSize write SetVSize;
property Mand: boolean read GetMand write SetMand;
property IsAuditable: boolean read GetIsAuditable write SetIsAuditable;
end;
var
fDBAttributeParameters: TfDBAttributeParameters;
implementation
{$R *.dfm}
procedure TfDBAttributeParameters.cbbStarUMLTypesClick(Sender: TObject);
begin
if cbbStarUMLTypes.ItemIndex <> -1 then Self.Type1 := GetDBTypeByACType(cbbStarUMLTypes.Text);
if Self.Name_ = '' then Self.Name_ := edtAttributeName.Text;
cbbTypeClick(sender);
end;
procedure TfDBAttributeParameters.cbbTypeClick(Sender: TObject);
begin
if sametext(cbbType.Text, 'CHAR') then
begin
edtVSize.Text := '0';
edtFSize.Enabled := true;
edtVSize.Enabled := false;
if assigned(sender) then edtFSize.SetFocus;
end else if sametext(cbbType.Text, 'VARCHAR') then
begin
edtFSize.Text := '0';
edtFSize.Enabled := false;
edtVSize.Enabled := true;
if assigned(sender) then edtVSize.SetFocus;
end else if sametext(cbbType.Text, 'DECIMAL') then
begin
edtFSize.Enabled := true;
edtVSize.Enabled := true;
if assigned(sender) then edtVSize.SetFocus;
end else if sametext(cbbType.Text, 'NUMERIC') then
begin
edtFSize.Enabled := true;
edtVSize.Enabled := true;
if assigned(sender) then edtVSize.SetFocus;
end
else
begin
edtFSize.Text := '0';
edtVSize.Text := '0';
edtFSize.Enabled := false;
edtVSize.Enabled := false;
end;
end;
procedure TfDBAttributeParameters.BitBtn1Click(Sender: TObject);
begin
FUMLAttribute.Name := AttributeName;
FUMLAttribute.SetType2(AttributeType);
FUMLAttribute.SetTaggedValueAsString('DBMappings', 'DBAttributeMap', 'Name', Name_);
FUMLAttribute.SetTaggedValueAsString('DBMappings', 'DBAttributeMap', 'Type', Type1);
FUMLAttribute.SetTaggedValueAsInteger('DBMappings', 'DBAttributeMap', 'FSize', FSize);
FUMLAttribute.SetTaggedValueAsInteger('DBMappings', 'DBAttributeMap', 'VSize', VSize);
FUMLAttribute.SetTaggedValueAsBoolean('DBMappings', 'DBAttributeMap', 'Mand', mand);
FUMLAttribute.SetTaggedValueAsBoolean('DBMappings', 'DBAttributeMap', 'IsAuditable', IsAuditable);
Error := Util.ValidateAttribute(FUMLAttribute, ckbCheckLength.Checked);
if Error <> '' then
ShowMessage(Error)
else
ModalResult := mrOk;
end;
procedure TfDBAttributeParameters.btnCancelClick(Sender: TObject);
begin
ModalResult := mrCancel;
end;
constructor TfDBAttributeParameters.Create(AOwner: TComponent; piStarUML: IStarUMLApplication; var piUMLAttribute: IUMLAttribute);
var lProfile: IProfile;
I: Integer;
begin
inherited create(AOwner);
self.FUMLAttribute := piUMLAttribute;
self.FStarUML := piStarUML;
edtAttributeName.Text := piUMLAttribute.Name;
lProfile := FStarUML.ExtensionManager.FindIncludedProfile('DBMappings');
for I := 0 to lProfile.GetDataTypeCount - 1 do
cbbStarUMLTypes.AddItem(lProfile.GetDataTypeAt(I).Name, nil);
self.Caption := piUMLAttribute.Owner.Name + '.' + piUMLAttribute.Name;
Name_ := piUMLAttribute.GetTaggedValueAsString('DBMappings', 'DBAttributeMap', 'Name');
Type1 := piUMLAttribute.GetTaggedValueAsString('DBMappings', 'DBAttributeMap', 'Type');
FSize := strtointdef(piUMLAttribute.GetTaggedValueAsString('DBMappings', 'DBAttributeMap', 'FSize'),0);
VSize := strtointdef(piUMLAttribute.GetTaggedValueAsString('DBMappings', 'DBAttributeMap', 'VSize'),0);
Mand := sametext(piUMLAttribute.GetTaggedValueAsString('DBMappings', 'DBAttributeMap', 'Mand'), 'True');
IsAuditable := sametext(piUMLAttribute.GetTaggedValueAsString('DBMappings', 'DBAttributeMap', 'IsAuditable'), 'True');
AttributeName := piUMLAttribute.Name;
if not VarIsEmpty(piUMLAttribute.Type_) then
begin
if assigned(piUMLAttribute.Type_) then
begin
AttributeType := piUMLAttribute.Type_.Name;
if Type1 = '' then Type1 := GetDBTypeByACType(AttributeType);
cbbTypeClick(nil);
end;
end;
end;
procedure TfDBAttributeParameters.edtAttributeNameChange(Sender: TObject);
begin
self.Caption := FUMLAttribute.Owner.Name + '.' + edtAttributeName.Text;
self.Name_ := edtAttributeName.Text;
end;
procedure TfDBAttributeParameters.edtNameChange(Sender: TObject);
begin
lblAttLength.Caption := inttostr(Length(edtName.Text));
end;
procedure TfDBAttributeParameters.FormShow(Sender: TObject);
begin
edtAttributeName.SetFocus;
edtAttributeName.SelectAll;
end;
function TfDBAttributeParameters.GetAttributeName: string;
begin
result := edtAttributeName.Text;
end;
function TfDBAttributeParameters.GetAttributeType: string;
begin
if cbbStarUMLTypes.ItemIndex <> -1 then
result := cbbStarUMLTypes.Text;
end;
function TfDBAttributeParameters.GetDBTypeByACType(piACType: string): string;
begin
if SameText(piACType, 'acBlob') then
result := 'TEXT'
else if SameText(piACType, 'acDateTime') then
result := 'DATETIME'
else if SameText(piACType, 'acString') then
result := 'VARCHAR'
else if SameText(piACType, 'acEnumeratedList') then
result := ''
else if SameText(piACType, 'acErrorList') then
result := ''
else if SameText(piACType, 'acGraphic') then
result := 'IMAGE'
else if SameText(piACType, 'acInt') then
result := 'INT'
else if SameText(piACType, 'acText') then
result := 'TEXT'
else if SameText(piACType, 'acFloat') then
result := 'DECIMAL'
else if SameText(piACType, 'acDouble') then
result := 'DECIMAL'
else if SameText(piACType, 'acBoolean') then
result := 'CHAR'
else if SameText(piACType, 'acReal') then
result := 'DECIMAL'
else if SameText(piACType, 'acCurrency') then
result := 'DECIMAL'
else if SameText(piACType, 'acXMLString') then
result := 'TEXT'
else if SameText(piACType, 'acXMLText') then
result := 'TEXT'
else result := '';
end;
function TfDBAttributeParameters.GetError: String;
begin
result := fError;
end;
function TfDBAttributeParameters.GetFSize: integer;
begin
result := strtointdef(edtFSize.Text,0);
end;
function TfDBAttributeParameters.GetIsAuditable: boolean;
begin
result := ckbIsAuditable.Checked;
end;
function TfDBAttributeParameters.GetMand: boolean;
begin
result := ckbMand.Checked;
end;
function TfDBAttributeParameters.GetName_: String;
begin
result := edtName.Text;
end;
function TfDBAttributeParameters.GetType1: String;
begin
result := cbbType.Text;
end;
function TfDBAttributeParameters.GetVSize: integer;
begin
Result := strtointdef(edtVSize.Text,0);
end;
procedure TfDBAttributeParameters.SetAttributeName(const Value: string);
begin
edtAttributeName.Text := value;
end;
procedure TfDBAttributeParameters.SetAttributeType(const Value: string);
var i: integer;
begin
cbbStarUMLTypes.ItemIndex := -1;
for I := 0 to cbbStarUMLTypes.Items.Count - 1 do
if SameText(cbbStarUMLTypes.Items[i], value) then
begin
cbbStarUMLTypes.ItemIndex := i;
break;
end;
end;
procedure TfDBAttributeParameters.SetError(const Value: String);
begin
fError := value;
lblError.Caption := value;
end;
procedure TfDBAttributeParameters.SetFSize(const Value: integer);
begin
edtFSize.Text := inttostr(Value);
end;
procedure TfDBAttributeParameters.SetIsAuditable(const Value: boolean);
begin
ckbIsAuditable.Checked := Value;
end;
procedure TfDBAttributeParameters.SetMand(const Value: boolean);
begin
ckbMand.Checked := Value;
end;
procedure TfDBAttributeParameters.SetName_(const Value: String);
begin
edtName.Text := Value;
lblAttLength.Caption := inttostr(Length(Value));
end;
procedure TfDBAttributeParameters.SetType1(const Value: String);
var i: integer;
begin
cbbType.ItemIndex := -1;
for I := 0 to cbbType.Items.Count - 1 do
if SameText(cbbType.Items[i], value) then
begin
cbbType.ItemIndex := i;
break;
end;
end;
procedure TfDBAttributeParameters.SetVSize(const Value: integer);
begin
edtVSize.Text := inttostr(Value);
end;
end.
object RTFEditor: TRTFEditor
Left = 174
Height = 568
Top = 107
Width = 760
ActiveControl = Editor
ClientHeight = 548
ClientWidth = 760
Color = clBtnFace
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Default'
Icon.Data = {
FE0200000000010001002020100000000000E802000016000000280000002000
0000400000000100040000000000800200000000000000000000000000000000
000000000000000080000080000000808000800000008000800080800000C0C0
C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
FF00000000000000000000000000000000000000000000000000000000000000
0000008888888888888888888888888888000444444444444444444444444444
480004FFFFFFFFFFFFFFFFFFFFFFFFFF480004F000000FFFFFFFFFFFFFFFFFFF
480004F0CCCC08000000FFFFFFFFFFFF480004F0CCCC0F09990FFFFFFFFFFFFF
480004F0CCC00009990FFF00000000FF480004F0CC0BBB0890FFFFFFFFFFFFFF
480004F008BBBBB090FFF000000000FF480004FFF0BBBBB80FFFFFFFFFFFFFFF
480004FFF0BBBBB0FFF00000000000FF480004FFFF0BBB0FFFFFFFFFFFFFFFFF
480004FFFFF000FFF00000F0000000FF480004FFFFFFFFFFFFFFFFFFFFFFFFFF
480004F00000F000000000000F0000FF480004FFFFFFFFFFFFFFFFFFFFFFFFFF
480004F0000000000F000000000000FF480004FFFFFFFFFFFFFFFFFFFFFFFFFF
480004FFFFFFFFFFFFFFFFFFFFFFFFFF480004F007FF700F000000FFF000007F
480004F700FF700F0087700F0008700F480004FF0000000F008F700F008FFFFF
480004FF700F007F7087700F007FFFFF480004FFF00700FFF00000FF008FFFFF
480004FFFF0000FFF007700F7007FFFF480004FFFF0000FFF007700FF000880F
480004FFFFF007FFF700000FFF00000F480004FFFFFFFFFFFFFFFFFFFFFFFFFF
4000044444444444444444444444444440000000000000000000000000000000
0000FFFFFFFFFFFFFFFFC0000003800000038000000380000003800000038000
0003800000038000000380000003800000038000000380000003800000038000
0003800000038000000380000003800000038000000380000003800000038000
000380000003800000038000000380000003800000038000000780000007FFFF
FFFF
}
Menu = MainMenu
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
OnPaint = FormPaint
OnResize = FormResize
OnShow = FormShow
Position = poDesktopCenter
LCLVersion = '2.1.0.0'
inline Editor: TSynEdit
Left = 0
Height = 450
Top = 24
Width = 760
Align = alClient
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqNonAntialiased
ParentColor = False
ParentFont = False
TabOrder = 0
Gutter.Width = 57
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
Keystrokes = <>
MouseActions = <>
MouseTextActions = <>
MouseSelActions = <>
VisibleSpecialChars = [vscSpace, vscTabAtLast]
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone
BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray
MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
OnChange = RichEditChange
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
Width = 24
MouseActions = <>
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
LeadingZeros = False
end
object SynGutterChanges1: TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
MouseActions = <>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <>
MouseActionsCollapsed = <>
end
end
end
object StatusBar: TStatusBar
Left = 0
Height = 23
Top = 474
Width = 760
Panels = <
item
Width = 120
end
item
Alignment = taCenter
Width = 60
end
item
Width = 50
end>
end
object StandardToolBar: TToolBar
Left = 0
Height = 24
Top = 0
Width = 760
AutoSize = True
BorderWidth = 2
Images = ToolbarImages
Indent = 4
ParentShowHint = False
ShowHint = True
TabOrder = 2
Wrapable = False
object ToolButton1: TToolButton
Left = 4
Top = 2
Action = FileNewCmd
end
object OpenButton: TToolButton
Left = 27
Top = 2
Action = FileOpenCmd
end
object SaveButton: TToolButton
Left = 50
Top = 2
Action = FileSaveCmd
end
object PrintButton: TToolButton
Left = 73
Top = 2
Action = FilePrintCmd
end
object ToolButton5: TToolButton
Left = 96
Height = 22
Top = 2
ImageIndex = 3
Style = tbsDivider
end
object CutButton: TToolButton
Left = 101
Top = 2
Action = EditCutCmd
end
object CopyButton: TToolButton
Left = 124
Top = 2
Action = EditCopyCmd
end
object PasteButton: TToolButton
Left = 147
Top = 2
Action = EditPasteCmd
end
object UndoButton: TToolButton
Left = 170
Top = 2
Action = EditUndoCmd
end
object ToolButton10: TToolButton
Left = 193
Height = 22
Top = 2
ImageIndex = 7
Style = tbsSeparator
end
object FontName: TComboBox
Left = 201
Height = 21
Hint = 'Font Name|Select font name'
Top = 2
Width = 173
DropDownCount = 10
ItemHeight = 13
OnChange = FontNameChange
TabOrder = 0
end
object ToolButton11: TToolButton
Left = 374
Height = 22
Top = 2
ImageIndex = 8
Style = tbsSeparator
end
object FontSize: TEdit
Left = 382
Height = 21
Hint = 'Font Size|Select font size'
Top = 2
Width = 26
OnChange = FontSizeChange
TabOrder = 1
Text = '0'
end
object UpDown1: TUpDown
Left = 408
Height = 22
Top = 2
Width = 15
Associate = FontSize
Min = 0
Position = 0
TabOrder = 2
end
object ToolButton2: TToolButton
Left = 423
Height = 22
Top = 2
Caption = 'ToolButton2'
ImageIndex = 15
Style = tbsSeparator
end
object BoldButton: TToolButton
Left = 431
Hint = 'Bold'
Top = 2
ImageIndex = 8
OnClick = BoldButtonClick
Style = tbsCheck
end
object ItalicButton: TToolButton
Left = 454
Hint = 'Italic'
Top = 2
ImageIndex = 9
OnClick = ItalicButtonClick
Style = tbsCheck
end
object UnderlineButton: TToolButton
Left = 477
Hint = 'Underline'
Top = 2
ImageIndex = 10
OnClick = UnderlineButtonClick
Style = tbsCheck
end
object ToolButton16: TToolButton
Left = 500
Height = 22
Top = 2
ImageIndex = 12
Style = tbsDivider
end
object LeftAlign: TToolButton
Left = 505
Hint = 'Align Left'
Top = 2
Grouped = True
ImageIndex = 11
OnClick = AlignButtonClick
Style = tbsCheck
end
object CenterAlign: TToolButton
Tag = 2
Left = 528
Hint = 'Center'
Top = 2
Grouped = True
ImageIndex = 12
OnClick = AlignButtonClick
Style = tbsCheck
end
object RightAlign: TToolButton
Tag = 1
Left = 551
Hint = 'Align Right'
Top = 2
Grouped = True
ImageIndex = 13
OnClick = AlignButtonClick
Style = tbsCheck
end
object ToolButton20: TToolButton
Left = 574
Height = 22
Top = 2
ImageIndex = 15
Style = tbsDivider
end
object BulletsButton: TToolButton
Left = 579
Hint = 'Bullets|Enter bullet mode'
Top = 2
ImageIndex = 14
OnClick = BulletsButtonClick
Style = tbsCheck
end
end
object Panel1: TPanel
Left = 0
Height = 51
Top = 497
Width = 760
Align = alBottom
BevelInner = bvLowered
ClientHeight = 51
ClientWidth = 760
TabOrder = 3
object Panel2: TPanel
Left = 414
Height = 47
Top = 2
Width = 344
Align = alRight
BevelOuter = bvNone
ClientHeight = 47
ClientWidth = 344
TabOrder = 0
object SpeedButton2: TSpeedButton
Left = 128
Height = 37
Top = 6
Width = 100
Caption = 'Save'
Glyph.Data = {
360C0000424D360C000000000000360000002800000020000000200000000100
180000000000000C0000120B0000120B00000000000000000000FF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF0066000066000066000066000066000066005B8D5AB5B3B3B5B3B3B5B3
B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B3B5B3B32D792D00660000
6600006600006600006600006600FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
006600008300008C00008C00008C00008C00007000367C36FAF6F3FDF9F6FDF9
F6FDF9F6FDF9F6FDF9F6F9F6F3F0EEECE7E5E4DEDDDDDEDDDD327E3200660000
6600006600007500008A00008300006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300297528FAF6F30066000066
00006600006600FAF6F3FDF9F6F9F6F3F0EEECE7E5E4DEDDDD37833600660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000073002A7629F6F0ED0066000066
00006600006600F3F0EDFBF7F4FDF9F7F8F4F2EFECEAE6E4E338843800660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000073002B772AEFE8E40066000066
00006600006600E9E6E4F5F2EFFCF8F5FDF9F6F6F3F0EDEBE93A863900660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000073002D782BE8DEDB0066000066
00006600006600DBD8D7ECE9E6F7F3F0FCF9F6FCF9F6F5F1EF3C883B00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300307A2DE0D4D10066000066
00006600006600C9C7C5DEDCDAEEEBE8F8F4F1FDF9F6FBF8F53E893C00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300327C2FDACCC90066000066
00006600006600B2B1B0CDCBCAE2DFDDF0EDEAF9F5F3FDF9F63F8B3E00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300357E30D6C6C30066000066
00006600006600A2A1A1B7B6B5D1CFCDE5E2E0F2EFECFAF7F43F8B3E00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009900009900009900009900007300377F32D6C6C3C9BDBABDB4
B2B2ADACA9A6A6A3A2A1A3A3A3BCBBBAD5D3D1E8E4E2F4F0EE3E8A3D00660000
6600006600007A00009700008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000099000099000099000099000099
0000990000990000990000990000990000990000990000990000990000990000
9900009900009900009800008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000099000099000099000099000099000099000099000099000099
0000990000990000990000990000990000990000990000990000990000990000
9900009900009900009900008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00009300008C00018E01049408079B0F0AA0140CA4180DA61A0DA6
1A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0DA61A0D
A61A0DA61A0AA213009900008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C00008000006600036B051187211EA13C29B65130C56133CB6733CB
6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733CB6733
CB6733CB6726BF4D009900008C00006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
006600008C000080003F893DFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BF4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
0066000083000079003B863AFAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3
F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FAF3F2FA
F3F2FAF3F226BB4D009900006600006600FF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF006600006600317D31C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2
C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3C2C2C3
C2C2D6BCBB26B24D006600006600FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
}
OnClick = SpeedButton2Click
end
object SpeedButton1: TSpeedButton
Left = 236
Height = 37
Top = 6
Width = 100
Caption = 'Cancel'
Glyph.Data = {
360C0000424D360C000000000000360000002800000020000000200000000100
180000000000000C0000120B0000120B00000000000000000000FF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FF021DD4021DD4FF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FF021DD4021DD4021DD4021DD4FF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FF021DD4021DD4021DD4021DD4021DD4FF00FFFF00FFFF00FF
011EE6011EE5FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FF021DD4021DD4021DD4021DD4021DD4FF00FFFF00FFFF00FF011FE9
011FE7011EE6011EE5FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FF021DD4021DD4021DD4021DD4021DD4FF00FFFF00FFFF00FFFF00FF011FEA
011FE9011FE7011EE6011EE5FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF02
1DD4021DD4021DD4021DD4021DD4FF00FFFF00FFFF00FFFF00FFFF00FF011FEB
011FEA011FE9011FE7011EE6011EE6FF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF021DD402
1DD4021DD4021DD4021DD4FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
011FEB011FEA011FE9011FE9011FE7011EE6FF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF021DD7021DD502
1DD5021DD4021DD4FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF011FEB011FEA011FEA011FE9011FE7011EE6FF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF021DD9021DD8021DD702
1DD7021DD5FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FF011FEB011FEB011FEA011FE9011FE7011EE6FF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF021EDC021EDA021DD9021DD902
1DD8FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FF011FEB011FEB011FEA011FE9011FE7011EE6FF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FF021EDE021EDD021EDC021EDA021DDAFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FF011FED011FEB011FEA011FE9011FE9011FE7FF00
FFFF00FFFF00FFFF00FFFF00FF021EE1021EE0021EDE021EDD021EDCFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011FEB011FEA011FEA011FE9011F
E7FF00FFFF00FFFF00FF011EE3021EE2021EE1021EE0021EDE021EDDFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011FEB011FEB011FEA011F
E9011FE7FF00FF011EE5011EE5011EE3011EE2021EE1021EE0FF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011FED011FEB011F
EA011FE9011FE7011EE6011EE6011EE5011EE3011EE2FF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011FED011F
EB011FEA011FE9011FE9011FE7011EE6011EE5FF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011F
ED011FEB011FEA011FEA011FE9011FE7FF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011FEF011F
EE011FED011FEB011FEB011FEA011FE9FF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011FF2011FF0011F
EF011FEE011FED011FED011FEB011FEA011FE9FF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011FF4011FF3011FF2011F
F0011FEF011FEEFF00FF011FED011FEB011FEA011FE9FF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011FF7011FF6011FF4011FF3011F
F2011FF0FF00FFFF00FFFF00FF011FED011FEB011FEA011FE9FF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FFFF00FF011FF8011FF8011FF7011FF6011FF4011F
F3FF00FFFF00FFFF00FFFF00FFFF00FF011FED011FEB011FEB011FEAFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FFFF00FF011FFA011FFA011FFA011FF8011FF7011FF6FF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011FED011FED011FEB011FEAFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FFFF00FF011FFA011FFA011FFA011FFA011FFA011FF8FF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011FED011FED011FEB01
1FEAFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FFFF00FF011FFA011FFA011FFA011FFA011FFA011FFAFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011FED01
1FEB011FEAFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
FF00FF011FFA011FFA011FFA011FFA011FFA011FFAFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF01
1FED011FEB011FEAFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
011FFA011FFA011FFA011FFA011FFA011FFA011FFAFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FF011FED011FEB011FEBFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011FFA
011FFA011FFA011FFA011FFA011FFA011FFAFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FF011FED011FED011FEBFF00FFFF00FFFF00FFFF00FF011FFA011FFA
011FFA011FFA011FFA011FFA011FFAFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FF011FEDFF00FFFF00FFFF00FFFF00FFFF00FF011FFA011FFA
011FFA011FFA011FFA011FFAFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011FFA011FFA
011FFA011FFA011FFAFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF011FFA
011FFA011FFAFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF
}
OnClick = SpeedButton1Click
end
end
end
object MainMenu: TMainMenu
Images = ToolbarImages
Left = 120
Top = 68
object FileMenu: TMenuItem
Caption = '&File'
object FileNewItem: TMenuItem
Action = FileNewCmd
end
object FileOpenItem: TMenuItem
Action = FileOpenCmd
end
object FileSaveItem: TMenuItem
Action = FileSaveCmd
end
object FileSaveAsItem: TMenuItem
Action = FileSaveAsCmd
end
object N1: TMenuItem
Caption = '-'
end
object FilePrintItem: TMenuItem
Action = FilePrintCmd
end
object N4: TMenuItem
Caption = '-'
end
object FileExitItem: TMenuItem
Action = FileExitCmd
end
end
object EditMenu: TMenuItem
Caption = '&Edit'
object EditUndoItem: TMenuItem
Action = EditUndoCmd
end
object N2: TMenuItem
Caption = '-'
end
object EditCutItem: TMenuItem
Action = EditCutCmd
end
object EditCopyItem: TMenuItem
Action = EditCopyCmd
end
object EditPasteItem: TMenuItem
Action = EditPasteCmd
end
object N5: TMenuItem
Caption = '-'
end
object miEditFont: TMenuItem
Caption = '&Font...'
OnClick = SelectFont
end
end
end
object OpenDialog: TOpenDialog
Filter = 'Rich Text Files (*.RTF)|*.RTF|Text Files (*.TXT)|*.TXT'
Left = 56
Top = 104
end
object SaveDialog: TSaveDialog
Filter = 'Rich Text Files (*.RTF)|*.RTF|Text Files (*.TXT)|*.TXT'
Left = 88
Top = 104
end
object PrintDialog: TPrintDialog
Left = 120
Top = 104
end
object FontDialog1: TFontDialog
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
MinFontSize = 0
MaxFontSize = 0
Left = 24
Top = 104
end
object ToolbarImages: TImageList
Left = 88
Top = 68
Bitmap = {
4C690F0000001000000010000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF00000000000000000000
00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF000000FF000000000000
00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFF000000FF0000
00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF000000FF000000FF0000
00FF0000000000000000000000000000000000000000000000FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
00FF0000000000000000000000000000000000000000000000FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
00FF0000000000000000000000000000000000000000000000FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
00FF0000000000000000000000000000000000000000000000FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
00FF0000000000000000000000000000000000000000000000FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
00FF0000000000000000000000000000000000000000000000FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
00FF0000000000000000000000000000000000000000000000FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
00FF0000000000000000000000000000000000000000000000FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
00FF0000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000FF000000FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000FF0000000000000000000000000000
00FF00000000000000FF00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF0000000000000000000000FF000000FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
00FF000000FF000000FF00000000000000FF00FFFFFFFFFFFFFF00FFFFFF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000000000
0000000000000000000000000000000000FFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF000000000000
0000000000000000000000000000000000FF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF000000000000
0000000000000000000000000000000000FFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF00FFFFFFFFFFFFFF00FFFFFF0000
00FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084
84FF008484FF000000FF00000000000000FFFFFFFFFF00FFFFFF000000FF0084
84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084
84FF000000FF0000000000000000000000FF00FFFFFF000000FF008484FF0084
84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0000
00FF000000000000000000000000000000FF000000FF008484FF008484FF0084
84FF008484FF008484FF008484FF008484FF008484FF008484FF000000FF0000
0000000000000000000000000000000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF0000000000000000000000FF008484FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
00FF00000000000000FF0000000000000000000000FF008484FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
00FF000000FF000000FF0000000000000000000000FF008484FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
00FF008484FF000000FF0000000000000000000000FF008484FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
00FF008484FF000000FF0000000000000000000000FF008484FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
00FF008484FF000000FF0000000000000000000000FF008484FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
00FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0084
84FF008484FF000000FF0000000000000000000000FF008484FF008484FF0084
84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084
84FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000
00FF000000FF000000FF000000FF000000FF000000FF00000000000000000000
00FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000
00FF000000FF000000FF000000FF000000FF000000FF00000000000000000000
00FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000
00FF000000FF000000FF000000FF000000FF000000FF00000000000000000000
00FF008484FF000000FF000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF0000000000000000000000000000000000000000000000000000
00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFF000000FF0000000000000000000000000000000000000000000000000000
00FFFFFFFFFF000000FF000000FF000000FF000000FF000000FFFFFFFFFF0000
00FF000000000000000000000000000000000000000000000000000000FFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
00FF000000000000000000000000000000000000000000000000000000FFFFFF
FFFF000000FF000000FF000000FF000000FF000000FFFFFFFFFF000000FF0000
00FF000000FF000000FF000000000000000000000000000000FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000
0000000000FF00000000000000FF00000000000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000000000
00FF00000000000000FF000000FF000000FF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000FF0000
0000000000FF00000000000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF0000000000000000000000FF000000FF0000000000000000000000000000
00000000000000000000848484FF848484FF848484FF00000000000000000000
00FF00000000000000FF00000000000000FF0000000000000000000000000000
0000000000000000000000FFFFFF00FFFFFF00FFFFFF00000000000000000000
00FF000000FF000000FF00000000000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF00000000000000FF0000000000000000000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000FF0000
0000000000FF00000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000840000FF840000FF840000FF840000FF0000
00000000000000000000000000000000000000000000840000FF000000000000
000000000000840000FF840000FF000000000000000000000000000000008400
00FF0000000000000000000000000000000000000000840000FF840000FF0000
0000840000FF0000000000000000000000000000000000000000000000000000
0000840000FF00000000000000000000000000000000840000FF840000FF8400
00FF000000000000000000000000000000000000000000000000000000000000
0000840000FF00000000000000000000000000000000840000FF840000FF8400
00FF840000FF0000000000000000000000000000000000000000000000000000
0000840000FF00000000000000000000000000000000840000FF840000FF8400
00FF840000FF840000FF00000000000000000000000000000000000000008400
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000008400
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000FF000000000000000000000000000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000FF000000000000000000000000000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000FF000000000000000000000000000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000FF000000FF00000000000000FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000FF00000000000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000FF000000FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000FF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000840000FF000000FF840000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000840000FF00000000840000FF840000FF840000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000840000FF840000FF840000FF00000000840000FF00000000000000008400
00FF000000000000000000000000000000000000000000000000000000008400
00FF0000000000000000840000FF00000000840000FF00000000000000008400
00FF000000000000000000000000000000000000000000000000000000008400
00FF0000000000000000840000FF00000000840000FF00000000000000008400
00FF000000000000000000000000000000000000000000000000000000008400
00FF0000000000000000840000FF0000000000000000840000FF840000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000840000FF840000FF00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000FF000000FF000000FF0000
00FF000000FF000000FF00000000000000000000000000000000000000000000
000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFF000000FF000000FF000000000000000000000000000000000000
000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFF000000FFFFFFFFFF000000FF0000000000000000000000000000
000000000000000000000000000000000000000000FFFFFFFFFF000000FF0000
00FFFFFFFFFF000000FF840000FF840000FF840000FF840000FF840000FF8400
00FF00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8400
00FF840000FF000000000000000000000000000000FFFFFFFFFF000000FF0000
00FF000000FF000000FF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8400
00FFFFFFFFFF840000FF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF840000FFFFFFFFFF000000FF000000FFFFFFFFFF8400
00FF840000FF840000FF840000FF00000000000000FFFFFFFFFF000000FF0000
00FF000000FF000000FF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF840000FF00000000000000FFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF840000FFFFFFFFFF000000FF000000FF000000FF0000
00FF000000FFFFFFFFFF840000FF00000000000000FF000000FF000000FF0000
00FF000000FF000000FF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF840000FF000000000000000000000000000000000000
00000000000000000000840000FFFFFFFFFF000000FF000000FF000000FF0000
00FF000000FFFFFFFFFF840000FF000000000000000000000000000000000000
00000000000000000000840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF840000FF000000000000000000000000000000000000
00000000000000000000840000FF840000FF840000FF840000FF840000FF8400
00FF840000FF840000FF840000FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF000000FF0000000000000000000000000000
000000000000000000000000000000000000000000FF000000FF000000FF0000
00FF000000FF00FFFFFF00FFFFFF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000FF008484FF848484FF008484FF0000
00FF00FFFFFF000000FF000000FF00FFFFFF000000FF848484FF008484FF8484
84FF000000FF0000000000000000000000FF848484FF848484FF000000FF0000
00000000000000000000000000000000000000000000000000FF848484FF0084
84FF000000FF0000000000000000000000FF008484FF848484FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF848484FF8484
84FF000000FF0000000000000000000000FF848484FF008484FF848484FF0084
84FF848484FF008484FF848484FF008484FF848484FF008484FF848484FF0084
84FF000000FF0000000000000000000000FF008484FF848484FF008484FF8484
84FF008484FF840000FF840000FF840000FF840000FF840000FF840000FF8400
00FF000000FF0000000000000000000000FF848484FF008484FF848484FF0084
84FF848484FF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8400
00FF840000FF0000000000000000000000FF008484FF848484FF008484FF8484
84FF008484FF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8400
00FFFFFFFFFF840000FF00000000000000FF848484FF008484FF848484FF0084
84FF848484FF840000FFFFFFFFFF000000FF000000FF000000FFFFFFFFFF8400
00FF840000FF840000FF840000FF000000FF008484FF848484FF008484FF8484
84FF008484FF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF840000FF000000FF848484FF008484FF848484FF0084
84FF848484FF840000FFFFFFFFFF000000FF000000FF000000FF000000FF0000
00FF000000FFFFFFFFFF840000FF00000000000000FF000000FF000000FF0000
00FF000000FF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF840000FF000000000000000000000000000000000000
000000000000840000FF840000FF840000FF840000FF840000FF840000FF8400
00FF840000FF840000FF840000FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF0000000000000000000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF0000000000000000000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF0000000000000000000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF0000000000000000000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF0000000000000000000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF0000000000000000000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000FF000000FF000000FF000000FF0000
00FF000000FF0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000FF000000FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000FF000000FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000FF000000FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000FF000000FF000000FF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00FF000000FF000000FF00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000FF0000
00FF000000FF0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000FF000000FF000000FF0000
00FF000000FF000000FF00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000FF0000
00FF000000FF000000FF00000000000000FF000000FF000000FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
00FF000000FF000000000000000000000000000000FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
00FF000000FF000000000000000000000000000000FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
00FF000000FF000000000000000000000000000000FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
00FF000000FF000000000000000000000000000000FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
00FF000000FF000000000000000000000000000000FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
00FF000000FF000000000000000000000000000000FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
00FF000000FF000000000000000000000000000000FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF000000FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF000000FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF000000FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000840000FF840000FF840000FF0000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000840000FF840000FF840000FF0000
000000000000000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000000000000000000000840000FF840000FF840000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000840000FF840000FF840000FF0000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000840000FF840000FF840000FF0000
000000000000000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000000000000000000000840000FF840000FF840000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000840000FF840000FF840000FF0000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000840000FF840000FF840000FF0000
000000000000000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000000000000000000000840000FF840000FF840000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000
}
end
object ActionList1: TActionList
Images = ToolbarImages
Left = 24
Top = 68
object FileNewCmd: TAction
Category = 'File'
Caption = '&New'
Hint = 'Create a new file'
ImageIndex = 0
OnExecute = FileNew
ShortCut = 16462
end
object FileOpenCmd: TAction
Category = 'File'
Caption = '&Open...'
Hint = 'Open an existing file'
ImageIndex = 1
OnExecute = FileOpen
ShortCut = 16463
end
object FileSaveCmd: TAction
Category = 'File'
Caption = '&Save'
Hint = 'Save current file'
ImageIndex = 2
OnExecute = FileSave
ShortCut = 16467
end
object FilePrintCmd: TAction
Category = 'File'
Caption = '&Print'
Hint = 'Print current file'
ImageIndex = 3
OnExecute = FilePrint
ShortCut = 16464
end
object FileExitCmd: TAction
Category = 'File'
Caption = 'E&xit'
Hint = 'Exit this application'
OnExecute = FileExit
ShortCut = 32856
end
object FileSaveAsCmd: TAction
Category = 'File'
Caption = 'Save &As...'
Hint = 'Save current file under a new name'
OnExecute = FileSaveAs
end
end
object ActionList2: TActionList
Images = ToolbarImages
OnUpdate = ActionList2Update
Left = 56
Top = 68
object EditUndoCmd: TAction
Category = 'Edit'
Caption = '&Undo'
Hint = 'Undo the last action'
ImageIndex = 4
OnExecute = EditUndo
ShortCut = 16474
end
object EditCutCmd: TAction
Category = 'Edit'
Caption = 'Cu&t'
Hint = 'Delete selected item'
ImageIndex = 5
OnExecute = EditCut
ShortCut = 16472
end
object EditCopyCmd: TAction
Category = 'Edit'
Caption = '&Copy'
Hint = 'Copy selected item to clipboard'
ImageIndex = 6
OnExecute = EditCopy
ShortCut = 16451
end
object EditPasteCmd: TAction
Category = 'Edit'
Caption = '&Paste'
Hint = 'Paste contents of clipboard'
ImageIndex = 7
OnExecute = EditPaste
ShortCut = 16470
end
object EditFontCmd: TAction
Category = 'Edit'
Caption = '&Font...'
OnExecute = SelectFont
end
end
end
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TRTFEditor','FORMDATA',[
'TPF0'#10'TRTFEditor'#9'RTFEditor'#4'Left'#3#174#0#6'Height'#3'8'#2#3'Top'#2
+'k'#5'Width'#3#248#2#13'ActiveControl'#7#6'Editor'#12'ClientHeight'#3'$'#2#11
+'ClientWidth'#3#248#2#5'Color'#7#9'clBtnFace'#10'Font.Color'#7#12'clWindowTe'
+'xt'#11'Font.Height'#2#245#9'Font.Name'#6#7'Default'#9'Icon.Data'#10#2#3#0#0
+#254#2#0#0#0#0#1#0#1#0' '#16#0#0#0#0#0#232#2#0#0#22#0#0#0'('#0#0#0' '#0#0#0
+'@'#0#0#0#1#0#4#0#0#0#0#0#128#2#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#128#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0#192#192#192
+#0#128#128#128#0#0#0#255#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0#255#0#255
+#255#0#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#136#136#136#136#136#136#136#136#136#136#136#136#136#136#0#4'DDD'
+'DDDDDDDDDDH'#0#4#255#255#255#255#255#255#255#255#255#255#255#255#255'H'#0#4
+#240#0#0#15#255#255#255#255#255#255#255#255#255'H'#0#4#240#204#204#8#0#0#0
+#255#255#255#255#255#255'H'#0#4#240#204#204#15#9#153#15#255#255#255#255#255
+#255'H'#0#4#240#204#192#0#9#153#15#255#0#0#0#0#255'H'#0#4#240#204#11#187#8
+#144#255#255#255#255#255#255#255'H'#0#4#240#8#187#187#176#144#255#240#0#0#0#0
+#255'H'#0#4#255#240#187#187#184#15#255#255#255#255#255#255#255'H'#0#4#255#240
+#187#187#176#255#240#0#0#0#0#0#255'H'#0#4#255#255#11#187#15#255#255#255#255
+#255#255#255#255'H'#0#4#255#255#240#0#255#240#0#0#240#0#0#0#255'H'#0#4#255
+#255#255#255#255#255#255#255#255#255#255#255#255'H'#0#4#240#0#0#240#0#0#0#0#0
+#15#0#0#255'H'#0#4#255#255#255#255#255#255#255#255#255#255#255#255#255'H'#0#4
+#240#0#0#0#0#15#0#0#0#0#0#0#255'H'#0#4#255#255#255#255#255#255#255#255#255
+#255#255#255#255'H'#0#4#255#255#255#255#255#255#255#255#255#255#255#255#255
+'H'#0#4#240#7#255'p'#15#0#0#0#255#240#0#0#127'H'#0#4#247#0#255'p'#15#0#135'p'
+#15#0#8'p'#15'H'#0#4#255#0#0#0#15#0#143'p'#15#0#143#255#255'H'#0#4#255'p'#15
+#0#127'p'#135'p'#15#0#127#255#255'H'#0#4#255#240#7#0#255#240#0#0#255#0#143
+#255#255'H'#0#4#255#255#0#0#255#240#7'p'#15'p'#7#255#255'H'#0#4#255#255#0#0
+#255#240#7'p'#15#240#0#136#15'H'#0#4#255#255#240#7#255#247#0#0#15#255#0#0#15
+'H'#0#4#255#255#255#255#255#255#255#255#255#255#255#255#255'@'#0#4'DDDDDDDDD'
+'DDDD@'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#192
+#0#0#3#128#0#0#3#128#0#0#3#128#0#0#3#128#0#0#3#128#0#0#3#128#0#0#3#128#0#0#3
+#128#0#0#3#128#0#0#3#128#0#0#3#128#0#0#3#128#0#0#3#128#0#0#3#128#0#0#3#128#0
+#0#3#128#0#0#3#128#0#0#3#128#0#0#3#128#0#0#3#128#0#0#3#128#0#0#3#128#0#0#3
+#128#0#0#3#128#0#0#3#128#0#0#3#128#0#0#3#128#0#0#7#128#0#0#7#255#255#255#255
+#4'Menu'#7#8'MainMenu'#12'OnCloseQuery'#7#14'FormCloseQuery'#8'OnCreate'#7#10
+'FormCreate'#7'OnPaint'#7#9'FormPaint'#8'OnResize'#7#10'FormResize'#6'OnShow'
+#7#8'FormShow'#8'Position'#7#15'poDesktopCenter'#10'LCLVersion'#6#7'2.1.0.0'
+#0#244#8'TSynEdit'#6'Editor'#4'Left'#2#0#6'Height'#3#194#1#3'Top'#2#24#5'Wid'
+'th'#3#248#2#5'Align'#7#8'alClient'#11'Font.Height'#2#243#9'Font.Name'#6#11
+'Courier New'#10'Font.Pitch'#7#7'fpFixed'#12'Font.Quality'#7#16'fqNonAntiali'
+'ased'#11'ParentColor'#8#10'ParentFont'#8#8'TabOrder'#2#0#12'Gutter.Width'#2
+'9'#19'Gutter.MouseActions'#14#0#17'RightGutter.Width'#2#0#24'RightGutter.Mo'
+'useActions'#14#0#10'Keystrokes'#14#0#12'MouseActions'#14#0#16'MouseTextActi'
+'ons'#14#0#15'MouseSelActions'#14#0#19'VisibleSpecialChars'#11#8'vscSpace'#12
+'vscTabAtLast'#0#26'SelectedColor.BackPriority'#2'2'#26'SelectedColor.ForePr'
+'iority'#2'2'#27'SelectedColor.FramePriority'#2'2'#26'SelectedColor.BoldPrio'
+'rity'#2'2'#28'SelectedColor.ItalicPriority'#2'2'#31'SelectedColor.Underline'
+'Priority'#2'2'#31'SelectedColor.StrikeOutPriority'#2'2'#21'BracketHighlight'
+'Style'#7#8'sbhsBoth'#28'BracketMatchColor.Background'#7#6'clNone'#28'Bracke'
+'tMatchColor.Foreground'#7#6'clNone'#23'BracketMatchColor.Style'#11#6'fsBold'
+#0#26'FoldedCodeColor.Background'#7#6'clNone'#26'FoldedCodeColor.Foreground'
+#7#6'clGray'#26'FoldedCodeColor.FrameColor'#7#6'clGray'#25'MouseLinkColor.Ba'
+'ckground'#7#6'clNone'#25'MouseLinkColor.Foreground'#7#6'clBlue'#29'LineHigh'
+'lightColor.Background'#7#6'clNone'#29'LineHighlightColor.Foreground'#7#6'cl'
+'None'#8'OnChange'#7#14'RichEditChange'#0#244#18'TSynGutterPartList'#22'SynL'
+'eftGutterPartList1'#0#15'TSynGutterMarks'#15'SynGutterMarks1'#5'Width'#2#24
+#12'MouseActions'#14#0#0#0#20'TSynGutterLineNumber'#20'SynGutterLineNumber1'
+#5'Width'#2#17#12'MouseActions'#14#0#21'MarkupInfo.Background'#7#9'clBtnFace'
+#21'MarkupInfo.Foreground'#7#6'clNone'#10'DigitCount'#2#2#30'ShowOnlyLineNum'
+'bersMultiplesOf'#2#1#9'ZeroStart'#8#12'LeadingZeros'#8#0#0#17'TSynGutterCha'
+'nges'#17'SynGutterChanges1'#5'Width'#2#4#12'MouseActions'#14#0#13'ModifiedC'
+'olor'#4#252#233#0#0#10'SavedColor'#7#7'clGreen'#0#0#19'TSynGutterSeparator'
+#19'SynGutterSeparator1'#5'Width'#2#2#12'MouseActions'#14#0#21'MarkupInfo.Ba'
+'ckground'#7#7'clWhite'#21'MarkupInfo.Foreground'#7#6'clGray'#0#0#21'TSynGut'
+'terCodeFolding'#21'SynGutterCodeFolding1'#12'MouseActions'#14#0#21'MarkupIn'
,'fo.Background'#7#6'clNone'#21'MarkupInfo.Foreground'#7#6'clGray'#20'MouseAc'
+'tionsExpanded'#14#0#21'MouseActionsCollapsed'#14#0#0#0#0#0#10'TStatusBar'#9
+'StatusBar'#4'Left'#2#0#6'Height'#2#23#3'Top'#3#218#1#5'Width'#3#248#2#6'Pan'
+'els'#14#1#5'Width'#2'x'#0#1#9'Alignment'#7#8'taCenter'#5'Width'#2'<'#0#1#5
+'Width'#2'2'#0#0#0#0#8'TToolBar'#15'StandardToolBar'#4'Left'#2#0#6'Height'#2
+#24#3'Top'#2#0#5'Width'#3#248#2#8'AutoSize'#9#11'BorderWidth'#2#2#6'Images'#7
+#13'ToolbarImages'#6'Indent'#2#4#14'ParentShowHint'#8#8'ShowHint'#9#8'TabOrd'
+'er'#2#2#8'Wrapable'#8#0#11'TToolButton'#11'ToolButton1'#4'Left'#2#4#3'Top'#2
+#2#6'Action'#7#10'FileNewCmd'#0#0#11'TToolButton'#10'OpenButton'#4'Left'#2#27
+#3'Top'#2#2#6'Action'#7#11'FileOpenCmd'#0#0#11'TToolButton'#10'SaveButton'#4
+'Left'#2'2'#3'Top'#2#2#6'Action'#7#11'FileSaveCmd'#0#0#11'TToolButton'#11'Pr'
+'intButton'#4'Left'#2'I'#3'Top'#2#2#6'Action'#7#12'FilePrintCmd'#0#0#11'TToo'
+'lButton'#11'ToolButton5'#4'Left'#2'`'#6'Height'#2#22#3'Top'#2#2#10'ImageInd'
+'ex'#2#3#5'Style'#7#10'tbsDivider'#0#0#11'TToolButton'#9'CutButton'#4'Left'#2
+'e'#3'Top'#2#2#6'Action'#7#10'EditCutCmd'#0#0#11'TToolButton'#10'CopyButton'
+#4'Left'#2'|'#3'Top'#2#2#6'Action'#7#11'EditCopyCmd'#0#0#11'TToolButton'#11
+'PasteButton'#4'Left'#3#147#0#3'Top'#2#2#6'Action'#7#12'EditPasteCmd'#0#0#11
+'TToolButton'#10'UndoButton'#4'Left'#3#170#0#3'Top'#2#2#6'Action'#7#11'EditU'
+'ndoCmd'#0#0#11'TToolButton'#12'ToolButton10'#4'Left'#3#193#0#6'Height'#2#22
+#3'Top'#2#2#10'ImageIndex'#2#7#5'Style'#7#12'tbsSeparator'#0#0#9'TComboBox'#8
+'FontName'#4'Left'#3#201#0#6'Height'#2#21#4'Hint'#6#26'Font Name|Select font'
+' name'#3'Top'#2#2#5'Width'#3#173#0#13'DropDownCount'#2#10#10'ItemHeight'#2
+#13#8'OnChange'#7#14'FontNameChange'#8'TabOrder'#2#0#0#0#11'TToolButton'#12
+'ToolButton11'#4'Left'#3'v'#1#6'Height'#2#22#3'Top'#2#2#10'ImageIndex'#2#8#5
+'Style'#7#12'tbsSeparator'#0#0#5'TEdit'#8'FontSize'#4'Left'#3'~'#1#6'Height'
+#2#21#4'Hint'#6#26'Font Size|Select font size'#3'Top'#2#2#5'Width'#2#26#8'On'
+'Change'#7#14'FontSizeChange'#8'TabOrder'#2#1#4'Text'#6#1'0'#0#0#7'TUpDown'#7
+'UpDown1'#4'Left'#3#152#1#6'Height'#2#22#3'Top'#2#2#5'Width'#2#15#9'Associat'
+'e'#7#8'FontSize'#3'Min'#2#0#8'Position'#2#0#8'TabOrder'#2#2#0#0#11'TToolBut'
+'ton'#11'ToolButton2'#4'Left'#3#167#1#6'Height'#2#22#3'Top'#2#2#7'Caption'#6
+#11'ToolButton2'#10'ImageIndex'#2#15#5'Style'#7#12'tbsSeparator'#0#0#11'TToo'
+'lButton'#10'BoldButton'#4'Left'#3#175#1#4'Hint'#6#4'Bold'#3'Top'#2#2#10'Ima'
+'geIndex'#2#8#7'OnClick'#7#15'BoldButtonClick'#5'Style'#7#8'tbsCheck'#0#0#11
+'TToolButton'#12'ItalicButton'#4'Left'#3#198#1#4'Hint'#6#6'Italic'#3'Top'#2#2
+#10'ImageIndex'#2#9#7'OnClick'#7#17'ItalicButtonClick'#5'Style'#7#8'tbsCheck'
+#0#0#11'TToolButton'#15'UnderlineButton'#4'Left'#3#221#1#4'Hint'#6#9'Underli'
+'ne'#3'Top'#2#2#10'ImageIndex'#2#10#7'OnClick'#7#20'UnderlineButtonClick'#5
+'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#12'ToolButton16'#4'Left'#3#244#1#6
+'Height'#2#22#3'Top'#2#2#10'ImageIndex'#2#12#5'Style'#7#10'tbsDivider'#0#0#11
+'TToolButton'#9'LeftAlign'#4'Left'#3#249#1#4'Hint'#6#10'Align Left'#3'Top'#2
+#2#7'Grouped'#9#10'ImageIndex'#2#11#7'OnClick'#7#16'AlignButtonClick'#5'Styl'
+'e'#7#8'tbsCheck'#0#0#11'TToolButton'#11'CenterAlign'#3'Tag'#2#2#4'Left'#3#16
+#2#4'Hint'#6#6'Center'#3'Top'#2#2#7'Grouped'#9#10'ImageIndex'#2#12#7'OnClick'
+#7#16'AlignButtonClick'#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#10'RightA'
+'lign'#3'Tag'#2#1#4'Left'#3''''#2#4'Hint'#6#11'Align Right'#3'Top'#2#2#7'Gro'
+'uped'#9#10'ImageIndex'#2#13#7'OnClick'#7#16'AlignButtonClick'#5'Style'#7#8
+'tbsCheck'#0#0#11'TToolButton'#12'ToolButton20'#4'Left'#3'>'#2#6'Height'#2#22
+#3'Top'#2#2#10'ImageIndex'#2#15#5'Style'#7#10'tbsDivider'#0#0#11'TToolButton'
+#13'BulletsButton'#4'Left'#3'C'#2#4'Hint'#6#25'Bullets|Enter bullet mode'#3
+'Top'#2#2#10'ImageIndex'#2#14#7'OnClick'#7#18'BulletsButtonClick'#5'Style'#7
+#8'tbsCheck'#0#0#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'Height'#2'3'#3'Top'#3
+#241#1#5'Width'#3#248#2#5'Align'#7#8'alBottom'#10'BevelInner'#7#9'bvLowered'
+#12'ClientHeight'#2'3'#11'ClientWidth'#3#248#2#8'TabOrder'#2#3#0#6'TPanel'#6
+'Panel2'#4'Left'#3#158#1#6'Height'#2'/'#3'Top'#2#2#5'Width'#3'X'#1#5'Align'#7
+#7'alRight'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'/'#11'ClientWidth'
+#3'X'#1#8'TabOrder'#2#0#0#12'TSpeedButton'#12'SpeedButton2'#4'Left'#3#128#0#6
+'Height'#2'%'#3'Top'#2#6#5'Width'#2'd'#7'Caption'#6#4'Save'#10'Glyph.Data'#10
+':'#12#0#0'6'#12#0#0'BM6'#12#0#0#0#0#0#0'6'#0#0#0'('#0#0#0' '#0#0#0' '#0#0#0
+#1#0#24#0#0#0#0#0#0#12#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
,#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0'f'#0#0'f'#0#0
+'f'#0#0'f'#0#0'f'#0'['#141'Z'#181#179#179#181#179#179#181#179#179#181#179#179
+#181#179#179#181#179#179#181#179#179#181#179#179#181#179#179#181#179#179#181
+#179#179'-y-'#0'f'#0#0'f'#0#0'f'#0#0'f'#0#0'f'#0#0'f'#0#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#131#0#0#140#0#0#140#0#0#140
+#0#0#140#0#0'p'#0'6|6'#250#246#243#253#249#246#253#249#246#253#249#246#253
+#249#246#253#249#246#249#246#243#240#238#236#231#229#228#222#221#221#222#221
+#221'2~2'#0'f'#0#0'f'#0#0'f'#0#0'u'#0#0#138#0#0#131#0#0'f'#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0
+#153#0#0's'#0')u('#250#246#243#0'f'#0#0'f'#0#0'f'#0#0'f'#0#250#246#243#253
+#249#246#249#246#243#240#238#236#231#229#228#222#221#221'7'#131'6'#0'f'#0#0
+'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0's'#0'*v)'
+#246#240#237#0'f'#0#0'f'#0#0'f'#0#0'f'#0#243#240#237#251#247#244#253#249#247
+#248#244#242#239#236#234#230#228#227'8'#132'8'#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0
+#151#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'
+#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0's'#0'+w*'#239#232#228#0'f'#0#0
+'f'#0#0'f'#0#0'f'#0#233#230#228#245#242#239#252#248#245#253#249#246#246#243
+#240#237#235#233':'#134'9'#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0
+#153#0#0#153#0#0#153#0#0's'#0'-x+'#232#222#219#0'f'#0#0'f'#0#0'f'#0#0'f'#0
+#219#216#215#236#233#230#247#243#240#252#249#246#252#249#246#245#241#239'<'
+#136';'#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0
+#153#0#0's'#0'0z-'#224#212#209#0'f'#0#0'f'#0#0'f'#0#0'f'#0#201#199#197#222
+#220#218#238#235#232#248#244#241#253#249#246#251#248#245'>'#137'<'#0'f'#0#0
+'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0's'#0'2|/'
+#218#204#201#0'f'#0#0'f'#0#0'f'#0#0'f'#0#178#177#176#205#203#202#226#223#221
+#240#237#234#249#245#243#253#249#246'?'#139'>'#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0
+#151#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'
+#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0's'#0'5~0'#214#198#195#0'f'#0#0
+'f'#0#0'f'#0#0'f'#0#162#161#161#183#182#181#209#207#205#229#226#224#242#239
+#236#250#247#244'?'#139'>'#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0'f'#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153#0#0
+#153#0#0#153#0#0#153#0#0's'#0'7'#127'2'#214#198#195#201#189#186#189#180#178
+#178#173#172#169#166#166#163#162#161#163#163#163#188#187#186#213#211#209#232
+#228#226#244#240#238'>'#138'='#0'f'#0#0'f'#0#0'f'#0#0'z'#0#0#151#0#0#140#0#0
+'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#153
+#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0
+#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153
+#0#0#153#0#0#153#0#0#152#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#0'f'#0#0#140#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0
+#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0
+#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#153#0#0#140#0#0'f'#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#147#0#0
+#140#0#1#142#1#4#148#8#7#155#15#10#160#20#12#164#24#13#166#26#13#166#26#13
+#166#26#13#166#26#13#166#26#13#166#26#13#166#26#13#166#26#13#166#26#13#166#26
+#13#166#26#13#166#26#13#166#26#13#166#26#10#162#19#0#153#0#0#140#0#0'f'#0#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0#0'f'#0
+#3'k'#5#17#135'!'#30#161'<)'#182'Q0'#197'a3'#203'g3'#203'g3'#203'g3'#203'g3'
+#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'#203'g3'#203
+'g&'#191'M'#0#153#0#0#140#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'
+#137'='#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
,#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0
+'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128
+#0'?'#137'='#250#243#242#250#243#242#250#243#242#192#192#192#192#192#192#192
+#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192
+#192#192#192#192#192#192#192#192#192#192#192#192#192#250#243#242#250#243#242
+#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0
+#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0
+#128#0'?'#137'='#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250#243
+#242#250#243#242#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192
+#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192
+#192#192#192#192#192#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0
+'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0
+#0#128#0'?'#137'='#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242'&'#191'M'#0#153
+#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0#0
+#140#0#0#128#0'?'#137'='#250#243#242#250#243#242#250#243#242#192#192#192#192
+#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192
+#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#250#243#242
+#250#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#0'f'#0#0#140#0#0#128#0'?'#137'='#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242'&'#191'M'#0
+#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'f'#0
+#0#140#0#0#128#0'?'#137'='#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243
+#242#250#243#242#250#243#242'&'#191'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#0'f'#0#0#131#0#0'y'#0';'#134':'#250#243
+#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242
+#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250
+#243#242#250#243#242#250#243#242#250#243#242#250#243#242#250#243#242'&'#187
+'M'#0#153#0#0'f'#0#0'f'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#0'f'#0#0'f'#0'1}1'#195#194#194#195#194#194#195#194#194#195#194#194
+#195#194#194#195#194#194#195#194#194#195#194#194#195#194#194#195#194#194#195
+#194#194#195#194#194#195#194#194#195#194#194#195#194#194#195#194#194#195#194
+#194#195#194#194#214#188#187'&'#178'M'#0'f'#0#0'f'#0#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7'OnClick'#7#17'Speed'
,'Button2Click'#0#0#12'TSpeedButton'#12'SpeedButton1'#4'Left'#3#236#0#6'Heigh'
+'t'#2'%'#3'Top'#2#6#5'Width'#2'd'#7'Caption'#6#6'Cancel'#10'Glyph.Data'#10':'
+#12#0#0'6'#12#0#0'BM6'#12#0#0#0#0#0#0'6'#0#0#0'('#0#0#0' '#0#0#0' '#0#0#0#1#0
+#24#0#0#0#0#0#0#12#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#2#29#212#2#29#212#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#2#29#212#2#29#212#2#29#212
+#2#29#212#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#2#29#212#2#29#212#2#29
+#212#2#29#212#2#29#212#255#0#255#255#0#255#255#0#255#1#30#230#1#30#229#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#2#29#212#2#29#212#2#29
+#212#2#29#212#2#29#212#255#0#255#255#0#255#255#0#255#1#31#233#1#31#231#1#30
+#230#1#30#229#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#2#29#212#2#29#212#2#29#212
+#2#29#212#2#29#212#255#0#255#255#0#255#255#0#255#255#0#255#1#31#234#1#31#233
+#1#31#231#1#30#230#1#30#229#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#2#29#212#2#29#212#2#29#212#2#29
+#212#2#29#212#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#1#31#235#1#31
+#234#1#31#233#1#31#231#1#30#230#1#30#230#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#2#29#212#2#29#212#2#29#212#2#29#212
+#2#29#212#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#1#31#235#1#31#234#1#31#233#1#31#233#1#31#231#1#30#230#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#2#29#215#2#29#213#2#29#213#2#29#212
+#2#29#212#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#1#31#235#1#31#234#1#31#234#1#31#233#1#31#231#1#30
+#230#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#2#29#217#2#29#216#2#29#215#2#29#215
+#2#29#213#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#1#31#235#1#31#235#1#31#234#1#31
+#233#1#31#231#1#30#230#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#2#30#220#2#30#218#2#29#217#2#29#217#2#29
+#216#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#1#31#235#1#31
+#235#1#31#234#1#31#233#1#31#231#1#30#230#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#2#30#222#2#30#221#2#30#220#2#30#218#2#29
+#218#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#1#31#237#1#31#235#1#31#234#1#31#233#1#31#233#1#31#231#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#2#30#225#2#30#224#2#30#222#2#30#221#2#30
+#220#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#1#31#235#1#31#234#1#31#234#1#31#233#1#31
+#231#255#0#255#255#0#255#255#0#255#1#30#227#2#30#226#2#30#225#2#30#224#2#30
+#222#2#30#221#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#1#31#235#1#31#235#1#31#234
+#1#31#233#1#31#231#255#0#255#1#30#229#1#30#229#1#30#227#1#30#226#2#30#225#2
+#30#224#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#1#31#237#1
+#31#235#1#31#234#1#31#233#1#31#231#1#30#230#1#30#230#1#30#229#1#30#227#1#30
,#226#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#1#31#237#1#31#235#1#31#234#1#31#233#1#31#233#1#31#231#1#30#230#1
+#30#229#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#1#31#237#1#31#235#1#31#234#1#31#234#1#31#233#1
+#31#231#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#1#31#239#1#31#238#1#31#237#1#31#235#1#31#235#1
+#31#234#1#31#233#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#1#31#242#1#31#240#1#31#239#1#31#238#1#31#237#1
+#31#237#1#31#235#1#31#234#1#31#233#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#1#31#244#1#31#243#1#31#242#1#31#240#1#31#239#1
+#31#238#255#0#255#1#31#237#1#31#235#1#31#234#1#31#233#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#1#31#247#1#31#246#1#31#244#1#31#243#1#31#242#1#31
+#240#255#0#255#255#0#255#255#0#255#1#31#237#1#31#235#1#31#234#1#31#233#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#1#31#248#1#31#248#1#31#247#1#31#246#1#31#244#1#31
+#243#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#1#31#237#1#31#235#1#31
+#235#1#31#234#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#1#31#250#1#31#250#1#31#250#1#31#248#1#31#247#1#31#246
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#1#31
+#237#1#31#237#1#31#235#1#31#234#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250#1#31#248
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#1#31#237#1#31#237#1#31#235#1#31#234#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#1#31#237#1#31#235#1#31#234#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#1#31#237#1
+#31#235#1#31#234#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250#1
+#31#250#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#1#31#237#1#31#235#1#31#235#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#1#31#237#1#31#237#1#31#235#255#0#255#255#0#255#255#0#255
+#255#0#255#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#1#31#237#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#1#31#250#1#31#250#1#31#250#1#31#250#1#31#250
,#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#1#31#250#1#31#250#1#31
+#250#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7'OnClick'#7#17
+'SpeedButton1Click'#0#0#0#0#9'TMainMenu'#8'MainMenu'#6'Images'#7#13'ToolbarI'
+'mages'#4'Left'#2'x'#3'Top'#2'D'#0#9'TMenuItem'#8'FileMenu'#7'Caption'#6#5'&'
+'File'#0#9'TMenuItem'#11'FileNewItem'#6'Action'#7#10'FileNewCmd'#0#0#9'TMenu'
+'Item'#12'FileOpenItem'#6'Action'#7#11'FileOpenCmd'#0#0#9'TMenuItem'#12'File'
+'SaveItem'#6'Action'#7#11'FileSaveCmd'#0#0#9'TMenuItem'#14'FileSaveAsItem'#6
+'Action'#7#13'FileSaveAsCmd'#0#0#9'TMenuItem'#2'N1'#7'Caption'#6#1'-'#0#0#9
+'TMenuItem'#13'FilePrintItem'#6'Action'#7#12'FilePrintCmd'#0#0#9'TMenuItem'#2
+'N4'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#12'FileExitItem'#6'Action'#7#11'File'
+'ExitCmd'#0#0#0#9'TMenuItem'#8'EditMenu'#7'Caption'#6#5'&Edit'#0#9'TMenuItem'
+#12'EditUndoItem'#6'Action'#7#11'EditUndoCmd'#0#0#9'TMenuItem'#2'N2'#7'Capti'
+'on'#6#1'-'#0#0#9'TMenuItem'#11'EditCutItem'#6'Action'#7#10'EditCutCmd'#0#0#9
+'TMenuItem'#12'EditCopyItem'#6'Action'#7#11'EditCopyCmd'#0#0#9'TMenuItem'#13
+'EditPasteItem'#6'Action'#7#12'EditPasteCmd'#0#0#9'TMenuItem'#2'N5'#7'Captio'
+'n'#6#1'-'#0#0#9'TMenuItem'#10'miEditFont'#7'Caption'#6#8'&Font...'#7'OnClic'
+'k'#7#10'SelectFont'#0#0#0#0#11'TOpenDialog'#10'OpenDialog'#6'Filter'#6'6Ric'
+'h Text Files (*.RTF)|*.RTF|Text Files (*.TXT)|*.TXT'#4'Left'#2'8'#3'Top'#2
+'h'#0#0#11'TSaveDialog'#10'SaveDialog'#6'Filter'#6'6Rich Text Files (*.RTF)|'
+'*.RTF|Text Files (*.TXT)|*.TXT'#4'Left'#2'X'#3'Top'#2'h'#0#0#12'TPrintDialo'
+'g'#11'PrintDialog'#4'Left'#2'x'#3'Top'#2'h'#0#0#11'TFontDialog'#11'FontDial'
+'og1'#10'Font.Color'#7#12'clWindowText'#11'Font.Height'#2#245#9'Font.Name'#6
+#13'MS Sans Serif'#11'MinFontSize'#2#0#11'MaxFontSize'#2#0#4'Left'#2#24#3'To'
+'p'#2'h'#0#0#10'TImageList'#13'ToolbarImages'#4'Left'#2'X'#3'Top'#2'D'#6'Bit'
+'map'#10#14'<'#0#0'Li'#15#0#0#0#16#0#0#0#16#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#255#0
+#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#0#0#0#255#255#255#255#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#255#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#255#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#255#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
,#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#0#0#0#0#255#0#255#255#255#255#255#255#255#0#255#255
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#0#255#255
+#255#255#255#255#255#0#255#255#255#255#255#255#255#0#255#255#255#255#255#255
+#255#0#255#255#255#255#255#255#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#255#0#255#255#255#255#255#255#255#0#255#255#255#255#255#255
+#255#0#255#255#255#255#255#255#255#0#255#255#255#255#255#255#255#0#255#255
+#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255
+#255#0#255#255#255#255#255#255#255#0#255#255#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#255#255#255#255#255#255#255#0#255#255#255#0#0#0#255#0
+#132#132#255#0#132#132#255#0#132#132#255#0#132#132#255#0#132#132#255#0#132
+#132#255#0#132#132#255#0#132#132#255#0#132#132#255#0#0#0#255#0#0#0#0#0#0#0
+#255#255#255#255#255#0#255#255#255#0#0#0#255#0#132#132#255#0#132#132#255#0
+#132#132#255#0#132#132#255#0#132#132#255#0#132#132#255#0#132#132#255#0#132
+#132#255#0#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#255#255#255#0#0
+#0#255#0#132#132#255#0#132#132#255#0#132#132#255#0#132#132#255#0#132#132#255
+#0#132#132#255#0#132#132#255#0#132#132#255#0#132#132#255#0#0#0#255#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#132#132#255#0#132#132#255#0#132#132#255
+#0#132#132#255#0#132#132#255#0#132#132#255#0#132#132#255#0#132#132#255#0#132
+#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0
+#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#132#132
+#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#132#132#255#0#0
+#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#255#0#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#132#132#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#255#0#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#132#132#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#255#0#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#132#132#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#255#0#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#132#132#255#0#132
+#132#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#132#132#255#0#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0
+#255#0#132#132#255#0#132#132#255#0#132#132#255#0#132#132#255#0#132#132#255#0
+#132#132#255#0#132#132#255#0#132#132#255#0#132#132#255#0#132#132#255#0#132
+#132#255#0#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#132#132#255#0
+#132#132#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#255#0#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255
+#0#132#132#255#0#132#132#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#132#132#255#0#0#0#255#0#0#0#0#0#0
,#0#0#0#0#0#255#0#132#132#255#0#132#132#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#132#132#255#0#0#0#255
+#0#0#0#0#0#0#0#0#0#0#0#255#0#132#132#255#0#132#132#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#132#132
+#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#255#255#255#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#132#132#255#132#132#132#255#132#132
+#132#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255
+#255#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255
+#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#0#0
+#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0
+#255#132#0#0#255#132#0#0#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#132#0#0#255#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#132#0#0#255#132#0#0#255#0#0#0#0#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132
+#0#0#255#132#0#0#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255
+#132#0#0#255#132#0#0#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#132
+#0#0#255#132#0#0#255#132#0#0#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#0#0#0#255#132#0#0#255#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#132#0#0#255#0#0#0#0#132#0#0#255#132#0#0#255#132#0#0#255#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0
+#255#132#0#0#255#132#0#0#255#0#0#0#0#132#0#0#255#0#0#0#0#0#0#0#0#132#0#0#255
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#0#0#0#0
+#0#0#0#0#132#0#0#255#0#0#0#0#132#0#0#255#0#0#0#0#0#0#0#0#132#0#0#255#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#0#0#0#0#0#0#0#0
+#132#0#0#255#0#0#0#0#132#0#0#255#0#0#0#0#0#0#0#0#132#0#0#255#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#0#0#0#0#0#0#0#0#132#0#0
+#255#0#0#0#0#0#0#0#0#132#0#0#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#132#0#0#255#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#0#0#0#255#255#255#255#255#0#0#0#255#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#0
+#0#0#255#0#0#0#255#255#255#255#255#0#0#0#255#132#0#0#255#132#0#0#255#132#0#0
+#255#132#0#0#255#132#0#0#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#132#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#132#0#0#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255
+#255#255#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#132#0#0#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#132#0#0#255#255#255#255
+#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#132#0#0#255#255#255#255#255
+#0#0#0#255#0#0#0#255#255#255#255#255#132#0#0#255#132#0#0#255#132#0#0#255#132
+#0#0#255#0#0#0#0#0#0#0#255#255#255#255#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0
+#0#255#132#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#132#0#0#255#0#0#0#0
+#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#132#0#0#255#255#255#255#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#255#255#255#255#132#0#0#255#0#0#0#0#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#132#0#0#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#132#0#0#255#255#255#255#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0
+#0#255#255#255#255#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
,#0#0#0#0#0#0#0#132#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#132#0#0#255
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#132#0#0
+#255#132#0#0#255#132#0#0#255#132#0#0#255#132#0#0#255#132#0#0#255#132#0#0#255
+#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255
+#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#255#255#255#0
+#255#255#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#255#0#132#132#255#132#132#132#255#0#132#132#255#0#0#0#255#0
+#255#255#255#0#0#0#255#0#0#0#255#0#255#255#255#0#0#0#255#132#132#132#255#0
+#132#132#255#132#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#132#132#132
+#255#132#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#255#132#132#132#255#0#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0
+#255#0#132#132#255#132#132#132#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#132#132#132#255#132#132#132#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#255#132#132#132#255#0#132#132#255#132#132#132#255
+#0#132#132#255#132#132#132#255#0#132#132#255#132#132#132#255#0#132#132#255
+#132#132#132#255#0#132#132#255#132#132#132#255#0#132#132#255#0#0#0#255#0#0#0
+#0#0#0#0#0#0#0#0#255#0#132#132#255#132#132#132#255#0#132#132#255#132#132#132
+#255#0#132#132#255#132#0#0#255#132#0#0#255#132#0#0#255#132#0#0#255#132#0#0
+#255#132#0#0#255#132#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#132#132#132
+#255#0#132#132#255#132#132#132#255#0#132#132#255#132#132#132#255#132#0#0#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#132#0#0#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#132#132#255#132#132
+#132#255#0#132#132#255#132#132#132#255#0#132#132#255#132#0#0#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#132#0#0
+#255#255#255#255#255#132#0#0#255#0#0#0#0#0#0#0#255#132#132#132#255#0#132#132
+#255#132#132#132#255#0#132#132#255#132#132#132#255#132#0#0#255#255#255#255
+#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#255#132#0#0#255#132#0#0#255
+#132#0#0#255#132#0#0#255#0#0#0#255#0#132#132#255#132#132#132#255#0#132#132
+#255#132#132#132#255#0#132#132#255#132#0#0#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#132#0#0#255#0#0#0#255#132#132#132#255#0#132#132#255
+#132#132#132#255#0#132#132#255#132#132#132#255#132#0#0#255#255#255#255#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#255
+#132#0#0#255#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#132#0
+#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#132#0#0#255#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#132#0#0#255#132#0#0
+#255#132#0#0#255#132#0#0#255#132#0#0#255#132#0#0#255#132#0#0#255#132#0#0#255
+#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0
,#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0
+#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
+#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
+#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
+#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0
,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255
+#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#132#0#0
+#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#132#0#0#255#132#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#132#0#0#255#132
+#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255
+#132#0#0#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#132#0#0#255
+#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255#132#0
+#0#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#132#0#0#255#132#0#0#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0#255
+#132#0#0#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#132#0#0
+#255#132#0#0#255#132#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#11'TActionList'#11'ActionList1'#6'Images'#7#13'ToolbarImages'#4'Left'#2
+#24#3'Top'#2'D'#0#7'TAction'#10'FileNewCmd'#8'Category'#6#4'File'#7'Caption'
+#6#4'&New'#4'Hint'#6#17'Create a new file'#10'ImageIndex'#2#0#9'OnExecute'#7
+#7'FileNew'#8'ShortCut'#3'N@'#0#0#7'TAction'#11'FileOpenCmd'#8'Category'#6#4
+'File'#7'Caption'#6#8'&Open...'#4'Hint'#6#21'Open an existing file'#10'Image'
+'Index'#2#1#9'OnExecute'#7#8'FileOpen'#8'ShortCut'#3'O@'#0#0#7'TAction'#11'F'
+'ileSaveCmd'#8'Category'#6#4'File'#7'Caption'#6#5'&Save'#4'Hint'#6#17'Save c'
+'urrent file'#10'ImageIndex'#2#2#9'OnExecute'#7#8'FileSave'#8'ShortCut'#3'S@'
+#0#0#7'TAction'#12'FilePrintCmd'#8'Category'#6#4'File'#7'Caption'#6#6'&Print'
+#4'Hint'#6#18'Print current file'#10'ImageIndex'#2#3#9'OnExecute'#7#9'FilePr'
,'int'#8'ShortCut'#3'P@'#0#0#7'TAction'#11'FileExitCmd'#8'Category'#6#4'File'
+#7'Caption'#6#5'E&xit'#4'Hint'#6#21'Exit this application'#9'OnExecute'#7#8
+'FileExit'#8'ShortCut'#4'X'#128#0#0#0#0#7'TAction'#13'FileSaveAsCmd'#8'Categ'
+'ory'#6#4'File'#7'Caption'#6#11'Save &As...'#4'Hint'#6'"Save current file un'
+'der a new name'#9'OnExecute'#7#10'FileSaveAs'#0#0#0#11'TActionList'#11'Acti'
+'onList2'#6'Images'#7#13'ToolbarImages'#8'OnUpdate'#7#17'ActionList2Update'#4
+'Left'#2'8'#3'Top'#2'D'#0#7'TAction'#11'EditUndoCmd'#8'Category'#6#4'Edit'#7
+'Caption'#6#5'&Undo'#4'Hint'#6#20'Undo the last action'#10'ImageIndex'#2#4#9
+'OnExecute'#7#8'EditUndo'#8'ShortCut'#3'Z@'#0#0#7'TAction'#10'EditCutCmd'#8
+'Category'#6#4'Edit'#7'Caption'#6#4'Cu&t'#4'Hint'#6#20'Delete selected item'
+#10'ImageIndex'#2#5#9'OnExecute'#7#7'EditCut'#8'ShortCut'#3'X@'#0#0#7'TActio'
+'n'#11'EditCopyCmd'#8'Category'#6#4'Edit'#7'Caption'#6#5'&Copy'#4'Hint'#6#31
+'Copy selected item to clipboard'#10'ImageIndex'#2#6#9'OnExecute'#7#8'EditCo'
+'py'#8'ShortCut'#3'C@'#0#0#7'TAction'#12'EditPasteCmd'#8'Category'#6#4'Edit'
+#7'Caption'#6#6'&Paste'#4'Hint'#6#27'Paste contents of clipboard'#10'ImageIn'
+'dex'#2#7#9'OnExecute'#7#9'EditPaste'#8'ShortCut'#3'V@'#0#0#7'TAction'#11'Ed'
+'itFontCmd'#8'Category'#6#4'Edit'#7'Caption'#6#8'&Font...'#9'OnExecute'#7#10
+'SelectFont'#0#0#0#0
]);
unit uRTFEditor;
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
interface
uses
{$IFnDEF FPC}
Windows,
{$ELSE}
LCLIntf, LCLType, LMessages,
{$ENDIF}
SysUtils, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Menus, ComCtrls, ClipBrd,
ToolWin, ActnList, ImgList, SynEdit;
type
TRTFEditor = class(TForm)
MainMenu: TMainMenu;
FileNewItem: TMenuItem;
FileOpenItem: TMenuItem;
FileSaveItem: TMenuItem;
FileSaveAsItem: TMenuItem;
FilePrintItem: TMenuItem;
FileExitItem: TMenuItem;
EditUndoItem: TMenuItem;
EditCutItem: TMenuItem;
EditCopyItem: TMenuItem;
EditPasteItem: TMenuItem;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
FontDialog1: TFontDialog;
N5: TMenuItem;
miEditFont: TMenuItem;
Editor: TSynEdit;
StatusBar: TStatusBar;
StandardToolBar: TToolBar;
OpenButton: TToolButton;
SaveButton: TToolButton;
PrintButton: TToolButton;
ToolButton5: TToolButton;
UndoButton: TToolButton;
CutButton: TToolButton;
CopyButton: TToolButton;
PasteButton: TToolButton;
ToolButton10: TToolButton;
FontName: TComboBox;
FontSize: TEdit;
ToolButton11: TToolButton;
UpDown1: TUpDown;
BoldButton: TToolButton;
ItalicButton: TToolButton;
UnderlineButton: TToolButton;
ToolButton16: TToolButton;
LeftAlign: TToolButton;
CenterAlign: TToolButton;
RightAlign: TToolButton;
ToolButton20: TToolButton;
BulletsButton: TToolButton;
ToolbarImages: TImageList;
ActionList1: TActionList;
FileNewCmd: TAction;
FileOpenCmd: TAction;
FileSaveCmd: TAction;
FilePrintCmd: TAction;
FileExitCmd: TAction;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
EditCutCmd: TAction;
EditCopyCmd: TAction;
EditPasteCmd: TAction;
EditUndoCmd: TAction;
EditFontCmd: TAction;
FileSaveAsCmd: TAction;
Panel1: TPanel;
Panel2: TPanel;
SpeedButton2: TSpeedButton;
SpeedButton1: TSpeedButton;
procedure SelectionChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ShowHint(Sender: TObject);
procedure FileNew(Sender: TObject);
procedure FileOpen(Sender: TObject);
procedure FileSave(Sender: TObject);
procedure FileSaveAs(Sender: TObject);
procedure FilePrint(Sender: TObject);
procedure FileExit(Sender: TObject);
procedure EditUndo(Sender: TObject);
procedure EditCut(Sender: TObject);
procedure EditCopy(Sender: TObject);
procedure EditPaste(Sender: TObject);
procedure SelectFont(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure BoldButtonClick(Sender: TObject);
procedure ItalicButtonClick(Sender: TObject);
procedure FontSizeChange(Sender: TObject);
procedure AlignButtonClick(Sender: TObject);
procedure FontNameChange(Sender: TObject);
procedure UnderlineButtonClick(Sender: TObject);
procedure BulletsButtonClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure RulerItemMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure RulerItemMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FirstIndMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure LeftIndMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure RightIndMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormShow(Sender: TObject);
procedure RichEditChange(Sender: TObject);
procedure ActionList2Update(Action: TBasicAction;
var Handled: Boolean);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
FFileName: string;
FUpdating: Boolean;
FDragOfs: Integer;
FDragging: Boolean;
procedure GetFontNames;
procedure SetFileName(const FileName: String);
procedure CheckFileSave;
procedure SetupRuler;
procedure SetEditRect;
procedure UpdateCursorPos;
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
procedure PerformFileOpen(const AFileName: string);
procedure SetModified(Value: Boolean);
function GetDocWithRTFInformation: string;
procedure SetDocWithRTFInformation(const Value: string);
public
property DocWithRTFInformation: string read GetDocWithRTFInformation write SetDocWithRTFInformation;
end;
implementation
uses
{$IFnDEF FPC}
ShellAPI,
{$ELSE}
{$ENDIF}
RichEdit;
resourcestring
sSaveChanges = 'Save changes to %s?';
sOverWrite = 'OK to overwrite %s';
sUntitled = 'Untitled';
sModified = 'Modified';
sColRowInfo = 'Line: %3d Col: %3d';
const
RulerAdj = 4/3;
GutterWid = 6;
{$R *.dfm}
procedure TRTFEditor.SelectionChange(Sender: TObject);
begin
//with Editor.Paragraph do
//try
// FUpdating := True;
// BoldButton.Down := fsBold in Editor.SelAttributes.Style;
// ItalicButton.Down := fsItalic in Editor.SelAttributes.Style;
// UnderlineButton.Down := fsUnderline in Editor.SelAttributes.Style;
// BulletsButton.Down := Boolean(Numbering);
// FontSize.Text := IntToStr(Editor.SelAttributes.Size);
// FontName.Text := Editor.SelAttributes.Name;
// case Ord(Alignment) of
// 0: LeftAlign.Down := True;
// 1: RightAlign.Down := True;
// 2: CenterAlign.Down := True;
// end;
// UpdateCursorPos;
//finally
// FUpdating := False;
//end;
end;
function EnumFontsProc(var LogFont: TLogFont; var TextMetric: TTextMetric;
FontType: Integer; Data: Pointer): Integer; stdcall;
begin
TStrings(Data).Add(LogFont.lfFaceName);
Result := 1;
end;
function TRTFEditor.GetDocWithRTFInformation: string;
var lRTF: TStringStream;
begin
lRTF := TStringStream.Create('');
try
Editor.Lines.SaveToStream(lRTF);
result := lRTF.DataString;
finally
lRTF.Free;
end;
end;
procedure TRTFEditor.GetFontNames;
var
DC: HDC;
begin
DC := GetDC(0);
// EnumFonts(DC, nil, @EnumFontsProc, Pointer(FontName.Items));
ReleaseDC(0, DC);
FontName.Sorted := True;
end;
procedure TRTFEditor.SetFileName(const FileName: String);
begin
FFileName := FileName;
Caption := Caption + ' - ' + Format('%s', [ExtractFileName(FileName)]);
end;
procedure TRTFEditor.CheckFileSave;
var
SaveResp: Integer;
begin
if not Editor.Modified then Exit;
SaveResp := MessageDlg(Format(sSaveChanges, [FFileName]),
mtConfirmation, mbYesNoCancel, 0);
case SaveResp of
idYes: FileSave(Self);
idNo: {Nothing};
idCancel: Abort;
end;
end;
procedure TRTFEditor.SetupRuler;
var
I: Integer;
S: String;
begin
SetLength(S, 201);
I := 1;
while I < 200 do
begin
S[I] := #9;
S[I+1] := '|';
Inc(I, 2);
end;
end;
procedure TRTFEditor.SetDocWithRTFInformation(const Value: string);
begin
editor.text := value;
end;
procedure TRTFEditor.SetEditRect;
var
R: TRect;
begin
with Editor do
begin
R := Rect(GutterWid, 0, ClientWidth-GutterWid, ClientHeight);
SendMessage(Handle, EM_SETRECT, 0, Longint(@R));
end;
end;
{ Event Handlers }
procedure TRTFEditor.FormCreate(Sender: TObject);
begin
Application.OnHint := ShowHint;
OpenDialog.InitialDir := ExtractFilePath(ParamStr(0));
SaveDialog.InitialDir := OpenDialog.InitialDir;
SetFileName(sUntitled);
GetFontNames;
SetupRuler;
SelectionChange(Self);
// CurrText.Name := DefFontData.Name;
// CurrText.Size := -MulDiv(DefFontData.Height, 72, Screen.PixelsPerInch);
end;
procedure TRTFEditor.ShowHint(Sender: TObject);
begin
if Length(Application.Hint) > 0 then
begin
StatusBar.SimplePanel := True;
StatusBar.SimpleText := Application.Hint;
end
else StatusBar.SimplePanel := False;
end;
procedure TRTFEditor.SpeedButton1Click(Sender: TObject);
begin
ModalResult := mrcancel;
end;
procedure TRTFEditor.SpeedButton2Click(Sender: TObject);
begin
ModalResult := mrok;
end;
procedure TRTFEditor.FileNew(Sender: TObject);
begin
SetFileName(sUntitled);
Editor.Lines.Clear;
Editor.Modified := False;
SetModified(False);
end;
procedure TRTFEditor.PerformFileOpen(const AFileName: string);
begin
Editor.Lines.LoadFromFile(AFileName);
SetFileName(AFileName);
Editor.SetFocus;
Editor.Modified := False;
SetModified(False);
end;
procedure TRTFEditor.FileOpen(Sender: TObject);
begin
CheckFileSave;
if OpenDialog.Execute then
begin
PerformFileOpen(OpenDialog.FileName);
Editor.ReadOnly := ofReadOnly in OpenDialog.Options;
end;
end;
procedure TRTFEditor.FileSave(Sender: TObject);
begin
if FFileName = sUntitled then
FileSaveAs(Sender)
else
begin
Editor.Lines.SaveToFile(FFileName);
Editor.Modified := False;
SetModified(False);
end;
end;
procedure TRTFEditor.FileSaveAs(Sender: TObject);
begin
if SaveDialog.Execute then
begin
if FileExists(SaveDialog.FileName) then
if MessageDlg(Format(sOverWrite, [SaveDialog.FileName]),
mtConfirmation, mbYesNoCancel, 0) <> idYes then Exit;
Editor.Lines.SaveToFile(SaveDialog.FileName);
SetFileName(SaveDialog.FileName);
Editor.Modified := False;
SetModified(False);
end;
end;
procedure TRTFEditor.FilePrint(Sender: TObject);
begin
// if PrintDialog.Execute then
// Editor.Print(FFileName);
end;
procedure TRTFEditor.FileExit(Sender: TObject);
begin
Close;
end;
procedure TRTFEditor.EditUndo(Sender: TObject);
begin
with Editor do
if HandleAllocated then SendMessage(Handle, EM_UNDO, 0, 0);
end;
procedure TRTFEditor.EditCut(Sender: TObject);
begin
Editor.CutToClipboard;
end;
procedure TRTFEditor.EditCopy(Sender: TObject);
begin
Editor.CopyToClipboard;
end;
procedure TRTFEditor.EditPaste(Sender: TObject);
begin
Editor.PasteFromClipboard;
end;
procedure TRTFEditor.SelectFont(Sender: TObject);
begin
// FontDialog1.Font.Assign(Editor.SelAttributes);
// if FontDialog1.Execute then
// CurrText.Assign(FontDialog1.Font);
SelectionChange(Self);
Editor.SetFocus;
end;
procedure TRTFEditor.FormResize(Sender: TObject);
begin
SetEditRect;
SelectionChange(Sender);
end;
procedure TRTFEditor.FormPaint(Sender: TObject);
begin
SetEditRect;
end;
procedure TRTFEditor.BoldButtonClick(Sender: TObject);
begin
if FUpdating then Exit;
if BoldButton.Down then
// CurrText.Style := CurrText.Style + [fsBold]
else
// CurrText.Style := CurrText.Style - [fsBold];
end;
procedure TRTFEditor.ItalicButtonClick(Sender: TObject);
begin
if FUpdating then Exit;
if ItalicButton.Down then
// CurrText.Style := CurrText.Style + [fsItalic]
else
// CurrText.Style := CurrText.Style - [fsItalic];
end;
procedure TRTFEditor.FontSizeChange(Sender: TObject);
begin
if FUpdating then Exit;
if FontSize.Text = '' then exit;
// CurrText.Size := StrToInt(FontSize.Text);
end;
procedure TRTFEditor.AlignButtonClick(Sender: TObject);
begin
if FUpdating then Exit;
// Editor.Paragraph.Alignment := TAlignment(TControl(Sender).Tag);
end;
procedure TRTFEditor.FontNameChange(Sender: TObject);
begin
if FUpdating then Exit;
// CurrText.Name := FontName.Items[FontName.ItemIndex];
end;
procedure TRTFEditor.UnderlineButtonClick(Sender: TObject);
begin
if FUpdating then Exit;
if UnderlineButton.Down then
// CurrText.Style := CurrText.Style + [fsUnderline]
else
// CurrText.Style := CurrText.Style - [fsUnderline];
end;
procedure TRTFEditor.BulletsButtonClick(Sender: TObject);
begin
if FUpdating then Exit;
// Editor.Paragraph.Numbering := TNumberingStyle(BulletsButton.Down);
end;
procedure TRTFEditor.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
// try
// CheckFileSave;
// except
// CanClose := False;
// end;
end;
{ Ruler Indent Dragging }
procedure TRTFEditor.RulerItemMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDragOfs := (TLabel(Sender).Width div 2);
TLabel(Sender).Left := TLabel(Sender).Left+X-FDragOfs;
FDragging := True;
end;
procedure TRTFEditor.RulerItemMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if FDragging then
TLabel(Sender).Left := TLabel(Sender).Left+X-FDragOfs
end;
procedure TRTFEditor.FirstIndMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDragging := False;
LeftIndMouseUp(Sender, Button, Shift, X, Y);
end;
procedure TRTFEditor.LeftIndMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDragging := False;
SelectionChange(Sender);
end;
procedure TRTFEditor.RightIndMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDragging := False;
SelectionChange(Sender);
end;
procedure TRTFEditor.UpdateCursorPos;
var
CharPos: TPoint;
begin
CharPos.Y := SendMessage(Editor.Handle, EM_EXLINEFROMCHAR, 0,
Editor.SelStart);
CharPos.X := (Editor.SelStart -
SendMessage(Editor.Handle, EM_LINEINDEX, CharPos.Y, 0));
Inc(CharPos.Y);
Inc(CharPos.X);
StatusBar.Panels[0].Text := Format(sColRowInfo, [CharPos.Y, CharPos.X]);
end;
procedure TRTFEditor.FormShow(Sender: TObject);
begin
UpdateCursorPos;
// DragAcceptFiles(Handle, True);
RichEditChange(nil);
Editor.SetFocus;
{ Check if we should load a file from the command line }
if (ParamCount > 0) and FileExists(ParamStr(1)) then
PerformFileOpen(ParamStr(1));
end;
procedure TRTFEditor.WMDropFiles(var Msg: TWMDropFiles);
var
CFileName: array[0..MAX_PATH] of Char;
begin
try
// if DragQueryFile(Msg.Drop, 0, CFileName, MAX_PATH) > 0 then
begin
CheckFileSave;
// PerformFileOpen(CFileName);
Msg.Result := 0;
end;
finally
// DragFinish(Msg.Drop);
end;
end;
procedure TRTFEditor.RichEditChange(Sender: TObject);
begin
SetModified(Editor.Modified);
end;
procedure TRTFEditor.SetModified(Value: Boolean);
begin
if Value then StatusBar.Panels[1].Text := sModified
else StatusBar.Panels[1].Text := '';
end;
procedure TRTFEditor.ActionList2Update(Action: TBasicAction;
var Handled: Boolean);
begin
{ Update the status of the edit commands }
// EditCutCmd.Enabled := Editor.SelLength > 0;
EditCopyCmd.Enabled := EditCutCmd.Enabled;
if Editor.HandleAllocated then
begin
EditUndoCmd.Enabled := Editor.Perform(EM_CANUNDO, 0, 0) <> 0;
EditPasteCmd.Enabled := Editor.Perform(EM_CANPASTE, 0, 0) <> 0;
end;
end;
end.
unit utuOQL;
interface
uses utuMessage, acuContainers, acuObject;
const
cOQLQuery = 0;
cDataSetOQLDataSet = 1;
type
utOQL = Class;
utOQLFile = class
private
fOQLs: utField;
fOQLHash: acObjectHash;
fFileName: string;
procedure AddOQL(piOQL: utOQL);
procedure Load;
procedure ChangeOQLName(piNewName: string; piOQL: utOQL);
public
constructor create(piFileName: string = '');
destructor Destroy; override;
function OQLExists(piName: string): boolean;
function NewOQL(piOQLName: string): utOQL;
procedure DeleteOQL(piName: string);
procedure Save(piFileName: string = '');
function Count: integer;
function GetOQLEnumerator: acEnumerator;
property FileName: string read fFileName;
end;
utOQL = class(utField)
private
fOQLFile: utOQLFile;
function GetDescription: string;
procedure SetDescription(const Value: string);
function GetQuery: string;
procedure SetQuery(const Value: string);
procedure SetOwner(const Value: utOQLFile);
function GetID: string;
procedure SetID(const Value: string);
function GetOQLType: integer;
procedure SetOQLType(const Value: integer);
public
constructor Create(piOQLName: string; piOwner: utOQLFile); reintroduce;
procedure Delete;
property Owner: utOQLFile read fOQLFile write SetOwner;
property Description: string read GetDescription write SetDescription;
property Query: string read GetQuery write SetQuery;
property ID: string read GetID write SetID;
property OQLType: integer read GetOQLType write SetOQLType;
end;
implementation
uses SysUtils, Classes;
{ utOQLFile }
procedure utOQLFile.AddOQL(piOQL: utOQL);
begin
if assigned(fOQLHash.ValueOf(piOQL.FindAttribute('name').AsString)) then
raise Exception.Create('OQL already exists with this name.');
Self.fOQLs.AddField(piOQL);
fOQLHash.Add(piOQL.AttributeByName('name').AsString, piOQL);
end;
procedure utOQLFile.ChangeOQLName(piNewName: string; piOQL: utOQL);
begin
if piNewName <> piOQL.AttributeByName('name').AsString then
begin
if self.OQLExists(piNewName) then
raise Exception.Create('OQL name already exists.');
fOQLHash.Remove(piOQL.AttributeByName('name').AsString);
fOQLHash.Add(piNewName, piOQL);
piOQL.AttributeByName('name').AsString := piNewName;
end;
end;
function utOQLFile.Count: integer;
begin
result := fOQLHash.Count;
end;
constructor utOQLFile.Create(piFileName: string = '');
begin
fFileName := piFileName;
if (fFileName <> '') and (not FileExists(fFileName)) then
raise Exception.Create('File does not exist.')
else
begin
fOQLs := utField.Create;
fOQLHash := acObjectHash.Create(127, false, true);
fOQLs.Name := 'DATA';
if fFileName <> '' then Self.Load;
end;
end;
procedure utOQLFile.DeleteOQL(piName: string);
var lField: utField;
begin
lField := utField(fOQLHash.ValueOf(piName));
if not assigned(lField) then
raise Exception.Create('No OQL found with name "' + piName + '".');
fOQLHash.Remove(piName);
fOQLs.RemoveField(lField);
end;
function utOQLFile.NewOQL(piOQLName: string): utOQL;
begin
result := utOQL.Create(piOQLName, self);
end;
function utOQLFile.OQLExists(piName: string): boolean;
begin
result := Assigned(fOQLHash.ValueOf(piName));
end;
procedure utOQLFile.Save(piFileName: string);
var lEnum: acEnumerator;
lOQL: utOQL;
lSortedField, lOQLField: utField;
begin
if (piFileName = '') and (self.fFileName = '') then
raise Exception.Create('No file name.');
if piFileName <> '' then self.fFileName := piFileName;
//Salva Ordenado
lSortedField := utField.Create;
try
lSortedField.Name := 'DATA';
lEnum := fOQLHash.GetEnumerator;
try
while not lEnum.EOL do
begin
lOQL := utOQL(lEnum.Current);
lOQLField := lSortedField.AddField('oql');
lOQLField.AddAttribute('name').AsString := lOQL.ID;
lOQLField.AddAttribute('oqltype').AsInteger := lOQL.OQLType;
lOQLField.AddField('description').AsString := lOQL.Description;
lOQLField.AddField('query').AsCDATA := lOQL.Query;
lEnum.MoveNext;
end;
lSortedField.SaveToFile(self.fFileName, XMLEncoding.xeISO_8859_1, [XMLOptions.xoLegible]);
finally
lEnum.Free;
end;
finally
lSortedField.Free;
end;
end;
destructor utOQLFile.destroy;
begin
fOQLs.Free;
fOQLHash.Free;
inherited;
end;
function utOQLFile.GetOQLEnumerator: acEnumerator;
begin
result := fOQLs.GetFieldsEnumerator;
end;
procedure utOQLFile.Load;
var lEnum: acEnumerator;
lFields, lFieldOQL: utField;
lOQL: utOQL;
lXML: TStringList;
begin
lXML := TStringList.Create;
try
lXML.LoadFromFile(fFileName);
lFields := utField.Create;
try
lFields.LoadFieldFromXMLString(lXML.Text);
lEnum := lFields.GetFieldsEnumerator;
try
while not lEnum.EOL do
begin
lFieldOQL := utField(lEnum.Current);
lOQL := self.NewOQL(lFieldOQL.AttributeByName('name').AsString);
lOQL.Description := lFieldOQL.FieldByName('description').AsString;
lOQL.Query := lFieldOQL.FieldByName('query').AsString;
if lFieldOQL.HasAttribute('oqltype')
then lOQL.OQLType := lFieldOQL.AttributeByName('oqltype').AsInteger
else lOQL.OQLType := cOQLQuery;
lEnum.MoveNext;
end;
finally
lEnum.free;
end;
finally
lFields.Free;
end;
finally
lXML.free;
end;
end;
{ utOQL }
constructor utOQL.Create(piOQLName: string; piOwner: utOQLFile);
begin
inherited create;
self.Name := 'oql';
self.AddAttribute('name').AsString := piOQLName;
self.AddAttribute('oqltype').AsInteger := 0;
self.AddField('description').AsString := '';
self.AddField('query').AsCDATA := '';
self.Owner := piOwner;
end;
procedure utOQL.Delete;
begin
Self.fOQLFile.DeleteOQL(Self.ID);
end;
function utOQL.GetDescription: string;
begin
result := Self.FieldByName('description').AsString;
end;
function utOQL.GetID: string;
begin
result := self.AttributeByName('name').AsString;
end;
function utOQL.GetOQLType: integer;
begin
result := self.AttributeByName('oqltype').AsInteger;
end;
function utOQL.GetQuery: string;
begin
result := self.FieldByName('query').AsString;
end;
procedure utOQL.SetDescription(const Value: string);
begin
Self.FieldByName('description').AsString := Value;
end;
procedure utOQL.SetID(const Value: string);
begin
fOQLFile.ChangeOQLName(Value, self);
end;
procedure utOQL.SetOQLType(const Value: integer);
begin
self.AttributeByName('oqltype').AsInteger := Value;
end;
procedure utOQL.SetOwner(const Value: utOQLFile);
begin
fOQLFile := Value;
Value.AddOQL(self);
end;
procedure utOQL.SetQuery(const Value: string);
begin
self.FieldByName('query').AsCDATA := Value;
end;
end.
unit utuXSD;
interface
uses utuMessage, acuContainers, acuObject;
type
utXSD = Class;
utXSDFile = class
private
fXSDs: utField;
fXSDHash: acObjectHash;
fFileName: string;
procedure AddXSD(piXSD: utXSD);
procedure Load(piXSD: string);
procedure ChangeXSDName(piNewName: string; piXSD: utXSD);
function GetXML: string;
public
constructor create(piXSD: string = '');
destructor Destroy; override;
function XSDExists(piName: string): boolean;
function XSDByName(piName: string): utXSD;
function NewXSD(piXSDName: string): utXSD;
procedure DeleteXSD(piName: string);
procedure Save(piFileName: string = '');
function Count: integer;
function GetXSDEnumerator: acEnumerator;
property FileName: string read fFileName;
property XML: string read GetXML;
end;
utXSD = class(utField)
private
fXSDFile: utXSDFile;
function GetDescription: string;
procedure SetDescription(const Value: string);
function GetText: string;
procedure SetText(const Value: string);
procedure SetOwner(const Value: utXSDFile);
function GetID: string;
procedure SetID(const Value: string);
public
constructor Create(piXSDName: string; piOwner: utXSDFile); reintroduce;
procedure Delete;
property Owner: utXSDFile read fXSDFile write SetOwner;
property Description: string read GetDescription write SetDescription;
property Text: string read GetText write SetText;
property ID: string read GetID write SetID;
end;
implementation
uses SysUtils, Classes;
{ utXSDFile }
procedure utXSDFile.AddXSD(piXSD: utXSD);
begin
if assigned(fXSDHash.ValueOf(piXSD.FindAttribute('name').AsString)) then
raise Exception.Create('XSD already exists with this name.');
Self.fXSDs.AddField(piXSD);
fXSDHash.Add(piXSD.AttributeByName('name').AsString, piXSD);
end;
procedure utXSDFile.ChangeXSDName(piNewName: string; piXSD: utXSD);
begin
if piNewName <> piXSD.AttributeByName('name').AsString then
begin
if self.XSDExists(piNewName) then
raise Exception.Create('XSD name already exists.');
fXSDHash.Remove(piXSD.AttributeByName('name').AsString);
fXSDHash.Add(piNewName, piXSD);
piXSD.AttributeByName('name').AsString := piNewName;
end;
end;
function utXSDFile.Count: integer;
begin
result := fXSDHash.Count;
end;
constructor utXSDFile.Create(piXSD: string = '');
begin
fXSDs := utField.Create;
fXSDHash := acObjectHash.Create(127, false, true);
fXSDs.Name := 'DATA';
if piXSD <> '' then Self.Load(piXSD);
end;
procedure utXSDFile.DeleteXSD(piName: string);
var lField: utField;
begin
lField := utField(fXSDHash.ValueOf(piName));
if not assigned(lField) then
raise Exception.Create('No XSD found with name "' + piName + '".');
fXSDHash.Remove(piName);
fXSDs.RemoveField(lField);
end;
function utXSDFile.NewXSD(piXSDName: string): utXSD;
begin
result := utXSD.Create(piXSDName, self);
end;
function utXSDFile.XSDByName(piName: string): utXSD;
begin
result := nil;
if self.XSDExists(piName) then
result := utXSD(fXSDHash.ValueOf(piName));
end;
function utXSDFile.XSDExists(piName: string): boolean;
begin
result := Assigned(fXSDHash.ValueOf(piName));
end;
procedure utXSDFile.Save(piFileName: string);
var lEnum: acEnumerator;
lXSD: utXSD;
lSortedField, lXSDField: utField;
begin
if (piFileName = '') and (self.fFileName = '') then
raise Exception.Create('No file name.');
if piFileName <> '' then self.fFileName := piFileName;
//Salva Ordenado
lSortedField := utField.Create;
try
lSortedField.Name := 'DATA';
lEnum := fXSDHash.GetEnumerator;
try
while not lEnum.EOL do
begin
lXSD := utXSD(lEnum.Current);
lXSDField := lSortedField.AddField('XSD');
lXSDField.AddAttribute('name').AsString := lXSD.ID;
lXSDField.AddField('description').AsString := lXSD.Description;
lXSDField.AddField('text').AsCDATA := lXSD.Text;
lEnum.MoveNext;
end;
lSortedField.SaveToFile(self.fFileName, XMLEncoding.xeISO_8859_1, [XMLOptions.xoLegible]);
finally
lEnum.Free;
end;
finally
lSortedField.Free;
end;
end;
destructor utXSDFile.destroy;
begin
fXSDs.Free;
fXSDHash.Free;
inherited;
end;
function utXSDFile.GetXML: string;
var lEnum: acEnumerator;
lXSD: utXSD;
lSortedField, lXSDField: utField;
begin
//Salva Ordenado
lSortedField := utField.Create;
try
lSortedField.Name := 'DATA';
lEnum := fXSDHash.GetEnumerator;
try
while not lEnum.EOL do
begin
lXSD := utXSD(lEnum.Current);
lXSDField := lSortedField.AddField('XSD');
lXSDField.AddAttribute('name').AsString := lXSD.ID;
lXSDField.AddField('description').AsString := lXSD.Description;
lXSDField.AddField('text').AsCDATA := lXSD.text;
lEnum.MoveNext;
end;
result := lSortedField.GetXMLString([XMLOptions.xoLegible]);
finally
lEnum.Free;
end;
finally
lSortedField.Free;
end;
end;
function utXSDFile.GetXSDEnumerator: acEnumerator;
begin
result := fXSDs.GetFieldsEnumerator;
end;
procedure utXSDFile.Load(piXSD: string);
var lEnum: acEnumerator;
lFields, lFieldXSD: utField;
lXSD: utXSD;
begin
lFields := utField.Create;
try
lFields.LoadFieldFromXMLString(piXSD);
lEnum := lFields.GetFieldsEnumerator;
try
while not lEnum.EOL do
begin
lFieldXSD := utField(lEnum.Current);
lXSD := self.NewXSD(lFieldXSD.AttributeByName('name').AsString);
lXSD.Description := lFieldXSD.FieldByName('description').AsString;
lXSD.text := lFieldXSD.FieldByName('text').AsString;
lEnum.MoveNext;
end;
finally
lEnum.free;
end;
finally
lFields.Free;
end;
end;
{ utXSD }
constructor utXSD.Create(piXSDName: string; piOwner: utXSDFile);
begin
inherited create;
self.Name := 'XSD';
self.AddAttribute('name').AsString := piXSDName;
self.AddField('description').AsString := '';
self.AddField('text').AsCDATA := '';
self.Owner := piOwner;
end;
procedure utXSD.Delete;
begin
Self.fXSDFile.DeleteXSD(Self.ID);
end;
function utXSD.GetDescription: string;
begin
result := Self.FieldByName('description').AsString;
end;
function utXSD.GetID: string;
begin
result := self.AttributeByName('name').AsString;
end;
function utXSD.GetText: string;
begin
result := self.FieldByName('text').AsString;
end;
procedure utXSD.SetDescription(const Value: string);
begin
Self.FieldByName('description').AsString := Value;
end;
procedure utXSD.SetID(const Value: string);
begin
fXSDFile.ChangeXSDName(Value, self);
end;
procedure utXSD.SetOwner(const Value: utXSDFile);
begin
fXSDFile := Value;
Value.AddXSD(self);
end;
procedure utXSD.SetText(const Value: string);
begin
self.FieldByName('text').AsCDATA := Value;
end;
end.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment