Version 1.0 DEV 1.15
Signed-off-by: Dennis07 <den.goehlert@t-online.de>
14
Example/TCryptManager/pExample.dpr
Normal file
@ -0,0 +1,14 @@
|
||||
program pExample;
|
||||
|
||||
uses
|
||||
Vcl.Forms,
|
||||
uMain in 'uMain.pas' {fmMain};
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
Application.Initialize;
|
||||
Application.MainFormOnTaskbar := True;
|
||||
Application.CreateForm(TfmMain, fmMain);
|
||||
Application.Run;
|
||||
end.
|
170
Example/TCryptManager/pExample.dproj
Normal file
@ -0,0 +1,170 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{B2F1BE7E-2745-4B2F-A4DE-CA83E5CC75C5}</ProjectGuid>
|
||||
<ProjectVersion>15.3</ProjectVersion>
|
||||
<FrameworkType>VCL</FrameworkType>
|
||||
<MainSource>pExample.dpr</MainSource>
|
||||
<Base>True</Base>
|
||||
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||
<TargetedPlatforms>1</TargetedPlatforms>
|
||||
<AppType>Application</AppType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
||||
<Base_Win32>true</Base_Win32>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
|
||||
<Base_Win64>true</Base_Win64>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
|
||||
<Cfg_1>true</Cfg_1>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
|
||||
<Cfg_1_Win32>true</Cfg_1_Win32>
|
||||
<CfgParent>Cfg_1</CfgParent>
|
||||
<Cfg_1>true</Cfg_1>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
|
||||
<Cfg_2>true</Cfg_2>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base)'!=''">
|
||||
<Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
|
||||
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
|
||||
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
|
||||
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
|
||||
<DCC_E>false</DCC_E>
|
||||
<DCC_N>false</DCC_N>
|
||||
<DCC_S>false</DCC_S>
|
||||
<DCC_F>false</DCC_F>
|
||||
<DCC_K>false</DCC_K>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
|
||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||
<DCC_UsePackage>JvBDE;JvGlobus;O408br;JvMM;JvManagedThreads;FireDACSqliteDriver;DBXSqliteDriver;AbbreviaVCL;FireDACPgDriver;VampyreImagingPackage.D2009;fmx;JvDlgs;IndySystem;JvCrypt;TeeDB;frx19;inetdbbde;vclib;DBXInterBaseDriver;GR32_DSGN_RSXE5;DataSnapCommon;MiscrosoftScriptControls;pkCindyDERDXE5;JvNet;JvDotNetCtrls;DbxCommonDriver;vclimg;dbxcds;PieLib;vclshlctrls;MetropolisUILiveTile;JvXPCtrls;pkCindyPackDXE5;vcldb;vcldsnap;pkCindyIEDXE5;fmxFireDAC;pkCindyDBXDXE5;CustomIPTransport;JvCore;SynEdit_RXE5;vclribbon;dsnap;IndyIPServer;fmxase;vcl;IndyCore;DebenuPDFLibraryLite;DCEF_XE5;CodeSiteExpressPkg;IndyIPCommon;CloudService;FmxTeeUI;FireDACIBDriver;JvAppFrm;JvDB;JvRuntimeDesign;inetdbxpress;webdsnap;frxe19;JclDeveloperTools;JvDocking;adortl;JvWizards;frxDB19;FireDACASADriver;JvHMI;bindcompfmx;JvBands;vcldbx;FireDACODBCDriver;rtl;dbrtl;DbxClientDriver;FireDACCommon;bindcomp;JvPluginSystem;Tee;JclContainers;JvCmp;vclFireDAC;JvSystem;xmlrtl;svnui;ibxpress;SVATimer_DXE5;JvControls;JvTimeFramework;IndyProtocols;DBXMySQLDriver;djsonrt;FireDACCommonDriver;O408_r;bindengine;vclactnband;soaprtl;bindcompdbx;TeeUI;FMXTee;bindcompvcl;JvStdCtrls;JvCustom;Jcl;vclie;JvJans;JvPageComps;JvPrintPreview;pkCindyDBCtrlsPackDXE5;FireDACADSDriver;vcltouch;LINA_D_XE5;VclSmp;FireDAC;VCLRESTComponents;Intraweb;GR32_RSXE5;dsnapcon;inet;fmxobj;JclVcl;JvPascalInterpreter;FireDACMySQLDriver;vclx;svn;fmxdae;RESTComponents;bdertl;FireDACMSAccDriver;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base_Win64)'!=''">
|
||||
<DCC_UsePackage>O408br;FireDACSqliteDriver;DBXSqliteDriver;AbbreviaVCL;FireDACPgDriver;fmx;IndySystem;vclib;DBXInterBaseDriver;DataSnapCommon;DbxCommonDriver;vclimg;dbxcds;vclshlctrls;MetropolisUILiveTile;vcldb;vcldsnap;fmxFireDAC;CustomIPTransport;SynEdit_RXE5;vclribbon;dsnap;IndyIPServer;fmxase;vcl;IndyCore;IndyIPCommon;CloudService;FireDACIBDriver;inetdbxpress;webdsnap;adortl;FireDACASADriver;bindcompfmx;FireDACODBCDriver;rtl;dbrtl;DbxClientDriver;FireDACCommon;bindcomp;vclFireDAC;xmlrtl;ibxpress;IndyProtocols;DBXMySQLDriver;FireDACCommonDriver;O408_r;bindengine;vclactnband;soaprtl;bindcompdbx;bindcompvcl;vclie;FireDACADSDriver;vcltouch;LINA_D_XE5;VclSmp;FireDAC;VCLRESTComponents;Intraweb;dsnapcon;inet;fmxobj;FireDACMySQLDriver;vclx;fmxdae;RESTComponents;FireDACMSAccDriver;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_1)'!=''">
|
||||
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
|
||||
<DCC_DebugDCUs>true</DCC_DebugDCUs>
|
||||
<DCC_Optimize>false</DCC_Optimize>
|
||||
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
|
||||
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
|
||||
<DCC_RemoteDebug>true</DCC_RemoteDebug>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
|
||||
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_2)'!=''">
|
||||
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
|
||||
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
|
||||
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
|
||||
<DCC_DebugInformation>0</DCC_DebugInformation>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<DelphiCompile Include="$(MainSource)">
|
||||
<MainSource>MainSource</MainSource>
|
||||
</DelphiCompile>
|
||||
<DCCReference Include="uMain.pas">
|
||||
<Form>fmMain</Form>
|
||||
<FormType>dfm</FormType>
|
||||
</DCCReference>
|
||||
<BuildConfiguration Include="Release">
|
||||
<Key>Cfg_2</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
</BuildConfiguration>
|
||||
<BuildConfiguration Include="Base">
|
||||
<Key>Base</Key>
|
||||
</BuildConfiguration>
|
||||
<BuildConfiguration Include="Debug">
|
||||
<Key>Cfg_1</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
</BuildConfiguration>
|
||||
</ItemGroup>
|
||||
<ProjectExtensions>
|
||||
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
|
||||
<Borland.ProjectType/>
|
||||
<BorlandProject>
|
||||
<Delphi.Personality>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">1</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||
<VersionInfo Name="Release">0</VersionInfo>
|
||||
<VersionInfo Name="Build">0</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">1031</VersionInfo>
|
||||
<VersionInfo Name="CodePage">1252</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName"/>
|
||||
<VersionInfoKeys Name="FileDescription"/>
|
||||
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName"/>
|
||||
<VersionInfoKeys Name="LegalCopyright"/>
|
||||
<VersionInfoKeys Name="LegalTrademarks"/>
|
||||
<VersionInfoKeys Name="OriginalFilename"/>
|
||||
<VersionInfoKeys Name="ProductName"/>
|
||||
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"/>
|
||||
<VersionInfoKeys Name="CFBundleName"/>
|
||||
<VersionInfoKeys Name="CFBundleDisplayName"/>
|
||||
<VersionInfoKeys Name="UIDeviceFamily"/>
|
||||
<VersionInfoKeys Name="CFBundleIdentifier"/>
|
||||
<VersionInfoKeys Name="CFBundleVersion"/>
|
||||
<VersionInfoKeys Name="CFBundlePackageType"/>
|
||||
<VersionInfoKeys Name="CFBundleSignature"/>
|
||||
<VersionInfoKeys Name="CFBundleAllowMixedLocalizations"/>
|
||||
<VersionInfoKeys Name="UISupportedInterfaceOrientations"/>
|
||||
<VersionInfoKeys Name="CFBundleExecutable"/>
|
||||
<VersionInfoKeys Name="CFBundleResourceSpecification"/>
|
||||
<VersionInfoKeys Name="LSRequiresIPhoneOS"/>
|
||||
<VersionInfoKeys Name="CFBundleInfoDictionaryVersion"/>
|
||||
<VersionInfoKeys Name="CFBundleDevelopmentRegion"/>
|
||||
<VersionInfoKeys Name="package"/>
|
||||
<VersionInfoKeys Name="label"/>
|
||||
<VersionInfoKeys Name="versionCode"/>
|
||||
<VersionInfoKeys Name="versionName"/>
|
||||
<VersionInfoKeys Name="persistent"/>
|
||||
<VersionInfoKeys Name="restoreAnyVersion"/>
|
||||
<VersionInfoKeys Name="installLocation"/>
|
||||
<VersionInfoKeys Name="largeHeap"/>
|
||||
<VersionInfoKeys Name="theme"/>
|
||||
</VersionInfoKeys>
|
||||
<Source>
|
||||
<Source Name="MainSource">pExample.dpr</Source>
|
||||
</Source>
|
||||
</Delphi.Personality>
|
||||
<Deployment/>
|
||||
<Platforms>
|
||||
<Platform value="Win32">True</Platform>
|
||||
<Platform value="Win64">False</Platform>
|
||||
</Platforms>
|
||||
</BorlandProject>
|
||||
<ProjectFileVersion>12</ProjectFileVersion>
|
||||
</ProjectExtensions>
|
||||
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
||||
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
|
||||
</Project>
|
40
Example/TCryptManager/pExample.dproj.local
Normal file
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<BorlandProject>
|
||||
<Transactions>
|
||||
<Transaction>1899.12.30 00:00:00.000.629,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.911,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.029,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.228,C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Example\TContextMenu\uMain.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.505,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.438,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.832,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.376,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.579,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.086,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.036,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.283,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.634,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.044,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.562,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.012,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.689,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.779,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.120,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.963,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.256,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.169,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.228,C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.dfm=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Example\TContextMenu\uMain.dfm</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.191,C:\Users\Dennis G\Documents\RAD Studio\Projekte\Project1.dproj=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Example\TContextMenu\pExample.dproj</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.028,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.726,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.541,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.129,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.165,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.957,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.106,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.356,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.177,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.215,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.333,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
</Transactions>
|
||||
</BorlandProject>
|
BIN
Example/TCryptManager/pExample.exe
Normal file
BIN
Example/TCryptManager/pExample.identcache
Normal file
BIN
Example/TCryptManager/pExample.res
Normal file
100
Example/TCryptManager/uMain.dfm
Normal file
@ -0,0 +1,100 @@
|
||||
object fmMain: TfmMain
|
||||
Left = 0
|
||||
Top = 0
|
||||
BorderIcons = [biSystemMenu, biMinimize]
|
||||
BorderStyle = bsSingle
|
||||
Caption = 'LinaComponents "TCryptManager" Example'
|
||||
ClientHeight = 281
|
||||
ClientWidth = 761
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
Position = poScreenCenter
|
||||
OnCreate = FormCreate
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object mmDecrypted: TMemo
|
||||
Left = 8
|
||||
Top = 8
|
||||
Width = 330
|
||||
Height = 265
|
||||
Lines.Strings = (
|
||||
'This is a sample test to show the usability of the'
|
||||
'"TCryptManager" component from Lina Components'
|
||||
'for Delphi.')
|
||||
ScrollBars = ssBoth
|
||||
TabOrder = 0
|
||||
WordWrap = False
|
||||
end
|
||||
object mmEncrypted: TMemo
|
||||
Left = 425
|
||||
Top = 8
|
||||
Width = 330
|
||||
Height = 265
|
||||
ScrollBars = ssBoth
|
||||
TabOrder = 1
|
||||
WordWrap = False
|
||||
end
|
||||
object btEncrypt: TButton
|
||||
Left = 344
|
||||
Top = 87
|
||||
Width = 75
|
||||
Height = 25
|
||||
Caption = 'Encrypt '#187
|
||||
TabOrder = 2
|
||||
OnClick = btEncryptClick
|
||||
end
|
||||
object rgMode: TRadioGroup
|
||||
Left = 344
|
||||
Top = 8
|
||||
Width = 75
|
||||
Height = 73
|
||||
Caption = 'Mode'
|
||||
Items.Strings = (
|
||||
'Xor'
|
||||
'Caesar'
|
||||
'Vigenere')
|
||||
TabOrder = 3
|
||||
OnClick = rgModeClick
|
||||
end
|
||||
object btDecrypt: TButton
|
||||
Left = 344
|
||||
Top = 118
|
||||
Width = 75
|
||||
Height = 25
|
||||
Caption = #171' Decrypt'
|
||||
TabOrder = 4
|
||||
OnClick = btDecryptClick
|
||||
end
|
||||
object leKey: TLabeledEdit
|
||||
Left = 344
|
||||
Top = 221
|
||||
Width = 75
|
||||
Height = 21
|
||||
CharCase = ecUpperCase
|
||||
EditLabel.Width = 22
|
||||
EditLabel.Height = 13
|
||||
EditLabel.Caption = 'Key:'
|
||||
TabOrder = 5
|
||||
OnChange = leKeyChange
|
||||
OnContextPopup = leKeyContextPopup
|
||||
OnKeyPress = leKeyKeyPress
|
||||
end
|
||||
object brGenerate: TButton
|
||||
Left = 344
|
||||
Top = 248
|
||||
Width = 75
|
||||
Height = 25
|
||||
Caption = 'Generate'
|
||||
TabOrder = 6
|
||||
OnClick = brGenerateClick
|
||||
end
|
||||
object CryptManager: TCryptManager
|
||||
Left = 704
|
||||
Top = 8
|
||||
end
|
||||
end
|
105
Example/TCryptManager/uMain.pas
Normal file
@ -0,0 +1,105 @@
|
||||
unit uMain;
|
||||
|
||||
//////////////////////////////////////
|
||||
/// Lina Cryption Example ///
|
||||
/// **************************** ///
|
||||
/// (c) 2014 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$IF CompilerVersion <> 26.0}
|
||||
{$MESSAGE ERROR 'This example was written to compile under Delphi XE5'}
|
||||
{$ENDIF}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
||||
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, uBase,
|
||||
uSysCtrls, uSysTools;
|
||||
|
||||
type
|
||||
TfmMain = class(TForm)
|
||||
mmDecrypted: TMemo;
|
||||
mmEncrypted: TMemo;
|
||||
btEncrypt: TButton;
|
||||
rgMode: TRadioGroup;
|
||||
btDecrypt: TButton;
|
||||
leKey: TLabeledEdit;
|
||||
CryptManager: TCryptManager;
|
||||
brGenerate: TButton;
|
||||
procedure rgModeClick(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure btEncryptClick(Sender: TObject);
|
||||
procedure btDecryptClick(Sender: TObject);
|
||||
procedure leKeyChange(Sender: TObject);
|
||||
procedure leKeyKeyPress(Sender: TObject; var Key: Char);
|
||||
procedure leKeyContextPopup(Sender: TObject; MousePos: TPoint;
|
||||
var Handled: Boolean);
|
||||
procedure brGenerateClick(Sender: TObject);
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
public
|
||||
{ Public-Deklarationen }
|
||||
end;
|
||||
|
||||
var
|
||||
fmMain: TfmMain;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
procedure TfmMain.btEncryptClick(Sender: TObject);
|
||||
begin
|
||||
CryptManager.Decrypted.Assign(mmDecrypted.Lines);
|
||||
mmEncrypted.Lines.Assign(CryptManager.Encrypted);
|
||||
end;
|
||||
|
||||
procedure TfmMain.brGenerateClick(Sender: TObject);
|
||||
begin
|
||||
leKey.Text := CryptManager.GenerateKey;
|
||||
end;
|
||||
|
||||
procedure TfmMain.btDecryptClick(Sender: TObject);
|
||||
begin
|
||||
CryptManager.Encrypted.Assign(mmEncrypted.Lines);
|
||||
mmDecrypted.Lines.Assign(CryptManager.Decrypted);
|
||||
end;
|
||||
|
||||
procedure TfmMain.FormCreate(Sender: TObject);
|
||||
begin
|
||||
rgMode.ItemIndex := 0;
|
||||
end;
|
||||
|
||||
procedure TfmMain.leKeyChange(Sender: TObject);
|
||||
begin
|
||||
CryptManager.Key := leKey.Text;
|
||||
end;
|
||||
|
||||
procedure TfmMain.leKeyContextPopup(Sender: TObject; MousePos: TPoint;
|
||||
var Handled: Boolean);
|
||||
begin
|
||||
Handled := True;
|
||||
end;
|
||||
|
||||
procedure TfmMain.leKeyKeyPress(Sender: TObject; var Key: Char);
|
||||
begin
|
||||
if (Key in Numbers + Letters) and (CryptManager.ValidKey(leKey.Text + Key) = False) then
|
||||
begin
|
||||
Key := #0;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfmMain.rgModeClick(Sender: TObject);
|
||||
begin
|
||||
leKey.Clear;
|
||||
leKey.NumbersOnly := rgMode.ItemIndex = 0;
|
||||
leKey.MaxLength := Abs(BoolToInt(rgMode.ItemIndex = 1));
|
||||
case rgMode.ItemIndex of
|
||||
0: CryptManager.Mode := cmXor;
|
||||
1: CryptManager.Mode := cmCaesar;
|
||||
2: CryptManager.Mode := cmVigenere;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
14
Example/TDelphiManager/pExample.dpr
Normal file
@ -0,0 +1,14 @@
|
||||
program pExample;
|
||||
|
||||
uses
|
||||
Vcl.Forms,
|
||||
uMain in 'uMain.pas' {fmMain};
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
Application.Initialize;
|
||||
Application.MainFormOnTaskbar := True;
|
||||
Application.CreateForm(TfmMain, fmMain);
|
||||
Application.Run;
|
||||
end.
|
170
Example/TDelphiManager/pExample.dproj
Normal file
@ -0,0 +1,170 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{B2F1BE7E-2745-4B2F-A4DE-CA83E5CC75C5}</ProjectGuid>
|
||||
<ProjectVersion>15.3</ProjectVersion>
|
||||
<FrameworkType>VCL</FrameworkType>
|
||||
<MainSource>pExample.dpr</MainSource>
|
||||
<Base>True</Base>
|
||||
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||
<TargetedPlatforms>1</TargetedPlatforms>
|
||||
<AppType>Application</AppType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
||||
<Base_Win32>true</Base_Win32>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
|
||||
<Base_Win64>true</Base_Win64>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
|
||||
<Cfg_1>true</Cfg_1>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
|
||||
<Cfg_1_Win32>true</Cfg_1_Win32>
|
||||
<CfgParent>Cfg_1</CfgParent>
|
||||
<Cfg_1>true</Cfg_1>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
|
||||
<Cfg_2>true</Cfg_2>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base)'!=''">
|
||||
<Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
|
||||
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
|
||||
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
|
||||
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
|
||||
<DCC_E>false</DCC_E>
|
||||
<DCC_N>false</DCC_N>
|
||||
<DCC_S>false</DCC_S>
|
||||
<DCC_F>false</DCC_F>
|
||||
<DCC_K>false</DCC_K>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
|
||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||
<DCC_UsePackage>JvBDE;JvGlobus;O408br;JvMM;JvManagedThreads;FireDACSqliteDriver;DBXSqliteDriver;AbbreviaVCL;FireDACPgDriver;VampyreImagingPackage.D2009;fmx;JvDlgs;IndySystem;JvCrypt;TeeDB;frx19;inetdbbde;vclib;DBXInterBaseDriver;GR32_DSGN_RSXE5;DataSnapCommon;MiscrosoftScriptControls;pkCindyDERDXE5;JvNet;JvDotNetCtrls;DbxCommonDriver;vclimg;dbxcds;PieLib;vclshlctrls;MetropolisUILiveTile;JvXPCtrls;pkCindyPackDXE5;vcldb;vcldsnap;pkCindyIEDXE5;fmxFireDAC;pkCindyDBXDXE5;CustomIPTransport;JvCore;SynEdit_RXE5;vclribbon;dsnap;IndyIPServer;fmxase;vcl;IndyCore;DebenuPDFLibraryLite;DCEF_XE5;CodeSiteExpressPkg;IndyIPCommon;CloudService;FmxTeeUI;FireDACIBDriver;JvAppFrm;JvDB;JvRuntimeDesign;inetdbxpress;webdsnap;frxe19;JclDeveloperTools;JvDocking;adortl;JvWizards;frxDB19;FireDACASADriver;JvHMI;bindcompfmx;JvBands;vcldbx;FireDACODBCDriver;rtl;dbrtl;DbxClientDriver;FireDACCommon;bindcomp;JvPluginSystem;Tee;JclContainers;JvCmp;vclFireDAC;JvSystem;xmlrtl;svnui;ibxpress;SVATimer_DXE5;JvControls;JvTimeFramework;IndyProtocols;DBXMySQLDriver;djsonrt;FireDACCommonDriver;O408_r;bindengine;vclactnband;soaprtl;bindcompdbx;TeeUI;FMXTee;bindcompvcl;JvStdCtrls;JvCustom;Jcl;vclie;JvJans;JvPageComps;JvPrintPreview;pkCindyDBCtrlsPackDXE5;FireDACADSDriver;vcltouch;LINA_D_XE5;VclSmp;FireDAC;VCLRESTComponents;Intraweb;GR32_RSXE5;dsnapcon;inet;fmxobj;JclVcl;JvPascalInterpreter;FireDACMySQLDriver;vclx;svn;fmxdae;RESTComponents;bdertl;FireDACMSAccDriver;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base_Win64)'!=''">
|
||||
<DCC_UsePackage>O408br;FireDACSqliteDriver;DBXSqliteDriver;AbbreviaVCL;FireDACPgDriver;fmx;IndySystem;vclib;DBXInterBaseDriver;DataSnapCommon;DbxCommonDriver;vclimg;dbxcds;vclshlctrls;MetropolisUILiveTile;vcldb;vcldsnap;fmxFireDAC;CustomIPTransport;SynEdit_RXE5;vclribbon;dsnap;IndyIPServer;fmxase;vcl;IndyCore;IndyIPCommon;CloudService;FireDACIBDriver;inetdbxpress;webdsnap;adortl;FireDACASADriver;bindcompfmx;FireDACODBCDriver;rtl;dbrtl;DbxClientDriver;FireDACCommon;bindcomp;vclFireDAC;xmlrtl;ibxpress;IndyProtocols;DBXMySQLDriver;FireDACCommonDriver;O408_r;bindengine;vclactnband;soaprtl;bindcompdbx;bindcompvcl;vclie;FireDACADSDriver;vcltouch;LINA_D_XE5;VclSmp;FireDAC;VCLRESTComponents;Intraweb;dsnapcon;inet;fmxobj;FireDACMySQLDriver;vclx;fmxdae;RESTComponents;FireDACMSAccDriver;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_1)'!=''">
|
||||
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
|
||||
<DCC_DebugDCUs>true</DCC_DebugDCUs>
|
||||
<DCC_Optimize>false</DCC_Optimize>
|
||||
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
|
||||
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
|
||||
<DCC_RemoteDebug>true</DCC_RemoteDebug>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
|
||||
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_2)'!=''">
|
||||
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
|
||||
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
|
||||
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
|
||||
<DCC_DebugInformation>0</DCC_DebugInformation>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<DelphiCompile Include="$(MainSource)">
|
||||
<MainSource>MainSource</MainSource>
|
||||
</DelphiCompile>
|
||||
<DCCReference Include="uMain.pas">
|
||||
<Form>fmMain</Form>
|
||||
<FormType>dfm</FormType>
|
||||
</DCCReference>
|
||||
<BuildConfiguration Include="Release">
|
||||
<Key>Cfg_2</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
</BuildConfiguration>
|
||||
<BuildConfiguration Include="Base">
|
||||
<Key>Base</Key>
|
||||
</BuildConfiguration>
|
||||
<BuildConfiguration Include="Debug">
|
||||
<Key>Cfg_1</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
</BuildConfiguration>
|
||||
</ItemGroup>
|
||||
<ProjectExtensions>
|
||||
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
|
||||
<Borland.ProjectType/>
|
||||
<BorlandProject>
|
||||
<Delphi.Personality>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">1</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||
<VersionInfo Name="Release">0</VersionInfo>
|
||||
<VersionInfo Name="Build">0</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">1031</VersionInfo>
|
||||
<VersionInfo Name="CodePage">1252</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName"/>
|
||||
<VersionInfoKeys Name="FileDescription"/>
|
||||
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName"/>
|
||||
<VersionInfoKeys Name="LegalCopyright"/>
|
||||
<VersionInfoKeys Name="LegalTrademarks"/>
|
||||
<VersionInfoKeys Name="OriginalFilename"/>
|
||||
<VersionInfoKeys Name="ProductName"/>
|
||||
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"/>
|
||||
<VersionInfoKeys Name="CFBundleName"/>
|
||||
<VersionInfoKeys Name="CFBundleDisplayName"/>
|
||||
<VersionInfoKeys Name="UIDeviceFamily"/>
|
||||
<VersionInfoKeys Name="CFBundleIdentifier"/>
|
||||
<VersionInfoKeys Name="CFBundleVersion"/>
|
||||
<VersionInfoKeys Name="CFBundlePackageType"/>
|
||||
<VersionInfoKeys Name="CFBundleSignature"/>
|
||||
<VersionInfoKeys Name="CFBundleAllowMixedLocalizations"/>
|
||||
<VersionInfoKeys Name="UISupportedInterfaceOrientations"/>
|
||||
<VersionInfoKeys Name="CFBundleExecutable"/>
|
||||
<VersionInfoKeys Name="CFBundleResourceSpecification"/>
|
||||
<VersionInfoKeys Name="LSRequiresIPhoneOS"/>
|
||||
<VersionInfoKeys Name="CFBundleInfoDictionaryVersion"/>
|
||||
<VersionInfoKeys Name="CFBundleDevelopmentRegion"/>
|
||||
<VersionInfoKeys Name="package"/>
|
||||
<VersionInfoKeys Name="label"/>
|
||||
<VersionInfoKeys Name="versionCode"/>
|
||||
<VersionInfoKeys Name="versionName"/>
|
||||
<VersionInfoKeys Name="persistent"/>
|
||||
<VersionInfoKeys Name="restoreAnyVersion"/>
|
||||
<VersionInfoKeys Name="installLocation"/>
|
||||
<VersionInfoKeys Name="largeHeap"/>
|
||||
<VersionInfoKeys Name="theme"/>
|
||||
</VersionInfoKeys>
|
||||
<Source>
|
||||
<Source Name="MainSource">pExample.dpr</Source>
|
||||
</Source>
|
||||
</Delphi.Personality>
|
||||
<Deployment/>
|
||||
<Platforms>
|
||||
<Platform value="Win32">True</Platform>
|
||||
<Platform value="Win64">False</Platform>
|
||||
</Platforms>
|
||||
</BorlandProject>
|
||||
<ProjectFileVersion>12</ProjectFileVersion>
|
||||
</ProjectExtensions>
|
||||
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
||||
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
|
||||
</Project>
|
40
Example/TDelphiManager/pExample.dproj.local
Normal file
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<BorlandProject>
|
||||
<Transactions>
|
||||
<Transaction>1899.12.30 00:00:00.000.541,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.177,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.356,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.333,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.963,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.120,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.215,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.165,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.129,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.106,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.957,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.779,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.438,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.169,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.911,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.726,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.832,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.029,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.283,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.036,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.579,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.376,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.191,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Example\TContextMenu\pExample.dproj=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Project1.dproj</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.228,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Example\TContextMenu\uMain.pas=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.086,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.228,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Example\TContextMenu\uMain.dfm=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.dfm</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.634,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.256,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.505,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.028,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.629,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.562,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.044,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.689,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.012,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\Unit1.pas</Transaction>
|
||||
</Transactions>
|
||||
</BorlandProject>
|
BIN
Example/TDelphiManager/pExample.exe
Normal file
BIN
Example/TDelphiManager/pExample.identcache
Normal file
BIN
Example/TDelphiManager/pExample.res
Normal file
80
Example/TDelphiManager/uMain.dfm
Normal file
@ -0,0 +1,80 @@
|
||||
object fmMain: TfmMain
|
||||
Left = 0
|
||||
Top = 0
|
||||
BorderIcons = [biSystemMenu, biMinimize]
|
||||
BorderStyle = bsSingle
|
||||
Caption = 'LinaComponents "TDelphiManager" Example'
|
||||
ClientHeight = 219
|
||||
ClientWidth = 474
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
Position = poScreenCenter
|
||||
OnCreate = FormCreate
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object rgVersions: TRadioGroup
|
||||
Left = 8
|
||||
Top = 8
|
||||
Width = 371
|
||||
Height = 185
|
||||
Caption = 'Installed Delphi versions'
|
||||
TabOrder = 0
|
||||
end
|
||||
object pnButtons: TPanel
|
||||
Left = 385
|
||||
Top = 0
|
||||
Width = 89
|
||||
Height = 200
|
||||
Align = alRight
|
||||
TabOrder = 1
|
||||
ExplicitHeight = 201
|
||||
object btLaunch: TButton
|
||||
Left = 8
|
||||
Top = 168
|
||||
Width = 75
|
||||
Height = 25
|
||||
Caption = 'Launch'
|
||||
Default = True
|
||||
TabOrder = 2
|
||||
OnClick = btLaunchClick
|
||||
end
|
||||
object btRefresh: TButton
|
||||
Left = 8
|
||||
Top = 8
|
||||
Width = 75
|
||||
Height = 25
|
||||
Caption = 'Refresh'
|
||||
TabOrder = 0
|
||||
OnClick = btRefreshClick
|
||||
end
|
||||
object btInfo: TButton
|
||||
Left = 8
|
||||
Top = 137
|
||||
Width = 75
|
||||
Height = 25
|
||||
Caption = 'Info'
|
||||
TabOrder = 1
|
||||
OnClick = btInfoClick
|
||||
end
|
||||
end
|
||||
object StatusBar: TStatusBar
|
||||
Left = 0
|
||||
Top = 200
|
||||
Width = 474
|
||||
Height = 19
|
||||
Panels = <>
|
||||
SimplePanel = True
|
||||
ExplicitLeft = 192
|
||||
ExplicitTop = 208
|
||||
ExplicitWidth = 0
|
||||
end
|
||||
object DelphiManager: TDelphiManager
|
||||
Left = 40
|
||||
Top = 32
|
||||
end
|
||||
end
|
93
Example/TDelphiManager/uMain.pas
Normal file
@ -0,0 +1,93 @@
|
||||
unit uMain;
|
||||
|
||||
//////////////////////////////////////
|
||||
/// Lina Delphi Manager Example ///
|
||||
/// **************************** ///
|
||||
/// (c) 2014 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$IF CompilerVersion <> 26.0}
|
||||
{$MESSAGE ERROR 'This example was written to compile under Delphi XE5'}
|
||||
{$ENDIF}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
||||
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, uBase,
|
||||
uSysCtrls, Vcl.ComCtrls;
|
||||
|
||||
type
|
||||
TfmMain = class(TForm)
|
||||
rgVersions: TRadioGroup;
|
||||
pnButtons: TPanel;
|
||||
btLaunch: TButton;
|
||||
btRefresh: TButton;
|
||||
DelphiManager: TDelphiManager;
|
||||
btInfo: TButton;
|
||||
StatusBar: TStatusBar;
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure btRefreshClick(Sender: TObject);
|
||||
procedure btLaunchClick(Sender: TObject);
|
||||
procedure btInfoClick(Sender: TObject);
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
public
|
||||
{ Public-Deklarationen }
|
||||
end;
|
||||
|
||||
var
|
||||
fmMain: TfmMain;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
procedure TfmMain.btInfoClick(Sender: TObject);
|
||||
begin
|
||||
MessageDlg(DelphiVersionToFullName(NameToDelphiVersion(rgVersions.Items.Strings[rgVersions.ItemIndex])) +
|
||||
sLineBreak + 'Code name: ' + DelphiVersionToCodeName(NameToDelphiVersion(rgVersions.Items.Strings[rgVersions.ItemIndex])) +
|
||||
sLineBreak + 'Product version: ' + IntToStr(DelphiVersionToProductVersion(NameToDelphiVersion(rgVersions.Items.Strings[rgVersions.ItemIndex]))) +
|
||||
sLineBreak + 'Package version: ' + IntToStr(DelphiVersionToPackageVersion(NameToDelphiVersion(rgVersions.Items.Strings[rgVersions.ItemIndex]))),
|
||||
mtInformation,[mbOK],0);
|
||||
end;
|
||||
|
||||
procedure TfmMain.btLaunchClick(Sender: TObject);
|
||||
begin
|
||||
DelphiManager.Launch(NameToDelphiVersion(rgVersions.Items.Strings[rgVersions.ItemIndex]));
|
||||
end;
|
||||
|
||||
procedure TfmMain.btRefreshClick(Sender: TObject);
|
||||
var
|
||||
Installed: TDelphiVersions;
|
||||
Index: TDelphiVersion;
|
||||
begin
|
||||
rgVersions.Items.Clear;
|
||||
Installed := DelphiManager.Installed;
|
||||
for Index := Low(TDelphiVersion) to High(TDelphiVersion) do
|
||||
begin
|
||||
if Index in Installed then
|
||||
begin
|
||||
rgVersions.Items.Add(DelphiVersionToName(Index));
|
||||
end;
|
||||
end;
|
||||
if rgVersions.Items.Count <> 0 then
|
||||
begin
|
||||
rgVersions.ItemIndex := 0;
|
||||
btInfo.Enabled := True;
|
||||
btLaunch.Enabled := True;
|
||||
end else
|
||||
begin
|
||||
rgVersions.ItemIndex := -1;
|
||||
btInfo.Enabled := False;
|
||||
btLaunch.Enabled := False;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfmMain.FormCreate(Sender: TObject);
|
||||
begin
|
||||
StatusBar.SimpleText := 'Built with ' + DelphiManager.VersionFullName + ' "' + DelphiManager.VersionCodeName + '" and Lina Components v' + FloatToStr(DelphiManager.LinaVersion) + ' for ' + DelphiManager.LocalPlatformFullName;
|
||||
btRefresh.Click;
|
||||
end;
|
||||
|
||||
end.
|
@ -31,7 +31,6 @@ object Form1: TForm1
|
||||
Height = 41
|
||||
Align = alBottom
|
||||
TabOrder = 0
|
||||
ExplicitTop = 139
|
||||
object btClose: TButton
|
||||
Left = 8
|
||||
Top = 8
|
||||
@ -112,7 +111,7 @@ object Form1: TForm1
|
||||
Indent = 'Coding'
|
||||
Field = 'Caption'
|
||||
end>
|
||||
Left = 240
|
||||
Top = 32
|
||||
Left = 280
|
||||
Top = 24
|
||||
end
|
||||
end
|
||||
|
@ -52,8 +52,13 @@ begin
|
||||
end;
|
||||
|
||||
procedure TForm1.btHelloClick(Sender: TObject);
|
||||
//var g: TLocalizationGenerator;
|
||||
begin
|
||||
ShowMessage(HelloWorld);
|
||||
//g := TLocalizationGenerator.Create(LocalizationManager.Data);
|
||||
// ShowMessage(HelloWorld);
|
||||
//showmessage(g.Localization.Lines.Text);
|
||||
//g.Free;
|
||||
showmessage((localizationmanager.Localizations.Items[LocalizationManager.Current] as TLocalization).Name);
|
||||
end;
|
||||
|
||||
procedure TForm1.coEncodingChange(Sender: TObject);
|
||||
@ -75,12 +80,12 @@ end;
|
||||
procedure TForm1.FormCreate(Sender: TObject);
|
||||
var
|
||||
Index: Integer;
|
||||
LanguageFiles: TStrings;
|
||||
// LanguageFiles: TStrings;
|
||||
begin
|
||||
LocalizationManager.References.Add;
|
||||
HelloWorld := 'Hello,' + #10 + 'World!';
|
||||
(LocalizationManager.References.Items[0] as TLocalizationReference).Reference := @HelloWorld;
|
||||
LanguageFiles := TStringList.Create;
|
||||
{LanguageFiles := TStringList.Create;
|
||||
ListFiles(ExtractFileDir(Application.ExeName),LanguageFiles,['*.loc']);
|
||||
lbLanguage.Items.Assign(LanguageFiles);
|
||||
for Index := 0 to LanguageFiles.Count - 1 do
|
||||
@ -92,7 +97,12 @@ begin
|
||||
// if (LocalizationManager.Localizations.Items[Index] as TLocalization).Lines.DefaultEncoding = TEncoding.ANSI then showmessage('');
|
||||
// TLocalization(LocalizationManager.Localizations.Items[Index]).Encoding := ceANSI;
|
||||
end;
|
||||
//LocalizationManager.Applier.ApplyMode := laMainForm;
|
||||
//LocalizationManager.Applier.ApplyMode := laMainForm; }
|
||||
LocalizationManager.Localizations.LoadFromDirectory(ExtractFileDir(Application.ExeName),['*.loc']);
|
||||
for Index := 0 to LocalizationManager.Localizations.Count - 1 do
|
||||
begin
|
||||
lbLanguage.Items.Add((LocalizationManager.Localizations.Items[Index] as TLocalization).Name);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TForm1.lbLanguageClick(Sender: TObject);
|
||||
|
@ -1,4 +1,4 @@
|
||||
These statistics cover the official repository of Lina Components.
|
||||
|
||||
Total lines of code (LoC): 10300+
|
||||
Total visual components (VC): 17
|
||||
Total lines of code (LoC): 12000+
|
||||
Total visual components (VC): 20
|
@ -41,7 +41,7 @@ package LINA_D_XE5;
|
||||
requires
|
||||
rtl,
|
||||
vcl,
|
||||
dbrtl,
|
||||
vclx,
|
||||
PascalScript_Core_D19,
|
||||
IndySystem,
|
||||
IndyProtocols,
|
||||
@ -60,7 +60,9 @@ contains
|
||||
uAdvCtrls in '..\..\Source\uAdvCtrls.pas',
|
||||
uWebCtrls in '..\..\Source\uWebCtrls.pas',
|
||||
uFileCtrls in '..\..\Source\uFileCtrls.pas',
|
||||
{$IFDEF WIN32}
|
||||
uInit in '..\..\Source\uInit.pas',
|
||||
{$ENDIF}
|
||||
uCalc in '..\..\Source\uCalc.pas';
|
||||
|
||||
end.
|
||||
|
@ -115,7 +115,7 @@
|
||||
<DCCReference Include="..\..\Resource\Compiled\uWebCtrls.dcr"/>
|
||||
<DCCReference Include="rtl.dcp"/>
|
||||
<DCCReference Include="vcl.dcp"/>
|
||||
<DCCReference Include="dbrtl.dcp"/>
|
||||
<DCCReference Include="vclx.dcp"/>
|
||||
<DCCReference Include="PascalScript_Core_D19.dcp"/>
|
||||
<DCCReference Include="IndySystem.dcp"/>
|
||||
<DCCReference Include="IndyProtocols.dcp"/>
|
||||
|
@ -1,50 +1,53 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<BorlandProject>
|
||||
<Transactions>
|
||||
<Transaction>1899.12.30 00:00:00.000.681,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Resource\Lina.rc=</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.809,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Resource\Lina.rc</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.204,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\uFileCtrls.pas=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uFileCtrls.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.508,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uBase.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.576,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uSysTools.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.325,=dbrtl.dcp</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.412,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.674,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.675,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.592,=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uFileTools.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.411,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uAdvCtrls.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.621,=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uLinaTest.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.318,=vcl.dcp</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.414,C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uLinaTest.pas=</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.577,=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uBattery.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.556,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uLocalMgr.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.143,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Untitled1.htm</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.508,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uBase.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.518,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uBattery.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.650,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uBattery.pas=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uSysCtrls.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.204,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\uFileCtrls.pas=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uFileCtrls.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.411,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uAdvCtrls.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.675,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.809,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Resource\Lina.rc</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.325,=dbrtl.dcp</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.681,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Resource\Lina.rc=</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.934,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\Config.inc</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.414,C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uLinaTest.pas=</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.621,=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uLinaTest.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.556,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uLocalMgr.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.577,=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uBattery.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.861,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Settings.inc</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.318,=vcl.dcp</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.648,=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uScriptMgr.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.896,C:\Users\Dennis G\Documents\CodeQuality.htm=</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.938,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\Config.inc</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.537,C:\Users\Dennis G\Documents\CodeQuality.htm=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Untitled1.htm</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.143,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Untitled1.htm</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.896,C:\Users\Dennis G\Documents\CodeQuality.htm=</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.412,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.971,=IndySystem.dcp</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.555,=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uBase.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.196,=rtl.dcp</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.525,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uCrypt.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.584,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uVirtObj.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.686,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\uSysTools.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.196,=rtl.dcp</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.075,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uCalc.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.118,=IndyCore.dcp</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.535,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uFileTools.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.633,=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\uLocalMgr.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.686,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\uSysTools.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.525,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uCrypt.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.672,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\uFrmCtrls.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.932,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\uFileCtrls.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.173,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uInit.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.791,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.837,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.582,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uWebCtrls.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.566,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uScriptMgr.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.045,=IndyProtocols.dcp</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.633,C:\Users\Dennis\Documents\RAD Studio\Projekte\Package1.dproj=C:\Users\Dennis\Documents\RAD Studio\Projekte\LinaComponents\LINA_D_XE5.dproj</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.582,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uWebCtrls.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.932,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\uFileCtrls.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.837,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.791,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.674,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.173,C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Package\Delphi_XE5\Unit1.pas=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uInit.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.857,=PascalScript_Core_D19.dcp</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.546,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uFrmCtrls.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.045,=IndyProtocols.dcp</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.799,=PascalScript_Core_D19.dcp</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.566,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uScriptMgr.pas</Transaction>
|
||||
<Transaction>1899.12.30 00:00:00.000.546,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uFrmCtrls.pas</Transaction>
|
||||
</Transactions>
|
||||
<ProjectSortOrder AutoSort="0" SortType="0">
|
||||
<File Path="..\..\..\LinaComponents"/>
|
||||
@ -75,12 +78,12 @@
|
||||
<File Path="..\..\Source\uSysTools.pas"/>
|
||||
<File Path="..\..\Source\uVirtObj.pas"/>
|
||||
<File Path="..\..\Source\uWebCtrls.pas"/>
|
||||
<File Path="dbrtl.dcp"/>
|
||||
<File Path="IndyCore.dcp"/>
|
||||
<File Path="IndyProtocols.dcp"/>
|
||||
<File Path="IndySystem.dcp"/>
|
||||
<File Path="PascalScript_Core_D19.dcp"/>
|
||||
<File Path="rtl.dcp"/>
|
||||
<File Path="vcl.dcp"/>
|
||||
<File Path="vclx.dcp"/>
|
||||
</ProjectSortOrder>
|
||||
</BorlandProject>
|
||||
|
BIN
Resource/Bitmap/Large/TCryptManager.bmp
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
Resource/Bitmap/Large/TDelphiManager.bmp
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
Resource/Bitmap/Large/TStringContainer.bmp
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
Resource/Bitmap/Large/TValueEdit.bmp
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
Resource/Bitmap/Small/TCryptManager.bmp
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Resource/Bitmap/Small/TDelphiManager.bmp
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Resource/Bitmap/Small/TSizePanel.bmp
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Resource/Bitmap/Small/TStringContainer.bmp
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Resource/Bitmap/TCryptManager.bmp
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
Resource/Bitmap/TDelphiManager.bmp
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
Resource/Bitmap/TStringContainer.bmp
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
Resource/Bitmap/TValueEdit.bmp
Normal file
After Width: | Height: | Size: 1.6 KiB |
@ -14,9 +14,15 @@ TCOMPONENTMANAGER32 BITMAP "Bitmap\Large\TComponentManager.bmp"
|
||||
TCONTEXTMENU BITMAP "Bitmap\TContextMenu.bmp"
|
||||
TCONTEXTMENU16 BITMAP "Bitmap\Small\TContextMenu.bmp"
|
||||
TCONTEXTMENU32 BITMAP "Bitmap\Large\TContextMenu.bmp"
|
||||
TCRYPTMANAGER BITMAP "Bitmap\TCryptManager.bmp"
|
||||
TCRYPTMANAGER16 BITMAP "Bitmap\Small\TCryptManager.bmp"
|
||||
TCRYPTMANAGER32 BITMAP "Bitmap\Large\TCryptManager.bmp"
|
||||
TCURSORFIX BITMAP "Bitmap\TCursorFix.bmp"
|
||||
TCURSORFIX16 BITMAP "Bitmap\Small\TCursorFix.bmp"
|
||||
TCURSORFIX32 BITMAP "Bitmap\Large\TCursorFix.bmp"
|
||||
TDELPHIMANAGER BITMAP "Bitmap\TDelphiManager.bmp"
|
||||
TDELPHIMANAGER16 BITMAP "Bitmap\Small\TDelphiManager.bmp"
|
||||
TDELPHIMANAGER32 BITMAP "Bitmap\Large\TDelphiManager.bmp"
|
||||
TDOWNLOAD BITMAP "Bitmap\TDownload.bmp"
|
||||
TDOWNLOAD16 BITMAP "Bitmap\Small\TDownload.bmp"
|
||||
TDOWNLOAD32 BITMAP "Bitmap\Large\TDownload.bmp"
|
||||
@ -41,9 +47,18 @@ TSCROLLLISTBOX32 BITMAP "Bitmap\Large\TScrollListBox.bmp"
|
||||
TSHORTCUTLABEL BITMAP "Bitmap\TShortcutLabel.bmp"
|
||||
TSHORTCUTLABEL16 BITMAP "Bitmap\Small\TShortcutLabel.bmp"
|
||||
TSHORTCUTLABEL32 BITMAP "Bitmap\Large\TShortcutLabel.bmp"
|
||||
TSIZEPANEL BITMAP "Bitmap\TSizePanel.bmp"
|
||||
TSIZEPANEL16 BITMAP "Bitmap\Small\TSizePanel.bmp"
|
||||
TSIZEPANEL32 BITMAP "Bitmap\Large\TSizePanel.bmp"
|
||||
TSPLASHSCREEN BITMAP "Bitmap\TSplashScreen.bmp"
|
||||
TSPLASHSCREEN16 BITMAP "Bitmap\Small\TSplashScreen.bmp"
|
||||
TSPLASHSCREEN32 BITMAP "Bitmap\Large\TSplashScreen.bmp"
|
||||
TSTRINGCONTAINER BITMAP "Bitmap\TStringContainer.bmp"
|
||||
TSTRINGCONTAINER16 BITMAP "Bitmap\Small\TStringContainer.bmp"
|
||||
TSTRINGCONTAINER32 BITMAP "Bitmap\Large\TStringContainer.bmp"
|
||||
TVALUEEDIT BITMAP "Bitmap\TValueEdit.bmp"
|
||||
TVALUEEDIT16 BITMAP "Bitmap\Small\TValueEdit.bmp"
|
||||
TVALUEEDIT32 BITMAP "Bitmap\Large\TValueEdit.bmp"
|
||||
TVIRTUALPROGRAM BITMAP "Bitmap\TVirtualProgram.bmp"
|
||||
TVIRTUALPROGRAM16 BITMAP "Bitmap\Small\TVirtualProgram.bmp"
|
||||
TVIRTUALPROGRAM32 BITMAP "Bitmap\Large\TVirtualProgram.bmp"
|
76
Source/Config.inc
Normal file
@ -0,0 +1,76 @@
|
||||
//////////////////////////////////////
|
||||
/// Lina Configuration File ///
|
||||
/// **************************** ///
|
||||
/// (c) 2015 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$DEFINE LINA}
|
||||
{ Globale Einstellungen }
|
||||
{$DEFINE ADD_SPLASHENTRY}
|
||||
{$DEFINE ADD_ABOUTENTRY}
|
||||
{$DEFINE ADD_COMPONENTREG}
|
||||
{$DEFINE ADD_SINGLECATEGORY}
|
||||
{$DEFINE WARN_INCOMPATIBLEPLATFORM}
|
||||
{$DEFINE WARN_INCOMPATIBLECOMPILER}
|
||||
{$DEFINE WARN_INCOMPATIBLEVERSION}
|
||||
{ Globale Einschränkungen }
|
||||
{$IFDEF CONDITIONALEXPRESSIONS}
|
||||
{$IF (NOT Defined(DCC)) AND Defined(WARN_INCOMPATIBLECOMPILER)}
|
||||
{ Nur der Delphi-Compiler wird (offiziell) unterstützt. }
|
||||
{$MESSAGE ERROR 'Lina Components requires Delphi'}
|
||||
{$IFEND}
|
||||
{$IF (NOT Defined(MSWINDOWS)) AND Defined(WARN_INCOMPATIBLECOMPILER)}
|
||||
{ Nur Windows wird (offiziell) als Ziel-Platform unterstützt. }
|
||||
{$MESSAGE ERROR 'Lina Components requires Microsoft Windows'}
|
||||
{$IFEND}
|
||||
{$IF (CompilerVersion < 15.0) AND Defined(WARN_INCOMPATIBLEVERSION)}
|
||||
{ Frühere Delphi-Versionen als Delphi 7 werden nicht (offiziell)
|
||||
unterstützt. }
|
||||
{$MESSAGE ERROR 'Lina Components requires Delphi 7 or higher'}
|
||||
{$IFEND}
|
||||
{$IF CompilerVersion < 17.0}
|
||||
{ Unter früheren Delphi-Versionen als 2005 gab es noch nicht die
|
||||
Möglichkeit, Records mit methoden zu versehen. Die Implementierung von
|
||||
Prozeduren und/oder Funktionen war Klassen vorenthalten. }
|
||||
{$DEFINE NO_RECORDMETHODS}
|
||||
{$IFEND}
|
||||
{$IF CompilerVersion < 18.5}
|
||||
{ Unter früheren Delphi-Versionen als 2007 gab es (offiziell) noch keine
|
||||
Unterstützung für Windows-Vista-spezifische funktionen wie die TaskDialog-
|
||||
Komponente oder einige Funktionen.
|
||||
Damit dies nicht zu Problemen führt, geht der Compiler darauf mithilfe
|
||||
dieser Direktive ein. }
|
||||
{$DEFINE NO_VISTA}
|
||||
{$IFEND}
|
||||
{$IF CompilerVersion < 20.0}
|
||||
{ Unter früheren Delphi-Versionen als 2009 war die Nutzung generischer
|
||||
Datentypen (Generics) nicht möglich. Da es ohne diese nahezu unmöglich
|
||||
scheint, typisierte Objekte, wie zum Beispiel typisierte TObjectList's
|
||||
zu deklarieren, fallen diese Deklarationen unter früheren Delphi-Versionen
|
||||
weg. Dies kann eventuell zu kompatibilitätsproblemen zwischen
|
||||
unterschiedlichen Nutzern dieser Komponenten führen, lässt sich aber nicht
|
||||
vermeiden. }
|
||||
{$DEFINE NO_GENERIC}
|
||||
{ Unter früheren Delphi-Versionen als 2009 entsprach der String-Typenalias
|
||||
dem AnsiString-Typen. Da es gegebenfalls bei manchen externen (zB. OS-
|
||||
Spezifischen) Klassen zu Kompatibilitätsproblemen kommmen könnte, wird
|
||||
hier eine Überprüfung der Unicode-Unterstützung durchgeführt.
|
||||
Zu beachten ist jedoch, dass Delphi 2009 und höher AnsiStrings implizit
|
||||
in UnicodeStrings umwandelt und umgekehrt (sofern möglich). }
|
||||
{$DEFINE NO_UNICODE}
|
||||
{$IFEND}
|
||||
{$IF CompilerVersion < 21.0}
|
||||
{ Unter früheren Delphi-Versionen als 2010 gab es ein Problem mit dem
|
||||
"crHandPoint" cursor, sodass dieser nicht korrekt unter Windows Vista oder
|
||||
höher dargestellt wurde, sondern stattdessen im alten Windows-Look.
|
||||
Bei älteren Delphi-Versionen als 2010 steht deswegen eine Pseudo-
|
||||
Komponente zur Behebung dieses Problems zur Verfügung. }
|
||||
{$DEFINE NO_HANDPOINT}
|
||||
{$IFEND}
|
||||
{$IF CompilerVersion < 23.0}
|
||||
{ Unter früheren Delphi-Versionen als XE2 stand lediglich eine Ziel-Platform
|
||||
für kompilierte Anwendungen zur Verfügung. Deshalb brauchte noch nicht auf
|
||||
Kompatibilität zu mehrfacher Platform-Unterstützung geachtet werden. }
|
||||
{$DEFINE NO_MULTIPLATFORM}
|
||||
{$IFEND}
|
||||
{$ENDIF}
|
@ -3,21 +3,17 @@ unit uAdvCtrls;
|
||||
//////////////////////////////////////
|
||||
/// Lina Advanced Controls Unit ///
|
||||
/// **************************** ///
|
||||
/// (c) 2014 Dennis Göhlert a.o. ///
|
||||
/// (c) 2015 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$IFNDEF MSWINDOWS}
|
||||
{$IFDEF WARN_INCOMPATIBLEOS}
|
||||
{$MESSAGE ERROR 'The "uAdvCtrls" unit is only available under MS-Windows OS'}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
{$I 'Config.inc'}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
{ Standard-Units }
|
||||
SysUtils, Classes, StdCtrls, Windows, Messages, Graphics, Controls, Printers,
|
||||
Contnrs, Forms,
|
||||
SysUtils, Classes, StdCtrls, ExtCtrls, Windows, Messages, Graphics, Controls,
|
||||
Printers, Contnrs, Forms, Math,
|
||||
{ Andere Package-Units }
|
||||
uBase, uSysTools, uFileTools;
|
||||
|
||||
@ -25,12 +21,19 @@ type
|
||||
{ Hilfsklassen }
|
||||
TMemoCaptionMode = (mcmAnyState,mcmUnfocusedOnly);
|
||||
TShortcutLabelState = (slsDefault,slsHovered,slsPressed);
|
||||
TSizePanelAllow = set of (spaResize,spaMove);
|
||||
TPanelBorderStyle = bsNone..bsSizeable;
|
||||
TValueEditAllow = set of (veaNumbers,veaLetters,veaSpaces,veaSeparators,veaOperators,veaOther);
|
||||
|
||||
type
|
||||
{ Ereignisse }
|
||||
TPaintMemoPaintEvent = procedure(Sender: TObject) of object;
|
||||
|
||||
type
|
||||
{ Hauptklassen }
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TCommandButton = class(TButton)
|
||||
protected
|
||||
procedure CreateWnd; override;
|
||||
@ -67,6 +70,9 @@ type
|
||||
property ReplaceCaption: Boolean read FReplaceCaption write SetReplaceCaption default False;
|
||||
end;
|
||||
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TScrollListBox = class(TListBox)
|
||||
protected
|
||||
{ Protected-Deklarationen }
|
||||
@ -100,6 +106,9 @@ type
|
||||
property WordWrap: Boolean read FWordWrap write SetWordWrap default False;
|
||||
end;
|
||||
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TPaintMemo = class(TMemo)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
@ -120,6 +129,7 @@ type
|
||||
{ Public-Deklarationen }
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
procedure Clear; override;
|
||||
property CaptionVisible: Boolean read FCaptionVisible default False;
|
||||
published
|
||||
{ Ereignisse}
|
||||
@ -162,6 +172,9 @@ type
|
||||
property Visited: TColor read FVisited write SetVisited default clPurple;
|
||||
end;
|
||||
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TShortcutLabel = class(TLabel)
|
||||
protected
|
||||
{ Protected-Deklarationen }
|
||||
@ -197,28 +210,72 @@ type
|
||||
property StoreVisited: Boolean read FStoreVisited write FStoreVisited default True;
|
||||
end;
|
||||
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TSizePanel = class(TPanel)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
FAbout: TComponentAbout;
|
||||
FAllow: TSizePanelAllow;
|
||||
FBorderStyle: TPanelBorderStyle;
|
||||
{ Methoden }
|
||||
procedure SetBorderStyle(Value: TPanelBorderStyle);
|
||||
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
|
||||
procedure CreateParams(var Params: TCreateParams); override;
|
||||
public
|
||||
{ Public-Deklarationen }
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
published
|
||||
{ Published-Deklarationen }
|
||||
property About: TComponentAbout read FAbout;
|
||||
property Allow: TSizePanelAllow read FAllow write FAllow default [spaResize,spaMove];
|
||||
property BorderStyle: TPanelBorderStyle read FBorderStyle write SetBorderStyle default bsNone;
|
||||
end;
|
||||
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TValueEdit = class(TEdit)
|
||||
protected
|
||||
{ Protected-Deklarationen }
|
||||
procedure Change; override;
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
FAbout: TComponentAbout;
|
||||
FMinValue: Extended;
|
||||
FMaxValue: Extended;
|
||||
FAllow: TValueEditAllow;
|
||||
FMaxSeparators: Byte;
|
||||
FSeparatorChar: Char;
|
||||
{ Methoden }
|
||||
procedure SetMinValue(Value: Extended);
|
||||
procedure SetMaxValue(Value: Extended);
|
||||
procedure SetAllow(Value: TValueEditAllow);
|
||||
procedure SetMaxSeparators(Value: Byte);
|
||||
procedure SetSeparatorChar(Value: Char);
|
||||
public
|
||||
{ Public-Deklarationen }
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
published
|
||||
{ Published-Deklarationen }
|
||||
property MinValue: Extended read FMinValue write SetMinValue;
|
||||
property MaxValue: Extended read FMaxValue write SetMaxValue;
|
||||
property Allow: TValueEditAllow read FAllow write SetAllow default [veaNumbers,veaSeparators];
|
||||
property MaxSeparators: Byte read FMaxSeparators write SetMaxSeparators default 1;
|
||||
property SeparatorChar: Char read FSeparatorChar write SetSeparatorChar default '.';
|
||||
end;
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
{$ENDIF}
|
||||
|
||||
function BmpToIco(Bitmap: TBitmap): TIcon;
|
||||
function TargetVisited(Target: String): Boolean;
|
||||
|
||||
const
|
||||
{ Meta-Daten }
|
||||
CommandButtonComponent_Version = '1.0';
|
||||
CommandButtonComponent_Copyright = 'Copyright © 2015';
|
||||
CommandButtonComponent_Author = 'Dennis Göhlert a.o.';
|
||||
|
||||
ScrollListBoxComponent_Version = '1.0';
|
||||
ScrollListBoxComponent_Copyright = 'Copyright © 2015';
|
||||
ScrollListBoxComponent_Author = 'Dennis Göhlert a.o.';
|
||||
|
||||
PaintMemoComponent_Version = '1.0';
|
||||
PaintMemoComponent_Copyright = 'Copyright © 2015';
|
||||
PaintMemoComponent_Author = 'Dennis Göhlert a.o.';
|
||||
|
||||
ShortcutLabelComponent_Version = '1.0';
|
||||
ShortcutLabelComponent_Copyright = 'Copyright © 2015';
|
||||
ShortcutLabelComponent_Author = 'Dennis Göhlert a.o.';
|
||||
{ Messages }
|
||||
BS_COMMANDLINK = $0000000E;
|
||||
BM_SETIMAGE = $00F7;
|
||||
@ -232,10 +289,12 @@ var
|
||||
|
||||
implementation
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents(ComponentsPage,[TCommandButton,TScrollListBox,TPaintMemo,TShortcutLabel]);
|
||||
RegisterComponents(ComponentsPage,[TCommandButton,TScrollListBox,TPaintMemo,TShortcutLabel,TSizePanel,TValueEdit]);
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
function BmpToIco(Bitmap: TBitmap): TIcon;
|
||||
begin
|
||||
@ -268,7 +327,7 @@ end;
|
||||
constructor TCommandButton.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
FAbout := TComponentAbout.Create(TCommandButton,CommandButtonComponent_Version,CommandButtonComponent_Copyright,CommandButtonComponent_Author);
|
||||
FAbout := TComponentAbout.Create(TCommandButton);
|
||||
FCommandLink := False;
|
||||
FShield := False;
|
||||
FIcon := TIcon.Create;
|
||||
@ -379,7 +438,7 @@ end;
|
||||
constructor TScrollListBox.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
FAbout := TComponentAbout.Create(TScrollListBox,ScrollListBoxComponent_Version,ScrollListBoxComponent_Copyright,ScrollListBoxComponent_Author);
|
||||
FAbout := TComponentAbout.Create(TScrollListBox);
|
||||
FHorizontalScrollBar := False;
|
||||
FWordWrap := False;
|
||||
end;
|
||||
@ -510,7 +569,7 @@ end;
|
||||
constructor TPaintMemo.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
FAbout := TComponentAbout.Create(TPaintMemo,PaintMemoComponent_Version,PaintMemoComponent_Copyright,PaintMemoComponent_Author);
|
||||
FAbout := TComponentAbout.Create(TPaintMemo);
|
||||
FShowCaption := True;
|
||||
FCaptionFont := TFont.Create;
|
||||
FCaptionFont.Assign(Font);
|
||||
@ -529,6 +588,17 @@ begin
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TPaintMemo.Clear;
|
||||
{ Hier wurde ein Bug behoben, bei dem das OnChange-Ereignis beim aufrufen der
|
||||
"Clear"-Methode nicht aufgerufen wurde. }
|
||||
begin
|
||||
inherited;
|
||||
if Assigned(OnChange) then
|
||||
begin
|
||||
OnChange(Self);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPaintMemo.SetShowCaption(Value: Boolean);
|
||||
begin
|
||||
FShowCaption := Value;
|
||||
@ -651,7 +721,7 @@ end;
|
||||
constructor TShortcutLabel.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
FAbout := TComponentAbout.Create(TShortcutLabel,ShortcutLabelComponent_Version,ShortcutLabelComponent_Copyright,ShortcutLabelComponent_Author);
|
||||
FAbout := TComponentAbout.Create(TShortcutLabel);
|
||||
FState := slsDefault;
|
||||
FFont := TShortcutLabelFont.Create(Self);
|
||||
FHighlightVisited := True;
|
||||
@ -741,6 +811,164 @@ begin
|
||||
Font.Update;
|
||||
end;
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TSizePanel
|
||||
---------------------------------------------------------------------------- }
|
||||
|
||||
constructor TSizePanel.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
FAbout := TComponentAbout.Create(TSizePanel);
|
||||
FAllow := [spaResize,spaMove];
|
||||
FBorderStyle := bsNone;
|
||||
end;
|
||||
|
||||
destructor TSizePanel.Destroy;
|
||||
begin
|
||||
FAbout.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TSizePanel.SetBorderStyle(Value: TPanelBorderStyle);
|
||||
begin
|
||||
if Value <> FBorderStyle then
|
||||
begin
|
||||
if Value <> bsSizeable then
|
||||
begin
|
||||
(Self as TPanel).BorderStyle := Value;
|
||||
end;
|
||||
FBorderStyle := Value;
|
||||
RecreateWnd;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSizePanel.WMNCHitTest(var Message: TWMNCHitTest);
|
||||
var
|
||||
ScreenPos: TPoint;
|
||||
MoveArea: TRect;
|
||||
begin
|
||||
inherited;
|
||||
if not (csDesigning in ComponentState) then
|
||||
begin
|
||||
ScreenPos := ScreenToClient(Point(Message.XPos,Message.YPos));
|
||||
MoveArea := Rect(BevelWidth,BevelWidth,Width - BevelWidth,Height - BevelWidth);
|
||||
if (spaResize in Allow) and (BorderStyle <> bsSizeable) then
|
||||
begin
|
||||
if ScreenPos.X < BevelWidth then
|
||||
begin
|
||||
if ScreenPos.Y < BevelWidth then
|
||||
begin
|
||||
Message.Result := HTTOPLEFT;
|
||||
end else
|
||||
begin
|
||||
if ScreenPos.Y >= Height - BevelWidth then
|
||||
begin
|
||||
Message.Result := HTBOTTOMLEFT;
|
||||
end else
|
||||
begin
|
||||
Message.Result := HTLEFT;
|
||||
end;
|
||||
end;
|
||||
end else
|
||||
begin
|
||||
if ScreenPos.X >= Width - BevelWidth then
|
||||
begin
|
||||
if ScreenPos.Y < BevelWidth then
|
||||
begin
|
||||
Message.Result := HTTOPRIGHT;
|
||||
end else
|
||||
begin
|
||||
if ScreenPos.Y >= Height - BevelWidth then
|
||||
begin
|
||||
Message.Result := HTBOTTOMRIGHT;
|
||||
end else
|
||||
begin
|
||||
Message.Result := HTRIGHT;
|
||||
end;
|
||||
end;
|
||||
end else
|
||||
begin
|
||||
if ScreenPos.Y < BevelWidth then
|
||||
begin
|
||||
Message.Result := HTTOP;
|
||||
end else
|
||||
begin
|
||||
if ScreenPos.Y >= Height - BevelWidth then
|
||||
begin
|
||||
Message.Result := HTBOTTOM;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
if (Message.Result = HTCLIENT) and (PtInRect(MoveArea,ScreenPos) = True) and (spaMove in Allow) then
|
||||
begin
|
||||
Message.Result := HTCAPTION;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSizePanel.CreateParams(var Params: TCreateParams);
|
||||
begin
|
||||
inherited;
|
||||
if NewStyleControls and Ctl3D and (BorderStyle = bsSizeable) then
|
||||
begin
|
||||
Params.Style := Params.Style or WS_SIZEBOX and not WS_BORDER;
|
||||
Params.ExStyle := Params.ExStyle and not WS_EX_CLIENTEDGE;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TValueEdit
|
||||
---------------------------------------------------------------------------- }
|
||||
|
||||
constructor TValueEdit.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
FAbout := TComponentAbout.Create(TValueEdit);
|
||||
FAllow := [veaNumbers,veaSeparators];
|
||||
end;
|
||||
|
||||
destructor TValueEdit.Destroy;
|
||||
begin
|
||||
FAbout.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TValueEdit.SetMinValue(Value: Extended);
|
||||
begin
|
||||
if True then
|
||||
|
||||
end;
|
||||
|
||||
procedure TValueEdit.SetMaxValue(Value: Extended);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TValueEdit.SetAllow(Value: TValueEditAllow);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TValueEdit.SetMaxSeparators(Value: Byte);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TValueEdit.SetSeparatorChar(Value: Char);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TValueEdit.Change;
|
||||
begin
|
||||
if False then
|
||||
begin
|
||||
inherited;
|
||||
end;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
||||
finalization
|
||||
|
@ -3,9 +3,11 @@ unit uBase;
|
||||
//////////////////////////////////////
|
||||
/// Lina Base Unit ///
|
||||
/// **************************** ///
|
||||
/// (c) 2014 Dennis Göhlert a.o. ///
|
||||
/// (c) 2015 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$I 'Config.inc'}
|
||||
|
||||
interface
|
||||
|
||||
{ Dies ist die Basis-Unit für die Lina-Komponenten bzw. Methoden und Klassen.
|
||||
@ -16,6 +18,17 @@ uses
|
||||
{ Standard-Units }
|
||||
SysUtils, Classes, Dialogs, uSysTools;
|
||||
|
||||
const
|
||||
UnitName = 'uBase';
|
||||
LinaVersion = 1.00;
|
||||
About_Title = 'About...';
|
||||
{ Komponenten-Informationen }
|
||||
ComponentsPage = 'Lina';
|
||||
ComponentsVersion = '1.0';
|
||||
ComponentsCopyright = 'Copyright © 2016';
|
||||
ComponentsAuthor = 'Dennis Göhlert a.o.';
|
||||
ComponentsHomepage = '';
|
||||
|
||||
type
|
||||
TComponentAbout = class
|
||||
private
|
||||
@ -30,6 +43,7 @@ type
|
||||
{ Protected-Deklarationen }
|
||||
property Component: TComponentClass read FComponent write FComponent;
|
||||
published
|
||||
{ Published-Deklarationen }
|
||||
property Name: TComponentName read FName;
|
||||
property Version: ShortString read FVersion;
|
||||
property Copyright: ShortString read FCopyright;
|
||||
@ -37,21 +51,19 @@ type
|
||||
property Homepage: ShortString read FHomepage;
|
||||
public
|
||||
{ Public-Deklarationen }
|
||||
constructor Create(Component: TComponentClass; Ver: ShortString = '1.0';
|
||||
Copy: ShortString = ''; Auth: ShortString = ''; Home: ShortString = '');
|
||||
constructor Create(Component: TComponentClass; Ver:
|
||||
ShortString = ComponentsVersion; Copy: ShortString = ComponentsCopyright;
|
||||
Auth: ShortString = ComponentsAuthor;
|
||||
Home: ShortString = ComponentsHomepage);
|
||||
{ Über-Dialog }
|
||||
procedure AboutDlg;
|
||||
end;
|
||||
|
||||
const
|
||||
ComponentsPage = 'Lina';
|
||||
About_Title = 'About...';
|
||||
|
||||
implementation
|
||||
|
||||
constructor TComponentAbout.Create(Component: TComponentClass;
|
||||
Ver: ShortString = '1.0'; Copy: ShortString = ''; Auth: ShortString = '';
|
||||
Home: ShortString = '');
|
||||
Ver: ShortString = ComponentsVersion; Copy: ShortString = ComponentsCopyright;
|
||||
Auth: ShortString = ComponentsAuthor; Home: ShortString = ComponentsHomepage);
|
||||
begin
|
||||
FComponent := Component;
|
||||
FName := ExtractClassName(Component.ClassName);
|
||||
|
@ -1,5 +1,13 @@
|
||||
unit uCalc;
|
||||
|
||||
//////////////////////////////////////
|
||||
/// Lina Calculator Unit ///
|
||||
/// **************************** ///
|
||||
/// (c) 2015 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$I 'Config.inc'}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
@ -73,6 +81,9 @@ type
|
||||
function IndexOf(Name: String): Integer;
|
||||
end;
|
||||
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TCalculator = class(TComponent)
|
||||
private
|
||||
{ Ereignisse}
|
||||
@ -128,13 +139,11 @@ type
|
||||
property Options: TCalculatorOptions read FOptions write FOptions;
|
||||
end;
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
{$ENDIF}
|
||||
|
||||
const
|
||||
{ Meta-Daten }
|
||||
CalculatorComponent_Version = '1.0';
|
||||
CalculatorComponent_Copyright = 'Copyright © 2015';
|
||||
CalculatorComponent_Author = 'Dennis Göhlert a.o.';
|
||||
{ Sonderzeichen für Ausdrücke }
|
||||
CalcSeperators = ['.',','];
|
||||
CalcBrackets = ['(',')'];
|
||||
@ -143,10 +152,12 @@ const
|
||||
|
||||
implementation
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents(ComponentsPage,[TCalculator]);
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TCalculatorConstant
|
||||
@ -218,7 +229,7 @@ end;
|
||||
constructor TCalculator.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
FAbout := TComponentAbout.Create(TCalculator,CalculatorComponent_Version,CalculatorComponent_Copyright,CalculatorComponent_Author);
|
||||
FAbout := TComponentAbout.Create(TCalculator);
|
||||
FExpression := '';
|
||||
FValue := 0;
|
||||
FConstants := TCalculatorConstants.Create(TCalculatorConstant,Self);
|
||||
|
@ -1,374 +0,0 @@
|
||||
unit uCrypt;
|
||||
|
||||
//////////////////////////////////////
|
||||
/// Lina Cryption Unit ///
|
||||
/// **************************** ///
|
||||
/// (c) 2014 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$IFNDEF MSWINDOWS}
|
||||
{$IFDEF WARN_INCOMPATIBLEOS}
|
||||
{$MESSAGE ERROR 'The "uCrypt" unit is only available under MS-Windows OS'}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
{ Standard-Units }
|
||||
SysUtils, Classes,
|
||||
{ Andere Package-Units }
|
||||
uSysTools;
|
||||
|
||||
type
|
||||
{ Fehlermeldungen }
|
||||
EInvalidKey = class(Exception);
|
||||
|
||||
type
|
||||
{ Hilfsklassen }
|
||||
TCryptMode = (cmEncrypt,cmDecrypt);
|
||||
|
||||
type
|
||||
{ Ereignisse }
|
||||
TCryptWorkEvent = procedure(Sender: TObject; const Mode: TCryptMode) of object;
|
||||
TCryptKeyChangeEvent = procedure(Sender: TObject) of object;
|
||||
TCryptKeyChangeQueryEvent = procedure(Sender: TObject; var CanChange: Boolean) of object;
|
||||
|
||||
type
|
||||
{ Hauptklassen }
|
||||
TCrypt = class
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
FKeyString: String;
|
||||
FKeyChar: Char;
|
||||
FKeyInteger: Integer;
|
||||
FLines: TStrings;
|
||||
FWorkEvent: TCryptWorkEvent;
|
||||
FKeyChangeEvent: TCryptKeyChangeEvent;
|
||||
FKeyChangeQueryEvent: TCryptKeyChangeQueryEvent;
|
||||
{ Methoden }
|
||||
procedure SetKeyString(Value: String);
|
||||
procedure SetKeyChar(Value: Char);
|
||||
procedure SetKeyInteger(Value: Integer);
|
||||
{ Eigenschaften }
|
||||
property KeyString: String read FKeyString write SetKeyString;
|
||||
property KeyChar: Char read FKeyChar write SetKeyChar;
|
||||
property KeyInteger: Integer read FKeyInteger write SetKeyInteger;
|
||||
public
|
||||
{ Public-Deklarationen }
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
property Lines: TStrings read FLines write FLines;
|
||||
procedure Decrypt; virtual;
|
||||
procedure Encrypt; virtual;
|
||||
{ Ereignisse }
|
||||
property OnWork: TCryptWorkEvent read FWorkEvent write FWorkEvent;
|
||||
property OnKeyChange: TCryptKeyChangeEvent read FKeyChangeEvent write FKeyChangeEvent;
|
||||
property OnKeyChangeQuery: TCryptKeyChangeQueryEvent read FKeyChangeQueryEvent write FKeyChangeQueryEvent;
|
||||
end;
|
||||
|
||||
{ Spezifische Kryptologie-Verfahren }
|
||||
|
||||
TXorCrypt = class(TCrypt)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
procedure SetKeyInteger(Value: Integer);
|
||||
public
|
||||
{ Public-Deklarationen }
|
||||
procedure Decrypt;
|
||||
procedure Encrypt;
|
||||
{ Eigenschaften }
|
||||
property KeyInteger;
|
||||
end;
|
||||
|
||||
TVigenereCrypt = class(TCrypt)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
procedure SetKeyString(Value: String);
|
||||
public
|
||||
{ Public-Deklarationen }
|
||||
procedure Decrypt;
|
||||
procedure Encrypt;
|
||||
{ Eigenschaften }
|
||||
property KeyChar;
|
||||
end;
|
||||
|
||||
TCaesarCrypt = class(TCrypt)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
procedure SetKeyChar(Value: Char);
|
||||
public
|
||||
{ Public-Deklarationen }
|
||||
procedure Decrypt;
|
||||
procedure Encrypt;
|
||||
{ Eigenschaften }
|
||||
property KeyString;
|
||||
end;
|
||||
|
||||
//TDynaCrypt = class(TCrypt)
|
||||
//public
|
||||
{ Public-Deklarationen }
|
||||
//procedure Decrypt;
|
||||
//procedure Encrypt;
|
||||
{ Eigenschaften }
|
||||
//property KeyChar;
|
||||
//end;
|
||||
|
||||
implementation
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TCrypt
|
||||
---------------------------------------------------------------------------- }
|
||||
|
||||
constructor TCrypt.Create;
|
||||
begin
|
||||
FLines := TStringList.Create;
|
||||
end;
|
||||
|
||||
destructor TCrypt.Destroy;
|
||||
begin
|
||||
FLines.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TCrypt.SetKeyString(Value: String);
|
||||
var
|
||||
CanChange: Boolean;
|
||||
begin
|
||||
CanChange := True;
|
||||
if Assigned(OnKeyChange) then
|
||||
begin
|
||||
OnKeyChangeQuery(Self,CanChange);
|
||||
end;
|
||||
if CanChange = True then
|
||||
begin
|
||||
FKeyString := Value;
|
||||
if Assigned(OnKeyChange) then
|
||||
begin
|
||||
OnKeyChange(Self);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCrypt.SetKeyChar(Value: Char);
|
||||
var
|
||||
CanChange: Boolean;
|
||||
begin
|
||||
CanChange := True;
|
||||
if Assigned(OnKeyChange) then
|
||||
begin
|
||||
OnKeyChangeQuery(Self,CanChange);
|
||||
end;
|
||||
if CanChange = True then
|
||||
begin
|
||||
FKeyChar := Value;
|
||||
if Assigned(OnKeyChange) then
|
||||
begin
|
||||
OnKeyChange(Self);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCrypt.SetKeyInteger(Value: Integer);
|
||||
var
|
||||
CanChange: Boolean;
|
||||
begin
|
||||
CanChange := True;
|
||||
if Assigned(OnKeyChange) then
|
||||
begin
|
||||
OnKeyChangeQuery(Self,CanChange);
|
||||
end;
|
||||
if CanChange = True then
|
||||
begin
|
||||
FKeyInteger := Value;
|
||||
if Assigned(OnKeyChange) then
|
||||
begin
|
||||
OnKeyChange(Self);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCrypt.Decrypt;
|
||||
begin
|
||||
//...
|
||||
if Assigned(OnWork) = True then
|
||||
begin
|
||||
OnWork(Self,cmDecrypt);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCrypt.Encrypt;
|
||||
begin
|
||||
//...
|
||||
if Assigned(OnWork) = True then
|
||||
begin
|
||||
OnWork(Self,cmEncrypt);
|
||||
end;
|
||||
end;
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TXorCrypt
|
||||
---------------------------------------------------------------------------- }
|
||||
|
||||
procedure TXorCrypt.SetKeyInteger(Value: Integer);
|
||||
begin
|
||||
if not (KeyInteger in [0..31]) then
|
||||
begin
|
||||
raise EInvalidKey.Create('Invalid key value');
|
||||
end;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TXorCrypt.Decrypt;
|
||||
begin
|
||||
{ Bei Xor entspricht der Entschlüsselungs-Algorithmus dem der
|
||||
Verschlüsselung. Deshalb genügt hier ein Verweis auf "TXorCrypt.Encrypt". }
|
||||
Encrypt;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TXorCrypt.Encrypt;
|
||||
var
|
||||
Encrypted: TStrings;
|
||||
LineIndex: Integer;
|
||||
CharIndex: Integer;
|
||||
Line: String;
|
||||
begin
|
||||
Encrypted := TStringList.Create;
|
||||
try
|
||||
Encrypted.Assign(Lines);
|
||||
for LineIndex := 0 to Encrypted.Count do
|
||||
begin
|
||||
Line := Encrypted.Strings[LineIndex];
|
||||
for CharIndex := 1 to Length(Line) do
|
||||
begin
|
||||
if Line[CharIndex] > #31 then
|
||||
begin
|
||||
Line[CharIndex] := Chr(Ord(Line[CharIndex]) xor KeyInteger);
|
||||
end;
|
||||
end;
|
||||
Encrypted.Strings[LineIndex] := Line;
|
||||
end;
|
||||
Lines.Assign(Encrypted);
|
||||
finally
|
||||
Encrypted.Free;
|
||||
end;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TVigenereCrypt
|
||||
---------------------------------------------------------------------------- }
|
||||
|
||||
procedure TVigenereCrypt.SetKeyString(Value: String);
|
||||
var
|
||||
Index: Integer;
|
||||
begin
|
||||
Value := UpperCase(Value);
|
||||
for Index := 1 to Length(Value) do
|
||||
begin
|
||||
if not (Value[Index] in ['A'..'Z']) then
|
||||
begin
|
||||
raise EInvalidKey.Create('Invalid key value');
|
||||
end;
|
||||
end;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TVigenereCrypt.Decrypt;
|
||||
var
|
||||
Encrypted: TStrings;
|
||||
LineIndex: Integer;
|
||||
CharIndex: Integer;
|
||||
Line: String;
|
||||
KeyIndex: Integer;
|
||||
CurKeyLetter: Integer;
|
||||
CurLetter: Integer;
|
||||
begin
|
||||
Encrypted := TStringList.Create;
|
||||
try
|
||||
Encrypted.Assign(Lines);
|
||||
for LineIndex := 0 to Encrypted.Count do
|
||||
begin
|
||||
Line := Encrypted.Strings[LineIndex];
|
||||
for CharIndex := 1 to Length(Line) do
|
||||
begin
|
||||
if Line[CharIndex] in ['A'..'Z'] then
|
||||
begin
|
||||
CurKeyLetter := Ord(KeyString[1 + (KeyIndex mod Length(KeyString))]) - Ord('A');
|
||||
CurLetter := Ord(Line[CharIndex]) - Ord('A');
|
||||
Line[CharIndex] := Chr(Ord('A') + ((26 + CurLetter - CurKeyLetter) mod 26));
|
||||
Inc(KeyIndex);
|
||||
end
|
||||
end;
|
||||
Encrypted.Strings[LineIndex] := Line;
|
||||
end;
|
||||
Lines.Assign(Encrypted);
|
||||
finally
|
||||
Encrypted.Free;
|
||||
end;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TVigenereCrypt.Encrypt;
|
||||
var
|
||||
Encrypted: TStrings;
|
||||
LineIndex: Integer;
|
||||
CharIndex: Integer;
|
||||
Line: String;
|
||||
KeyIndex: Integer;
|
||||
CurKeyLetter: Integer;
|
||||
CurLetter: Integer;
|
||||
begin
|
||||
Encrypted := TStringList.Create;
|
||||
try
|
||||
Encrypted.Assign(Lines);
|
||||
for LineIndex := 0 to Encrypted.Count do
|
||||
begin
|
||||
Line := Encrypted.Strings[LineIndex];
|
||||
for CharIndex := 1 to Length(Line) do
|
||||
begin
|
||||
if Line[CharIndex] in ['A'..'Z'] then
|
||||
begin
|
||||
CurKeyLetter := Ord(KeyString[1 + (KeyIndex mod Length(KeyString))]) - Ord('A');
|
||||
CurLetter := Ord(Line[CharIndex]) - Ord('A');
|
||||
Line[CharIndex] := Chr(Ord('A') + ((CurLetter + CurKeyLetter) mod 26));
|
||||
Inc(KeyIndex);
|
||||
end
|
||||
end;
|
||||
Encrypted.Strings[LineIndex] := Line;
|
||||
end;
|
||||
Lines.Assign(Encrypted);
|
||||
finally
|
||||
Encrypted.Free;
|
||||
end;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TCaesarCrypt
|
||||
---------------------------------------------------------------------------- }
|
||||
|
||||
procedure TCaesarCrypt.SetKeyChar(Value: Char);
|
||||
begin
|
||||
Value := CharUpperCase(Value);
|
||||
if not (Value in ['A'..'Z']) then
|
||||
begin
|
||||
raise EInvalidKey.Create('Invalid key value');
|
||||
end;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TCaesarCrypt.Decrypt;
|
||||
begin
|
||||
//...
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TCaesarCrypt.Encrypt;
|
||||
begin
|
||||
//...
|
||||
inherited;
|
||||
end;
|
||||
|
||||
end.
|
@ -3,14 +3,10 @@ unit uFileCtrls;
|
||||
//////////////////////////////////////
|
||||
/// Lina File Controls Unit ///
|
||||
/// **************************** ///
|
||||
/// (c) 2014 Dennis Göhlert a.o. ///
|
||||
/// (c) 2015 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$IFNDEF MSWINDOWS}
|
||||
{$IFDEF WARN_INCOMPATIBLEOS}
|
||||
{$MESSAGE ERROR 'The "uFileCtrls" unit is only available under MS-Windows OS'}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
{$I 'Config.inc'}
|
||||
|
||||
interface
|
||||
|
||||
@ -18,7 +14,7 @@ uses
|
||||
{ Standard-Units }
|
||||
SysUtils, Classes, Windows, Registry,
|
||||
{ Andere Package-Units }
|
||||
uBase;
|
||||
uBase, uSysTools;
|
||||
|
||||
type
|
||||
{ Fehlermeldungen }
|
||||
@ -57,6 +53,9 @@ type
|
||||
|
||||
TContextMenuItems = class(TCollection);
|
||||
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TContextMenu = class(TComponent)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
@ -98,25 +97,25 @@ type
|
||||
property OnCreateEntry: TContextMenuCreateEntryEvent read FCreateEntryEvent write FCreateEntryEvent;
|
||||
end;
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
{$ENDIF}
|
||||
|
||||
function ExtStrToRegKey(ExtStr: String): String;
|
||||
|
||||
const
|
||||
{ Meta-Daten }
|
||||
ContextMenuComponent_Version = '1.0';
|
||||
ContextMenuComponent_Copyright = 'Copyright © 2015';
|
||||
ContextMenuComponent_Author = 'Dennis Göhlert a.o.';
|
||||
{ Sonstige }
|
||||
ContextRegPathShell = '\shell';
|
||||
ContextRegPathCommand = '\command';
|
||||
|
||||
implementation
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents(ComponentsPage,[TContextMenu]);
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
function ExtStrToRegKey(ExtStr: String): String;
|
||||
begin
|
||||
@ -181,7 +180,7 @@ end;
|
||||
constructor TContextMenu.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
FAbout := TComponentAbout.Create(TContextMenu,ContextMenuComponent_Version,ContextMenuComponent_Copyright,ContextMenuComponent_Author);
|
||||
FAbout := TComponentAbout.Create(TContextMenu);
|
||||
FItems := TContextMenuItems.Create(TContextMenuItem);
|
||||
FExt := '*';
|
||||
FAutoLoad := False;
|
||||
@ -208,7 +207,7 @@ begin
|
||||
begin
|
||||
for Index := 1 to Length(Value) do
|
||||
begin
|
||||
if not (Value[Index] in ['0'..'9','A'..'Z','a'..'z']) then
|
||||
if not (Value[Index] in Numbers + Letters) then
|
||||
begin
|
||||
raise EInvalidExt.Create('Invalid file extension value');
|
||||
end;
|
||||
@ -246,7 +245,7 @@ begin
|
||||
begin
|
||||
for Index := 1 to Length(Value) do
|
||||
begin
|
||||
if not (Value[Index] in ['0'..'9','A'..'Z','a'..'z']) then
|
||||
if not (Value[Index] in Numbers + Letters) then
|
||||
begin
|
||||
raise EInvalidAlias.Create('Invalid extension alias value');
|
||||
end;
|
||||
|
@ -3,14 +3,10 @@ unit uFileTools;
|
||||
//////////////////////////////////////
|
||||
/// Lina File Tools Unit ///
|
||||
/// **************************** ///
|
||||
/// (c) 2014 Dennis Göhlert a.o. ///
|
||||
/// (c) 2015 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$IFNDEF MSWINDOWS}
|
||||
{$IFDEF WARN_INCOMPATIBLEOS}
|
||||
{$MESSAGE ERROR 'The "uFileTools" unit is only available under MS-Windows OS'}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
{$I 'Config.inc'}
|
||||
|
||||
interface
|
||||
|
||||
@ -166,14 +162,15 @@ const
|
||||
B_TO_TB = -4;
|
||||
{ Dateierweiterungen für ListFiles() }
|
||||
FXT_ANY = '*.*';
|
||||
FXT_EXE = '*.exe';
|
||||
FXT_TXT = '*.txt';
|
||||
{ Vielleicht später mal implementieren...
|
||||
FXT_IMG = ('*.jpg','*.jpeg','*.png','*.tif','*.tiff','*.bmp','*.gif');
|
||||
FXT_PAS = ('*.pas','*.dpr','*.dpk','*.dfm');
|
||||
FXT_MSO = ('*.doc','*.xls','*.ppt');
|
||||
FXT_MSI = ('*.msi');
|
||||
FXT_IMG = ('*.img','*.iso'); }
|
||||
FXT_EXEC: array [0..2] of String = ('*.exe','*.com','*.scr');
|
||||
FXT_TEXT: array [0..1] of String = ('*.txt','*.rtf');
|
||||
FXT_IMAGE: array [0..6] of String = ('*.jpg','*.jpeg','*.png','*.tif','*.tiff','*.bmp','*.gif');
|
||||
FXT_SOURCE: array [0..3] of String = ('*.pas','*.dpr','*.dpk','*.dfm');
|
||||
FXT_OFFICE: array [0..2] of String = ('*.doc','*.xls','*.ppt');
|
||||
FXT_OFFICEX: array [0..2] of String = ('*.docx','*.xlsx','*.pptx');
|
||||
FXT_INSTALL: array [0..1] of String = ('*.msi','*.msu');
|
||||
FXT_DISK: array [0..2] of String = ('*.img','*.iso','*.bin');
|
||||
FXT_ARCHIVE: array [0..4] of String = ('*.zip','*.rar','*.7z','*.tar','*.gz');
|
||||
|
||||
var
|
||||
InvalidFileNames: TInvalidFileNames;
|
||||
|
@ -3,14 +3,10 @@ unit uFrmCtrls;
|
||||
//////////////////////////////////////
|
||||
/// Lina Form Controls Unit ///
|
||||
/// **************************** ///
|
||||
/// (c) 2014 Dennis Göhlert a.o. ///
|
||||
/// (c) 2015 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$IFNDEF MSWINDOWS}
|
||||
{$IFDEF WARN_INCOMPATIBLEOS}
|
||||
{$MESSAGE ERROR 'The "uFrmCtrls" unit is only available under MS-Windows OS'}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
{$I 'Config.inc'}
|
||||
|
||||
interface
|
||||
|
||||
@ -223,6 +219,9 @@ type
|
||||
property Interval: Cardinal read GetInterval write SetInterval default 1000;
|
||||
end;
|
||||
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TSplashScreen = class(TComponent)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
@ -292,7 +291,6 @@ type
|
||||
end;
|
||||
|
||||
{ T...Manager }
|
||||
|
||||
TComponentManager = class(TComponent)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
@ -312,6 +310,9 @@ type
|
||||
property About: TComponentAbout read FAbout;
|
||||
end;
|
||||
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TProgressBarManager = class(TComponentManager)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
@ -337,6 +338,9 @@ type
|
||||
property Mode: TProgressBarManagerMode read FMode write SetMode default pmmNone;
|
||||
end;
|
||||
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TListBoxManager = class(TComponentManager)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
@ -418,6 +422,9 @@ type
|
||||
|
||||
TParamReferences = class(TCollection);
|
||||
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TParamDefiner = class(TComponent)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
@ -452,32 +459,18 @@ type
|
||||
procedure SetTaskBarVisibe(const Value: Boolean);
|
||||
procedure ListParams(var OutList: TStrings);
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
|
||||
const
|
||||
{ Meta-Daten }
|
||||
SplashScreenComponent_Version = '1.0';
|
||||
SplashScreenComponent_Copyright = 'Copyright © 2015';
|
||||
SplashScreenComponent_Author = 'Dennis Göhlert a.o.';
|
||||
|
||||
ProgressBarManagerComponent_Version = '1.0';
|
||||
ProgressBarManagerComponent_Copyright = 'Copyright © 2015';
|
||||
ProgressBarManagerComponent_Author = 'Dennis Göhlert a.o.';
|
||||
|
||||
ListBoxManagerComponent_Version = '1.0';
|
||||
ListBoxManagerComponent_Copyright = 'Copyright © 2015';
|
||||
ListBoxManagerComponent_Author = 'Dennis Göhlert a.o.';
|
||||
|
||||
ParamDefinerComponent_Version = '1.0';
|
||||
ParamDefinerComponent_Copyright = 'Copyright © 2015';
|
||||
ParamDefinerComponent_Author = 'Dennis Göhlert a.o.';
|
||||
{$ENDIF}
|
||||
|
||||
implementation
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents(ComponentsPage,[TSplashScreen,TProgressBarManager,TListBoxManager,TParamDefiner]);
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
procedure ShowMessageVal(const Msg: Integer);
|
||||
begin
|
||||
@ -1043,7 +1036,7 @@ begin
|
||||
FAnimationSpeed := 10;
|
||||
FVisible := False;
|
||||
|
||||
FAbout := TComponentAbout.Create(TSplashScreen,SplashScreenComponent_Version,SplashScreenComponent_Copyright,SplashScreenComponent_Author);
|
||||
FAbout := TComponentAbout.Create(TSplashScreen);
|
||||
FSplashForm := TSplashForm.Create;
|
||||
FSplashForm.FormObject.OnShow := FormObjectShow;
|
||||
FSplashForm.FormObject.OnHide := FormObjectHide;
|
||||
@ -1396,7 +1389,7 @@ end;
|
||||
constructor TProgressBarManager.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
FAbout := TComponentAbout.Create(TProgressBarManager,ProgressBarManagerComponent_Version,ProgressBarManagerComponent_Copyright,ProgressBarManagerComponent_Author);
|
||||
FAbout := TComponentAbout.Create(TProgressBarManager);
|
||||
FMode := pmmNone;
|
||||
|
||||
Update;
|
||||
@ -1470,7 +1463,7 @@ end;
|
||||
constructor TListBoxManager.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
FAbout := TComponentAbout.Create(TListBoxManager,ListBoxManagerComponent_Version,ListBoxManagerComponent_Copyright,ListBoxManagerComponent_Author);
|
||||
FAbout := TComponentAbout.Create(TListBoxManager);
|
||||
FMode := lmmNone;
|
||||
FFilterOptions := [sfoCaseSensitive,sfoForceTrim,sfoDefaultVisible];
|
||||
FilteredList := TFilteredStringList.Create;
|
||||
@ -1805,7 +1798,7 @@ end;
|
||||
constructor TParamDefiner.Create;
|
||||
begin
|
||||
inherited;
|
||||
FAbout := TComponentAbout.Create(TParamDefiner,ParamDefinerComponent_Version,ParamDefinerComponent_Copyright,ParamDefinerComponent_Author);
|
||||
FAbout := TComponentAbout.Create(TParamDefiner);
|
||||
FReferences := TParamReferences.Create(TParamReference);
|
||||
end;
|
||||
|
||||
|
@ -3,13 +3,15 @@ unit uInit;
|
||||
//////////////////////////////////////
|
||||
/// Lina Initialization Unit ///
|
||||
/// **************************** ///
|
||||
/// (c) 2014 Dennis Göhlert a.o. ///
|
||||
/// (c) 2015 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$I 'Config.inc'}
|
||||
|
||||
interface
|
||||
|
||||
{ Dies ist die Initialisierungs-Unit für das Lina Components Package.
|
||||
Diese Unit darf NIEMALS direkt in eine Laufzeit-Library eingebunden
|
||||
Diese Unit darf NIEMALS direkt in eine Laufzeit-Bibliothek eingebunden
|
||||
werden! }
|
||||
|
||||
uses
|
||||
@ -39,7 +41,7 @@ begin
|
||||
SplashBitmap := TBitmap.Create;
|
||||
try
|
||||
SplashBitmap.LoadFromResourceName(HInstance,'LINA');
|
||||
(ToolsAPI.SplashScreenServices as IOTASplashScreenServices).AddPluginBitmap(
|
||||
(SplashScreenServices as IOTASplashScreenServices).AddPluginBitmap(
|
||||
Package_Name,SplashBitmap.Handle,False,Package_License,Package_SKU);
|
||||
finally
|
||||
SplashBitmap.Free;
|
||||
@ -51,7 +53,7 @@ begin
|
||||
AboutBitmap := TBitmap.Create;
|
||||
try
|
||||
AboutBitmap.LoadFromResourceName(HInstance,'LINA');
|
||||
PluginIndex := (ToolsAPI.BorlandIDEServices as IOTAAboutBoxServices120).AddPluginInfo(
|
||||
PluginIndex := (BorlandIDEServices as IOTAAboutBoxServices120).AddPluginInfo(
|
||||
Package_Name,Package_Description,AboutBitmap.Handle,False,Package_License,Package_SKU);
|
||||
except
|
||||
AboutBitmap.Free;
|
||||
@ -68,59 +70,6 @@ begin
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$IF Defined(CompilerVersion) = True}
|
||||
{$IF CompilerVersion < 15.0}
|
||||
{ Frühere Delphi-Versionen als Delphi 7 werden nicht (offiziell)
|
||||
unterstützt. }
|
||||
{$MESSAGE ERROR 'Lina Components requires Delphi 7 or higher'}
|
||||
{$IFEND}
|
||||
{$IF CompilerVersion < 17.0}
|
||||
{ Unter früheren Delphi-Versionen als 2005 gab es noch nicht dieMöglichkeit,
|
||||
Records mit methoden zu versehen. Die Implementierung von Prozeduren und/
|
||||
oder Funktionen war Klassen vorenthalten. }
|
||||
{$DEFINE NO_RECORDMETHODS}
|
||||
{$IFEND}
|
||||
{$IF CompilerVersion < 18.5}
|
||||
{ Unter früheren Delphi-Versionen als 2007 gab es (offiziell) noch keine
|
||||
Unterstützung für Windows-Vista-spezifische funktionen wie die TaskDialog-
|
||||
Komponente oder einige Funktionen.
|
||||
Damit dies nicht zu Problemen führt, geht der Compiler darauf mithilfe
|
||||
dieser Direktive ein. }
|
||||
{$DEFINE NO_VISTA}
|
||||
{$IFEND}
|
||||
{$IF CompilerVersion < 21.0}
|
||||
{ Unter früheren Delphi-Versionen als 2010 gab es ein Problem mit dem
|
||||
"crHandPoint" cursor, sodass dieser nicht korrekt unter Windows Vista oder
|
||||
höher dargestellt wurde, sondern stattdessen im alten Windows-Look.
|
||||
Bei älteren Delphi-Versionen als 2010 steht deswegen eine Pseudo-
|
||||
Komponente zur Behebung dieses Problems zur Verfügung. }
|
||||
{$DEFINE NO_HANDPOINT}
|
||||
{$IFEND}
|
||||
{$IF CompilerVersion < 20.0}
|
||||
{ Unter früheren Delphi-Versionen als 2009 war die Nutzung generischer
|
||||
Datentypen (Generics) nicht möglich. Da es ohne diese nahezu unmöglich
|
||||
scheint, typisierte Objekte, wie zum Beispiel typisierte TObjectList's
|
||||
zu deklarieren, fallen diese Deklarationen unter früheren Delphi-Versionen
|
||||
weg. Dies kann eventuell zu kompatibilitätsproblemen zwischen
|
||||
unterschiedlichen Nutzern dieser Komponenten führen, lässt sich aber nicht
|
||||
vermeiden. }
|
||||
{$DEFINE NO_GENERIC}
|
||||
{$IFEND}
|
||||
{$IF CompilerVersion < 20.0}
|
||||
{ Unter früheren Delphi-Versionen als 2009 entsprach der String-Typenalias
|
||||
dem AnsiString-Typen. Da es gegebenfalls bei manchen externen (zB. OS-
|
||||
Spezifischen) Klassen zu Kompatibilitätsproblemen kommmen könnte, wird
|
||||
hier eine Überprüfung der Unicode-Unterstützung durchgeführt.
|
||||
Zu beachten ist jedoch, dass Delphi 2009 und höher AnsiStrings implizit
|
||||
in UnicodeStrings umwandelt und umgekehrt (sofern möglich). }
|
||||
{$DEFINE NO_UNICODE}
|
||||
{$IFEND}
|
||||
{$IFEND}
|
||||
{ Globale Einstellungen }
|
||||
{$DEFINE ADD_SPLASHENTRY}
|
||||
{$DEFINE ADD_ABOUTENTRY}
|
||||
{$DEFINE WARN_INCOMPATIBLEOS}
|
||||
|
||||
{ Package-Registrierung }
|
||||
{$IFDEF ADD_SPLASHENTRY}
|
||||
RegisterPackageOnSplash;
|
||||
@ -129,6 +78,7 @@ initialization
|
||||
RegisterPackageOnAbout;
|
||||
{$ENDIF}
|
||||
|
||||
|
||||
finalization
|
||||
{ Package-Deregistrierung }
|
||||
{$IFDEF ADD_ABOUTENTRY}
|
||||
|
@ -3,22 +3,18 @@ unit uLocalMgr;
|
||||
//////////////////////////////////////
|
||||
/// Lina Localize Manager Unit ///
|
||||
/// **************************** ///
|
||||
/// (c) 2014 Dennis Göhlert a.o. ///
|
||||
/// (c) 2015 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$IFNDEF MSWINDOWS}
|
||||
{$IFDEF WARN_INCOMPATIBLEOS}
|
||||
{$MESSAGE ERROR 'The "uLocalMgr" unit is only available under MS-Windows OS'}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
{$I 'Config.inc'}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
{ Standard-Units }
|
||||
SysUtils, Classes, Controls, Forms, TypInfo,
|
||||
SysUtils, Classes, Controls, Forms, TypInfo, IniFiles,
|
||||
{ Andere Package-Units }
|
||||
uBase, uSysTools;
|
||||
uBase, uSysTools, uFileTools;
|
||||
|
||||
type
|
||||
{ Fehlermeldungen }
|
||||
@ -52,6 +48,7 @@ type
|
||||
FIndent: String;
|
||||
FAddress: String;
|
||||
FCharacter: String;
|
||||
FSpecial: String;
|
||||
{ Methoden }
|
||||
procedure SetComment(Value: String);
|
||||
procedure SetSeparator(Value: String);
|
||||
@ -59,6 +56,7 @@ type
|
||||
procedure SetIndent(Value: String);
|
||||
procedure SetAddress(Value: String);
|
||||
procedure SetCharacter(Value: String);
|
||||
procedure SetSpecial(Value: String);
|
||||
public
|
||||
{ Public-Deklarationen }
|
||||
constructor Create;
|
||||
@ -72,6 +70,30 @@ type
|
||||
property Indent: String read FIndent write SetIndent;
|
||||
property Address: String read FAddress write SetAddress;
|
||||
property Character: String read FCharacter write SetCharacter;
|
||||
property Special: String read FSpecial write SetSpecial;
|
||||
end;
|
||||
|
||||
TLocalizationData = class;
|
||||
|
||||
TLocalization = class;
|
||||
|
||||
TLocalizationImporter = class
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
FLocalization: TLocalization;
|
||||
FClearBeforeImport: Boolean;
|
||||
{ Methoden }
|
||||
procedure PrepareImport;
|
||||
{ Eigenschaften }
|
||||
property Localization: TLocalization read FLocalization;
|
||||
public
|
||||
{ Public-Deklarationen }
|
||||
constructor Create(ALocalization: TLocalization);
|
||||
destructor Destroy; override;
|
||||
procedure ImportFromData(Data: TLocalizationData);
|
||||
procedure ImportFromINI(INI: TIniFile);
|
||||
{ Eigenschaften }
|
||||
property ClearBeforeImport: Boolean read FClearBeforeImport write FClearBeforeImport default True;
|
||||
end;
|
||||
|
||||
TLocalization = class(TCollectionItem)
|
||||
@ -82,10 +104,12 @@ type
|
||||
FTag: TLanguageTag;
|
||||
FFormat: TLocalizationFormat;
|
||||
FEncoding: TCharEncoding;
|
||||
FConverter: TLocalizationImporter;
|
||||
{ Methoden }
|
||||
function GetDisplayName: String; override;
|
||||
function GetLines: TStrings;
|
||||
procedure SetLines(Value: TStrings);
|
||||
procedure SetName(Value: ShortString);
|
||||
procedure SetTag(Value: TLanguageTag);
|
||||
function GetFormat: TLocalizationFormat;
|
||||
procedure SetFormat(Value: TLocalizationFormat);
|
||||
@ -107,11 +131,12 @@ type
|
||||
published
|
||||
{ Published-Deklarationen }
|
||||
{ Eigenschaften }
|
||||
property Name: ShortString read FName write FName;
|
||||
property Name: ShortString read FName write SetName;
|
||||
property Tag: TLanguageTag read FTag write SetTag;
|
||||
property Lines: TStrings read GetLines write SetLines;
|
||||
property Format: TLocalizationFormat read GetFormat write SetFormat;
|
||||
property Encoding: TCharEncoding read FEncoding write SetEncoding default {$IFDEF NO_UNICODE} ceUTF8 {$ELSE} ceUnicode {$ENDIF};
|
||||
property Converter: TLocalizationImporter read FConverter write FConverter;
|
||||
end;
|
||||
|
||||
TLocalizationManager = class;
|
||||
@ -125,6 +150,27 @@ type
|
||||
constructor Create(ItemClass: TCollectionItemClass; AManager: TLocalizationManager);
|
||||
destructor Destroy; override;
|
||||
function IndexOfTag(const Tag: TLanguageTag): Integer;
|
||||
procedure LoadFromFile(const FileName: String);
|
||||
procedure SaveToFile(const FileName: String);
|
||||
procedure LoadFromDirectory(const Dir: String; FileExts: array of String; RecMode: Boolean = True);
|
||||
end;
|
||||
|
||||
TLocalizationExporter = class
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
FData: TLocalizationData;
|
||||
FClearBeforeExport: Boolean;
|
||||
{ Eigenschaften }
|
||||
property Data: TLocalizationData read FData;
|
||||
public
|
||||
{ Public-Deklarationen }
|
||||
constructor Create(AData: TLocalizationData);
|
||||
destructor Destroy; override;
|
||||
procedure ExportToINI(var INI: TIniFile);
|
||||
published
|
||||
{ Published-Deklarationen }
|
||||
{ Eigenschaften }
|
||||
property ClearBeforeExport: Boolean read FClearBeforeExport write FClearBeforeExport default True;
|
||||
end;
|
||||
|
||||
TLocalizationData = class
|
||||
@ -134,6 +180,7 @@ type
|
||||
Indents: array of TStringReferenceDataArray;
|
||||
Values: TStringArray;
|
||||
FManager: TLocalizationManager;
|
||||
FExporter: TLocalizationExporter;
|
||||
protected
|
||||
{ Protected-Deklarationen }
|
||||
procedure AddSection(Section: String);
|
||||
@ -156,6 +203,7 @@ type
|
||||
procedure WriteInteger(const Section,Indent: String; Value: Integer);
|
||||
procedure WriteFloat(const Section,Indent: String; Value: Extended);
|
||||
procedure Address(const Section,Indent,Target: String);
|
||||
property Exporter: TLocalizationExporter read FExporter write FExporter;
|
||||
end;
|
||||
|
||||
TLocalizationReferences = class(TCollection)
|
||||
@ -178,6 +226,7 @@ type
|
||||
FReference: PString;
|
||||
FField: String;
|
||||
{ Methoden }
|
||||
function GetDisplayName: String; override;
|
||||
procedure SetIndent(Value: String);
|
||||
procedure Apply;
|
||||
public
|
||||
@ -217,6 +266,9 @@ type
|
||||
property ApplyMode: TLocalizationApplyMode read FApplyMode write SetApplyMode default laCustom;
|
||||
end;
|
||||
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TLocalizationManager = class(TComponent)
|
||||
private
|
||||
{ Ereignisse}
|
||||
@ -257,20 +309,18 @@ type
|
||||
property Applier: TLocalizationApplier read FApplier write FApplier;
|
||||
end;
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
|
||||
const
|
||||
{ Meta-Daten }
|
||||
LocalizationManagerComponent_Version = '1.0';
|
||||
LocalizationManagerComponent_Copyright = 'Copyright © 2015';
|
||||
LocalizationManagerComponent_Author = 'Dennis Göhlert a.o.';
|
||||
{$ENDIF}
|
||||
|
||||
implementation
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents(ComponentsPage,[TLocalizationManager]);
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TLocalizationFormat
|
||||
@ -285,6 +335,7 @@ begin
|
||||
FHeader := '*';
|
||||
FAddress := '@';
|
||||
FCharacter := '$#';
|
||||
FSpecial := '!';
|
||||
end;
|
||||
|
||||
destructor TLocalizationFormat.Destroy;
|
||||
@ -297,7 +348,7 @@ procedure TLocalizationFormat.SetComment(Value: String);
|
||||
var
|
||||
Index: Integer;
|
||||
begin
|
||||
if (ArrayPos(Value,[FSeparator,FHeader,FIndent,FAddress,FCharacter]) <> -1) or (Length(Value) = 0) then
|
||||
if (ArrayPos(Value,[FSeparator,FHeader,FIndent,FAddress,FCharacter,FSpecial]) <> -1) or (Length(Value) = 0) then
|
||||
begin
|
||||
raise EInvalidFormat.Create('Invalid localization format for property: "Comment"');
|
||||
end;
|
||||
@ -315,7 +366,7 @@ procedure TLocalizationFormat.SetSeparator(Value: String);
|
||||
var
|
||||
Index: Integer;
|
||||
begin
|
||||
if (ArrayPos(Value,[FComment,FHeader,FIndent,FAddress,FCharacter]) <> -1) or (Length(Value) = 0) then
|
||||
if (ArrayPos(Value,[FComment,FHeader,FIndent,FAddress,FCharacter,FSpecial]) <> -1) or (Length(Value) = 0) then
|
||||
begin
|
||||
raise EInvalidFormat.Create('Invalid localization format for property: "Separator"');
|
||||
end;
|
||||
@ -333,7 +384,7 @@ procedure TLocalizationFormat.SetHeader(Value: String);
|
||||
var
|
||||
Index: Integer;
|
||||
begin
|
||||
if ArrayPos(Value,[FComment,FSeparator,FIndent,FAddress,FCharacter]) <> -1 then
|
||||
if ArrayPos(Value,[FComment,FSeparator,FIndent,FAddress,FCharacter,FSpecial]) <> -1 then
|
||||
begin
|
||||
raise EInvalidFormat.Create('Invalid localization format for property: "Header"');
|
||||
end;
|
||||
@ -351,7 +402,7 @@ procedure TLocalizationFormat.SetIndent(Value: String);
|
||||
var
|
||||
Index: Integer;
|
||||
begin
|
||||
if ArrayPos(Value,[FComment,FSeparator,FHeader,FAddress,FCharacter]) <> -1 then
|
||||
if ArrayPos(Value,[FComment,FSeparator,FHeader,FAddress,FCharacter,FSpecial]) <> -1 then
|
||||
begin
|
||||
raise EInvalidFormat.Create('Invalid localization format for property: "Indent"');
|
||||
end;
|
||||
@ -369,7 +420,7 @@ procedure TLocalizationFormat.SetAddress(Value: String);
|
||||
var
|
||||
Index: Integer;
|
||||
begin
|
||||
if (ArrayPos(Value,[FComment,FSeparator,FHeader,FIndent,FCharacter]) <> -1) or (Length(Value) = 0) then
|
||||
if (ArrayPos(Value,[FComment,FSeparator,FHeader,FIndent,FCharacter,FSpecial]) <> -1) or (Length(Value) = 0) then
|
||||
begin
|
||||
raise EInvalidFormat.Create('Invalid localization format for property: "Address"');
|
||||
end;
|
||||
@ -387,7 +438,7 @@ procedure TLocalizationFormat.SetCharacter(Value: String);
|
||||
var
|
||||
Index: Integer;
|
||||
begin
|
||||
if (ArrayPos(Value,[FComment,FSeparator,FHeader,FIndent,FAddress]) <> -1) or (Length(Value) = 0) then
|
||||
if (ArrayPos(Value,[FComment,FSeparator,FHeader,FIndent,FAddress,FSpecial]) <> -1) or (Length(Value) = 0) then
|
||||
begin
|
||||
raise EInvalidFormat.Create('Invalid localization format for property: "Character"');
|
||||
end;
|
||||
@ -401,6 +452,109 @@ begin
|
||||
FCharacter := Value;
|
||||
end;
|
||||
|
||||
procedure TLocalizationFormat.SetSpecial(Value: String);
|
||||
var
|
||||
Index: Integer;
|
||||
begin
|
||||
if ArrayPos(Value,[FComment,FSeparator,FHeader,FIndent,FAddress,FCharacter]) <> -1 then
|
||||
begin
|
||||
raise EInvalidFormat.Create('Invalid localization format for property: "Special"');
|
||||
end;
|
||||
for Index := 1 to Length(Value) do
|
||||
begin
|
||||
if Value[Index] in Spaces then
|
||||
begin
|
||||
raise EInvalidFormat.Create('Invalid localization format for property: "Special"');
|
||||
end;
|
||||
end;
|
||||
FSpecial := Value;
|
||||
end;
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TLocalizationImporter
|
||||
---------------------------------------------------------------------------- }
|
||||
|
||||
constructor TLocalizationImporter.Create(ALocalization: TLocalization);
|
||||
begin
|
||||
inherited Create;
|
||||
FLocalization := ALocalization;
|
||||
FClearBeforeImport := True;
|
||||
end;
|
||||
|
||||
destructor TLocalizationImporter.Destroy;
|
||||
begin
|
||||
//...
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TLocalizationImporter.PrepareImport;
|
||||
begin
|
||||
if ClearBeforeImport = True then
|
||||
begin
|
||||
Localization.Lines.Clear;
|
||||
end;
|
||||
Localization.Lines.Add(Localization.Format.Comment + ' ' + '+++ AUTO-GENERATED LOCALIZATION CONTENT +++');
|
||||
end;
|
||||
|
||||
procedure TLocalizationImporter.ImportFromData(Data: TLocalizationData);
|
||||
var
|
||||
Section: Integer;
|
||||
Indent: Integer;
|
||||
begin
|
||||
if Data = nil then
|
||||
begin
|
||||
Exit;
|
||||
end;
|
||||
PrepareImport;
|
||||
for Section := 0 to Length(Data.Sections) - 1 do
|
||||
begin
|
||||
if Data.Sections[Section].Value <> '' then
|
||||
begin
|
||||
Localization.Lines.Add(Localization.Format.Header + ' ' + Data.Sections[Section].Value);
|
||||
end;
|
||||
for Indent := 0 to Length(Data.Sections[Section].Reference^) - 1 do
|
||||
begin
|
||||
Localization.Lines.Add(Localization.Format.Indent + ' ' + Data.Sections[Section].Reference^[Indent].Value + ' ' + Localization.Format.Separator + ' ' + Data.Sections[Section].Reference^[Indent].Reference^);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TLocalizationImporter.ImportFromINI(INI: TIniFile);
|
||||
var
|
||||
Sections: TStrings;
|
||||
Section: Integer;
|
||||
Indents: TStrings;
|
||||
Indent: Integer;
|
||||
begin
|
||||
if INI = nil then
|
||||
begin
|
||||
Exit;
|
||||
end;
|
||||
PrepareImport;
|
||||
Sections := TStringList.Create;
|
||||
try
|
||||
INI.ReadSections(Sections);
|
||||
for Section := 0 to Sections.Count - 1 do
|
||||
begin
|
||||
if Sections.Strings[Section] <> '' then
|
||||
begin
|
||||
Localization.Lines.Add(Localization.Format.Header + ' ' + Sections[Section]);
|
||||
end;
|
||||
Indents := TStringList.Create;
|
||||
try
|
||||
for Indent := 0 to Indents.Count - 1 do
|
||||
begin
|
||||
Localization.Lines.Add(Localization.Format.Indent + ' ' + Indents.Strings[Indent] + ' ' + Localization.Format.Separator + ' ' + INI.ReadString(Sections.Strings[Section],Indents.Strings[Indent],''));
|
||||
end;
|
||||
finally
|
||||
Indents.Free;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
Sections.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TLocalization
|
||||
---------------------------------------------------------------------------- }
|
||||
@ -412,12 +566,14 @@ begin
|
||||
FFormat := TLocalizationFormat.Create;
|
||||
FTag := 'L' + IntToStrMinLength(ID,2);
|
||||
Encoding := {$IFDEF NO_UNICODE} ceUTF8 {$ELSE} ceUnicode {$ENDIF};
|
||||
FConverter := TLocalizationImporter.Create(Self);
|
||||
end;
|
||||
|
||||
constructor TLocalization.Create(Collection: TCollection; const AFileName: TFileName);
|
||||
begin
|
||||
Create(Collection);
|
||||
Lines.LoadFromFile(AFileName);
|
||||
FConverter.Free;
|
||||
end;
|
||||
|
||||
destructor TLocalization.Destroy;
|
||||
@ -449,6 +605,7 @@ end;
|
||||
|
||||
procedure TLocalization.SetTag(Value: TLanguageTag);
|
||||
begin
|
||||
Value := Trim(Value);
|
||||
if ((Collection as TLocalizations).IndexOfTag(Value) > -1) and
|
||||
((Collection as TLocalizations).IndexOfTag(Value) <> Index)then
|
||||
begin
|
||||
@ -459,6 +616,16 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TLocalization.SetName(Value: ShortString);
|
||||
begin
|
||||
Value := Trim(Value);
|
||||
if Value[1] in ['a'..'z'] then
|
||||
begin
|
||||
Value[1] := UpCase(Value[1]);
|
||||
end;
|
||||
FName := Value;
|
||||
end;
|
||||
|
||||
function TLocalization.GetFormat: TLocalizationFormat;
|
||||
begin
|
||||
Result := FFormat;
|
||||
@ -516,13 +683,24 @@ function TLocalization.Apply: Boolean;
|
||||
|
||||
Die Syntax entspricht den in der TLocalizationFormat-Klasse festgelegten
|
||||
Bausteinen und Einstellungen, die zur Laufzeit für jede Sprache Individuell
|
||||
festgelegt werden kann. }
|
||||
festgelegt werden kann.
|
||||
|
||||
Spezielle Direktiven:
|
||||
- "LOC <Name>": Namen der aktuellen Sprache ändern
|
||||
- "TAG <Tag>": Sprachkürzel der aktuellen Sprache ändern
|
||||
- "INC <Sprache>": Andere Sprache einbinden
|
||||
- "END": Kompilierung beenden
|
||||
- "APP <Anwendung>": Fortfahren, falls der Titel der Anwendung übereinstimmt
|
||||
- "NOT <Anwendung>": Beenden, falls der Titel der Anwendung übereinstimmt }
|
||||
const
|
||||
Specials: array [0..5] of String = ('loc','tag','inc','end','app','not');
|
||||
var
|
||||
Position: (posPrefix,posIndent,posSeparator,posValue);
|
||||
Line: Integer;
|
||||
Complete: Boolean;
|
||||
Finished: Boolean;
|
||||
Header: Boolean;
|
||||
Special: Boolean;
|
||||
Address: Boolean;
|
||||
Character: Boolean;
|
||||
Current: PChar;
|
||||
@ -549,6 +727,7 @@ begin
|
||||
//Zeilenanfang
|
||||
Position := posPrefix;
|
||||
Header := False;
|
||||
Special := False;
|
||||
Address := False;
|
||||
Complete := False;
|
||||
Finished := False;
|
||||
@ -562,15 +741,16 @@ begin
|
||||
if ((Address = False) or (Current^ <> #0)) and (not (Current^ in Spaces)) or ((((Address = False) and (Position = posValue)) or (Header = True)) and (Length(Block) <> 0)) then
|
||||
begin
|
||||
//Zeichen zu Block hinzufügen
|
||||
if Current^ <> #0 then
|
||||
begin
|
||||
if Character = False then
|
||||
begin
|
||||
Block := Block + Current^;
|
||||
if address = true then
|
||||
address := true;
|
||||
end else
|
||||
begin
|
||||
Ordinal := Ordinal + Current^;
|
||||
end;
|
||||
end;
|
||||
if (Current^ = #0{@Lines.Strings[Line][Length(Lines.Strings[Line])]}) or ((Character = True) and (Current^ in Spaces)) then
|
||||
begin
|
||||
goto EoL;
|
||||
@ -645,7 +825,7 @@ begin
|
||||
(Address = True) then
|
||||
begin
|
||||
//Block fertig
|
||||
if ((Position = posSeparator) and (Block = Format.Separator)) or ((Block = Format.Comment) and ((Position = posPrefix) or (Finished = True))) or ((Header = True) and (Position = posIndent) and (Length(Block) <> 0)) or ((Position = PosValue) and ((Address = False) or (Length(Block) <> 0))) then
|
||||
if ((Position = posSeparator) and (Block = Format.Separator)) or ((Block = Format.Comment) and ((Position = posPrefix) or (Finished = True))) or ((Header = True) and (Position = posIndent) and (Length(Block) <> 0)) or (((Position = PosValue) or ((Current^ = #0) and (Special = True))) and ((Address = False) or ((Length(Block) <> 0) or (Special = True)))) then
|
||||
begin
|
||||
if Position = posSeparator then
|
||||
begin
|
||||
@ -660,6 +840,86 @@ begin
|
||||
//Ende von Value
|
||||
if (Finished = False) and (Block <> Format.Comment) then
|
||||
begin
|
||||
//Ende von Special
|
||||
if Special = True then
|
||||
begin
|
||||
if Length(Indent) = 0 then
|
||||
begin
|
||||
Indent := LowerCase(Block);
|
||||
Block := '';
|
||||
end;
|
||||
if Indent = Specials[0] then
|
||||
begin
|
||||
//LOC abc
|
||||
Name := Block;
|
||||
end else
|
||||
begin
|
||||
if Indent = Specials[1] then
|
||||
begin
|
||||
//TAG abc
|
||||
Tag := Block;
|
||||
end else
|
||||
begin
|
||||
if Indent = Specials[2] then
|
||||
begin
|
||||
//INC abc
|
||||
((Collection as TLocalizations).Items[(Collection as TLocalizations).IndexOfTag(Trim(Block))] as TLocalization).Apply;
|
||||
end else
|
||||
begin
|
||||
if Indent = Specials[3] then
|
||||
begin
|
||||
//END
|
||||
if Length(Trim(Block)) <> 0 then
|
||||
begin
|
||||
RaiseParseErrorUnexpected('End of line','expression',Line,Current,Length(Block));
|
||||
end;
|
||||
Exit;
|
||||
end else
|
||||
begin
|
||||
if Indent = Specials[4] then
|
||||
begin
|
||||
//APP abc
|
||||
Block := Trim(Block);
|
||||
if (Length(Block) <> 0) and (Position = posValue) then
|
||||
begin
|
||||
if Application.Title <> Block then
|
||||
begin
|
||||
Exit;
|
||||
end;
|
||||
end else
|
||||
begin
|
||||
RaiseParseErrorUnexpected('Argument','end of line',Line,Current);
|
||||
Exit;
|
||||
end;
|
||||
end else
|
||||
begin
|
||||
if Indent = Specials[5] then
|
||||
begin
|
||||
//NOT abc
|
||||
if (Length(Block) <> 0) and (Position = posValue) then
|
||||
begin
|
||||
if Application.Title = Block then
|
||||
begin
|
||||
Exit;
|
||||
end;
|
||||
end else
|
||||
begin
|
||||
RaiseParseErrorUnexpected('Argument','end of line',Line,Current);
|
||||
Exit;
|
||||
end;
|
||||
end else
|
||||
begin
|
||||
RaiseParseErrorUnexpected('End of line','expression',Line,Current);
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end else
|
||||
begin
|
||||
//Ende von Indent
|
||||
if Address = False then
|
||||
begin
|
||||
//Wert
|
||||
@ -683,6 +943,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
Complete := True;
|
||||
end else
|
||||
begin
|
||||
@ -693,11 +954,12 @@ begin
|
||||
begin
|
||||
case Position of
|
||||
posPrefix: begin
|
||||
if (Block <> Format.Header) and (Block <> Format.Indent) then
|
||||
if (Block <> Format.Header) and (Block <> Format.Indent) and (Block <> Format.Special) then
|
||||
begin
|
||||
if (Length(Format.Header) = 0) or (Length(Format.Indent) = 0) then
|
||||
if (Length(Format.Header) = 0) or (Length(Format.Indent) = 0) or (Length(Format.Special) = 0) then
|
||||
begin
|
||||
Header := (Length(Format.Header) = 0);
|
||||
Special := (Length(Format.Special) = 0);
|
||||
Position := posIndent;
|
||||
Continue;
|
||||
end else
|
||||
@ -707,14 +969,30 @@ begin
|
||||
end;
|
||||
end;
|
||||
Header := (Block = Format.Header);
|
||||
Special := (Block = Format.Special);
|
||||
Inc(Position);
|
||||
end;
|
||||
posIndent: begin
|
||||
Indent := LowerCase(TrimRight(Block));
|
||||
if Header = False then
|
||||
begin
|
||||
Inc(Position);
|
||||
if Special = True then
|
||||
begin
|
||||
if ArrayPos(Indent,Specials) <> -1 then
|
||||
begin
|
||||
Inc(Position);
|
||||
end else
|
||||
begin
|
||||
RaiseParseErrorUnexpected('Command','"' + Block + '"',Line,Current,Length(Block));
|
||||
Exit;
|
||||
end;
|
||||
{ if Indent = Specials[3] then
|
||||
begin
|
||||
Finished := True;
|
||||
end; }
|
||||
end;
|
||||
end;
|
||||
Indent := TrimRight(Block);
|
||||
end;
|
||||
posSeparator: begin
|
||||
Address := (Block = Format.Address);
|
||||
@ -775,6 +1053,125 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TLocalizations.LoadFromFile(const FileName: String);
|
||||
var
|
||||
Languages: TStrings;
|
||||
Index: Integer;
|
||||
begin
|
||||
Languages := TStringList.Create;
|
||||
try
|
||||
Languages.LoadFromFile(FileName);
|
||||
for Index := 0 to Languages.Count - 1 do
|
||||
begin
|
||||
(Add as TLocalization).Name := Languages.Strings[Index];
|
||||
end;
|
||||
finally
|
||||
Languages.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TLocalizations.SaveToFile(const FileName: String);
|
||||
var
|
||||
Languages: TStrings;
|
||||
Index: Integer;
|
||||
begin
|
||||
Languages := TStringList.Create;
|
||||
try
|
||||
for Index := 0 to Count - 1 do
|
||||
begin
|
||||
Languages.Add((Items[Index] as TLocalization).Name);
|
||||
end;
|
||||
Languages.SaveToFile(FileName);
|
||||
finally
|
||||
Languages.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TLocalizations.LoadFromDirectory(const Dir: String; FileExts: array of String; RecMode: Boolean = True);
|
||||
var
|
||||
Languages: TStrings;
|
||||
Language_Index: Integer;
|
||||
begin
|
||||
Languages := TStringList.Create;
|
||||
try
|
||||
ListFiles(Dir,Languages,FileExts,[fnDirectory,fnExtension],RecMode);
|
||||
for Language_Index := 0 to Languages.Count - 1 do
|
||||
begin
|
||||
with (Add as TLocalization) do
|
||||
begin
|
||||
Name := ExtractFileName(ChangeFileExt(Languages.Strings[Language_Index],''));
|
||||
Lines.LoadFromFile(Languages.Strings[Language_Index]);
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
Languages.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TLocalizationExporter
|
||||
---------------------------------------------------------------------------- }
|
||||
|
||||
constructor TLocalizationExporter.Create(AData: TLocalizationData);
|
||||
begin
|
||||
inherited Create;
|
||||
FData := AData;
|
||||
FClearBeforeExport := True;
|
||||
end;
|
||||
|
||||
destructor TLocalizationExporter.Destroy;
|
||||
begin
|
||||
//...
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TLocalizationExporter.ExportToINI(var INI: TIniFile);
|
||||
var
|
||||
Section: Integer;
|
||||
Sections: TStrings;
|
||||
Indent: Integer;
|
||||
begin
|
||||
if INI = nil then
|
||||
begin
|
||||
Exit;
|
||||
end;
|
||||
if ClearBeforeExport = True then
|
||||
begin
|
||||
Sections := TStringList.Create;
|
||||
INI.ReadSections(Sections);
|
||||
for Section := 0 to Sections.Count - 1 do
|
||||
begin
|
||||
INI.EraseSection(Sections.Strings[Section]);
|
||||
end;
|
||||
end;
|
||||
|
||||
{
|
||||
Localization.Lines.Add(Localization.Format.Comment + ' ' + '+++ AUTO-GENERATED LOCALIZATION CONTENT +++');
|
||||
|
||||
Sections := TStringList.Create;
|
||||
try
|
||||
INI.ReadSections(Sections);
|
||||
for Section := 0 to Sections.Count - 1 do
|
||||
begin
|
||||
if Sections.Strings[Section] <> '' then
|
||||
begin
|
||||
Localization.Lines.Add(Localization.Format.Header + ' ' + Sections[Section]);
|
||||
end;
|
||||
Indents := TStringList.Create;
|
||||
try
|
||||
for Indent := 0 to Indents.Count - 1 do
|
||||
begin
|
||||
Localization.Lines.Add(Localization.Format.Indent + ' ' + Indents.Strings[Indent] + ' ' + Localization.Format.Separator + ' ' + INI.ReadString(Sections.Strings[Section],Indents.Strings[Indent],''));
|
||||
end;
|
||||
finally
|
||||
Indents.Free;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
Sections.Free;
|
||||
end; }
|
||||
end;
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TLocalizationData
|
||||
---------------------------------------------------------------------------- }
|
||||
@ -783,11 +1180,13 @@ constructor TLocalizationData.Create(AManager: TLocalizationManager);
|
||||
begin
|
||||
inherited Create;
|
||||
FManager := AManager;
|
||||
FExporter := TLocalizationExporter.Create(Self);
|
||||
end;
|
||||
|
||||
destructor TLocalizationData.Destroy;
|
||||
begin
|
||||
FManager := nil;
|
||||
FExporter.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
@ -975,6 +1374,20 @@ begin
|
||||
inherited;
|
||||
end;
|
||||
|
||||
function TLocalizationReference.GetDisplayName: String;
|
||||
begin
|
||||
inherited;
|
||||
Result := Indent;
|
||||
if Length(Section) <> 0 then
|
||||
begin
|
||||
Result := Section + '.' + Result;
|
||||
end;
|
||||
if Component <> nil then
|
||||
begin
|
||||
Result := Result + ' (' + Component.Name + '.' + Field + ')';
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TLocalizationReference.SetIndent(Value: String);
|
||||
var
|
||||
Index: Integer;
|
||||
@ -1127,7 +1540,7 @@ end;
|
||||
constructor TLocalizationManager.Create(AOwnder: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
FAbout := TComponentAbout.Create(TLocalizationManager,LocalizationManagerComponent_Version,LocalizationManagerComponent_Copyright,LocalizationManagerComponent_Author);
|
||||
FAbout := TComponentAbout.Create(TLocalizationManager);
|
||||
FLocalizations := TLocalizations.Create(TLocalization,Self);
|
||||
FData := TLocalizationData.Create(Self);
|
||||
FReferences := TLocalizationReferences.Create(TLocalizationReference,Self);
|
||||
|
@ -3,14 +3,10 @@ unit uScriptMgr;
|
||||
//////////////////////////////////////
|
||||
/// Lina Script Manager Unit ///
|
||||
/// **************************** ///
|
||||
/// (c) 2014 Dennis Göhlert a.o. ///
|
||||
/// (c) 2015 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$IFNDEF MSWINDOWS}
|
||||
{$IFDEF WARN_INCOMPATIBLEOS}
|
||||
{$MESSAGE ERROR 'The "uScriptMgr" unit is only available under MS-Windows OS'}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
{$I 'Config.inc'}
|
||||
|
||||
interface
|
||||
|
||||
@ -78,6 +74,9 @@ type
|
||||
procedure Delete(Plugin: TPSPlugin);
|
||||
end;
|
||||
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TScriptManager = class(TComponent)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
@ -171,13 +170,11 @@ type
|
||||
procedure AddPlugin(PluginList: TPSPlugins; Plugin: TPSPlugin);
|
||||
procedure DeletePlugin(PluginList: TPSPlugins; Plugin: TPSPlugin);
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
{$ENDIF}
|
||||
|
||||
const
|
||||
{ Meta-Daten }
|
||||
ScriptManagerComponent_Version = '1.0';
|
||||
ScriptManagerComponent_Copyright = 'Copyright © 2015';
|
||||
ScriptManagerComponent_Author = 'Dennis Göhlert a.o.';
|
||||
{ Fehlermeldungen }
|
||||
Error_MissingReturnTarget = 'Missing log-return target';
|
||||
Error_MissingComponentName = 'Missing component name';
|
||||
@ -194,10 +191,12 @@ var
|
||||
|
||||
implementation
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents(ComponentsPage,[TScriptManager]);
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
procedure AddPlugin(PluginList: TPSPlugins; Plugin: TPSPlugin);
|
||||
begin
|
||||
@ -286,9 +285,9 @@ end;
|
||||
constructor TScriptManager.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
FAbout := TComponentAbout.Create(TScriptManager,ScriptManagerComponent_Version,ScriptManagerComponent_Copyright,ScriptManagerComponent_Author);
|
||||
//ReturnMode := srNone; Durch DEFAULT festgelegt!
|
||||
//ReturnStyle := srSimple; Durch DEFAULT festgelegt!
|
||||
FAbout := TComponentAbout.Create(TScriptManager);
|
||||
ReturnMode := srNone;
|
||||
ReturnStyle := srSimple;
|
||||
SecureMode := True;
|
||||
//ReturnSL := TStringList.Create; Nicht erstellen, Property ist nur ein Pointer auf ext. TStrings
|
||||
FLibraries := [slClasses,slControls,slStdCtrls,slForms,slDateUtils,slCustom];
|
||||
|
1225
Source/uSysCtrls.pas
@ -3,14 +3,10 @@ unit uSysTools;
|
||||
//////////////////////////////////////
|
||||
/// Lina System Tools Unit ///
|
||||
/// **************************** ///
|
||||
/// (c) 2014 Dennis Göhlert a.o. ///
|
||||
/// (c) 2015 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$IFNDEF MSWINDOWS}
|
||||
{$IFDEF WARN_INCOMPATIBLEOS}
|
||||
{$MESSAGE ERROR 'The "uSysTools" unit is only available under MS-Windows OS'}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
{$I 'Config.inc'}
|
||||
|
||||
interface
|
||||
|
||||
@ -25,6 +21,7 @@ uses
|
||||
type
|
||||
{ Fehlermeldungen }
|
||||
EWinUserInformation = class(Exception);
|
||||
EStringCharAccess = class(Exception);
|
||||
|
||||
type
|
||||
{ Hilfsklassen }
|
||||
@ -44,11 +41,13 @@ type
|
||||
{ Typisierte Arrays }
|
||||
TPointerArray = array of Pointer;
|
||||
TPCharArray = array of PChar;
|
||||
TCharArray = array of Char;
|
||||
|
||||
TVariantArray = array of Variant;
|
||||
|
||||
TStringArray = array of String;
|
||||
TShortStringArray = array of ShortString;
|
||||
TAnsiStringArray = array of AnsiString;
|
||||
|
||||
TByteArray = array of Byte;
|
||||
TWordArray = array of Word;
|
||||
@ -143,10 +142,13 @@ type
|
||||
end;
|
||||
TFloatRefDataArrayReferenceDataArray = array of TFloatRefDataArrayReferenceData;
|
||||
|
||||
TByteSet = set of Byte;
|
||||
TCharSet = set of Char;
|
||||
|
||||
TVector = TFloatArray;
|
||||
TMatrix = array of TVector;
|
||||
|
||||
TCycle = {$IFDEF NO_RECORDMETHODS} record {$ELSE} class {$ENDIF}
|
||||
TCycle = class
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
FRadius: Extended;
|
||||
@ -157,11 +159,38 @@ type
|
||||
procedure SetCircumference(Value: Extended);
|
||||
public
|
||||
{ Public-Deklarationen }
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
property Radius: Extended read FRadius write FRadius;
|
||||
property Diameter: Extended read GetDiameter write SetDiameter;
|
||||
property Circumference: Extended read GetCircumference write SetCircumference;
|
||||
end;
|
||||
|
||||
TRange = class
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
FOffset: Integer;
|
||||
FTarget: Integer;
|
||||
FStep: Integer;
|
||||
{ Methoden }
|
||||
procedure SetOffset(Value: Integer);
|
||||
procedure SetTarget(Value: Integer);
|
||||
function GetLength: Integer;
|
||||
procedure SetLength(Value: Integer);
|
||||
function GetCount: Integer;
|
||||
function GetElements: TIntegerArray;
|
||||
public
|
||||
{ Public-Deklarationen }
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
property Offset: Integer read FOffset write SetOffset default 0;
|
||||
property Target: Integer read FTarget write SetTarget default 0;
|
||||
property Length: Integer read GetLength write SetLength default 0;
|
||||
property Count: Integer read GetCount default 0;
|
||||
property Elements: TIntegerArray read GetElements;
|
||||
property Step: Integer read FStep write FStep default 1;
|
||||
end;
|
||||
|
||||
TFilteredStringList = class(TStringList)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
@ -299,7 +328,7 @@ type
|
||||
procedure SetMethodSubProp(Instance: TObject; const PropName: String; Value: TMethod);
|
||||
function SubPropIsType(Instance: TObject; const PropName: String; TypeKind: TTypeKind): Boolean;
|
||||
function SubPropType(Instance: TObject; const PropName: String): TTypeKind; overload;
|
||||
{ Uhrzeit }
|
||||
{ Datum/Uhrzeit }
|
||||
function SystemTime: TSystemTime;
|
||||
function Year: Word;
|
||||
function Month: Word;
|
||||
@ -309,7 +338,17 @@ type
|
||||
function Minute: Word;
|
||||
function Second: Word;
|
||||
function Milliseconds: Word;
|
||||
{ Set-Operationen }
|
||||
function Count(Elements: TByteSet): Byte; overload;
|
||||
function Count(Elements: TCharSet): Byte; overload;
|
||||
function SetToArray(Elements: TByteSet): TByteArray; overload;
|
||||
function SetToArray(Elements: TCharSet): TCharArray; overload;
|
||||
function ArrayToSet(Elements: array of Byte): TByteSet; overload;
|
||||
function ArrayToSet(Elements: array of Char): TCharSet; overload;
|
||||
{ Sonstige }
|
||||
function StringToRange(const S: String; var Range: TRange): Boolean;
|
||||
function ExprInStr(const S: String; Position: Integer): String;
|
||||
function Factional(X: Byte): Cardinal;
|
||||
function ExtractClassName(FullClassName: String; CaseSensitive: Boolean = True): String;
|
||||
function CountLines(S: String): Integer;
|
||||
function Wrappable(S: String; Font: TFont; MaxWidth: Integer): Boolean; overload;
|
||||
@ -334,9 +373,13 @@ type
|
||||
function CharPosition(Current: PAnsiChar; Text: AnsiString): Integer; {$IFNDEF NO_UNICODE} overload;
|
||||
function CharPosition(Current: PWideChar; Text: UnicodeString): Integer; overload;
|
||||
{$ENDIF}
|
||||
function ConsistsOf(const S: String; Chars: array of Char): Boolean; overload;
|
||||
function ConsistsOf(const S: String; Chars: TCharSet): Boolean; overload;
|
||||
procedure PrintText(Strings: TStrings; Font: TFont);
|
||||
procedure ExtractChars(var Text: String; Chars: array of Char);
|
||||
procedure EnableDebugPrivilege;
|
||||
procedure ExtractChars(var Text: String; Chars: array of Char); overload;
|
||||
procedure ExtractChars(var Text: String; Chars: TCharSet); overload;
|
||||
procedure SetPrivilege(const Name: PChar; Value: Boolean); overload;
|
||||
procedure SetPrivilege(const Name: String; Value: Boolean); overload;
|
||||
|
||||
const
|
||||
Spaces = [#9,#10,#13,#32,#160];
|
||||
@ -345,7 +388,42 @@ const
|
||||
LowerCaseLetters = ['a'..'z'];
|
||||
Letters = UpperCaseLetters + LowerCaseLetters;
|
||||
Operators = ['+','-','*','/'];
|
||||
{ WinAPI-Privilegien }
|
||||
SE_ASSIGNPRIMARYTOKEN_NAME = 'SeAssignPrimaryTokenPrivilege';
|
||||
SE_AUDIT_NAME = 'SeAuditPrivilege';
|
||||
SE_BACKUP_NAME = 'SeBackupPrivilege';
|
||||
SE_CHANGE_NOTIFY_NAME = 'SeChangeNotifyPrivilege';
|
||||
SE_CREATE_GLOBAL_NAME = 'SeCreateGlobalPrivilege';
|
||||
SE_CREATE_PAGEFILE_NAME = 'SeCreatePagefilePrivilege';
|
||||
SE_CREATE_PERMANENT_NAME = 'SeCreatePermanentPrivilege';
|
||||
SE_CREATE_SYMBOLIC_LINK_NAME = 'SeCreateSymbolicLinkPrivilege';
|
||||
SE_CREATE_TOKEN_NAME = 'SeCreateTokenPrivilege';
|
||||
SE_DEBUG_NAME = 'SeDebugPrivilege';
|
||||
SE_ENABLE_DELEGATION_NAME = 'SeEnableDelegationPrivilege';
|
||||
SE_IMPERSONATE_NAME = 'SeImpersonatePrivilege';
|
||||
SE_INC_BASE_PRIORITY_NAME = 'SeIncreaseBasePriorityPrivilege';
|
||||
SE_INCREASE_QUOTA_NAME = 'SeIncreaseQuotaPrivilege';
|
||||
SE_INC_WORKING_SET_NAME = 'SeIncreaseWorkingSetPrivilege';
|
||||
SE_LOAD_DRIVER_NAME = 'SeLoadDriverPrivilege';
|
||||
SE_LOCK_MEMORY_NAME = 'SeLockMemoryPrivilege';
|
||||
SE_MACHINE_ACCOUNT_NAME = 'SeMachineAccountPrivilege';
|
||||
SE_MANAGE_VOLUME_NAME = 'SeManageVolumePrivilege';
|
||||
SE_PROF_SINGLE_PROCESS_NAME = 'SeProfileSingleProcessPrivilege';
|
||||
SE_RELABEL_NAME = 'SeRelabelPrivilege';
|
||||
SE_REMOTE_SHUTDOWN_NAME = 'SeRemoteShutdownPrivilege';
|
||||
SE_RESTORE_NAME = 'SeRestorePrivilege';
|
||||
SE_SECURITY_NAME = 'SeSecurityPrivilege';
|
||||
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
|
||||
SE_SYNC_AGENT_NAME = 'SeSyncAgentPrivilege';
|
||||
SE_SYSTEM_ENVIRONMENT_NAME = 'SeSystemEnvironmentPrivilege';
|
||||
SE_SYSTEM_PROFILE_NAME = 'SeSystemProfilePrivilege';
|
||||
SE_SYSTEMTIME_NAME = 'SeSystemtimePrivilege';
|
||||
SE_TAKE_OWNERSHIP_NAME = 'SeTakeOwnershipPrivilege';
|
||||
SE_TCB_NAME = 'SeTcbPrivilege';
|
||||
SE_TIME_ZONE_NAME = 'SeTimeZonePrivilege';
|
||||
SE_TRUSTED_CREDMAN_ACCESS_NAME = 'SeTrustedCredManAccessPrivilege';
|
||||
SE_UNDOCK_NAME = 'SeUndockPrivilege';
|
||||
SE_UNSOLICITED_INPUT_NAME = 'SeUnsolicitedInputPrivilege';
|
||||
|
||||
implementation
|
||||
|
||||
@ -1199,6 +1277,192 @@ begin
|
||||
Result := SystemTime.wMilliseconds;
|
||||
end;
|
||||
|
||||
function Count(Elements: TByteSet): Byte;
|
||||
var
|
||||
Current: Byte;
|
||||
begin
|
||||
Result := 0;
|
||||
for Current in Elements do
|
||||
begin
|
||||
Inc(Result);
|
||||
end;
|
||||
end;
|
||||
|
||||
function Count(Elements: TCharSet): Byte;
|
||||
var
|
||||
Current: Char;
|
||||
begin
|
||||
Result := 0;
|
||||
for Current in Elements do
|
||||
begin
|
||||
Inc(Result);
|
||||
end;
|
||||
end;
|
||||
|
||||
function SetToArray(Elements: TByteSet): TByteArray;
|
||||
var
|
||||
Current: Byte;
|
||||
Index: Integer;
|
||||
begin
|
||||
SetLength(Result,Count(Elements));
|
||||
Index := 0;
|
||||
for Current in Elements do
|
||||
begin
|
||||
Result[Index] := Current;
|
||||
Inc(Index);
|
||||
end;
|
||||
end;
|
||||
|
||||
function SetToArray(Elements: TCharSet): TCharArray;
|
||||
var
|
||||
Current: Char;
|
||||
Index: Integer;
|
||||
begin
|
||||
SetLength(Result,Count(Elements));
|
||||
Index := 0;
|
||||
for Current in Elements do
|
||||
begin
|
||||
Result[Index] := Current;
|
||||
Inc(Index);
|
||||
end;
|
||||
end;
|
||||
|
||||
function ArrayToSet(Elements: array of Byte): TByteSet;
|
||||
var
|
||||
Index: Integer;
|
||||
begin
|
||||
Result := [];
|
||||
for Index := 0 to Length(Elements) - 1 do
|
||||
begin
|
||||
Result := Result + [Elements[Index]];
|
||||
end;
|
||||
end;
|
||||
|
||||
function ArrayToSet(Elements: array of Char): TCharSet;
|
||||
var
|
||||
Index: Integer;
|
||||
begin
|
||||
Result := [];
|
||||
for Index := 0 to Length(Elements) - 1 do
|
||||
begin
|
||||
Result := Result + [Elements[Index]];
|
||||
end;
|
||||
end;
|
||||
|
||||
function StringToRange(const S: String; var Range: TRange): Boolean;
|
||||
var
|
||||
Current: PChar;
|
||||
Block: String;
|
||||
Temp: TRange;
|
||||
Position: (posOffset,posDots,posTarget,posFinish);
|
||||
begin
|
||||
{if Range = nil then
|
||||
begin
|
||||
Range := TRange.Create;
|
||||
end;
|
||||
Result := False;
|
||||
if Length(S) = 0 then
|
||||
begin
|
||||
Exit;
|
||||
end;
|
||||
Current := PChar(S);
|
||||
Position := posOffset;
|
||||
Temp := TRange.Create;
|
||||
try
|
||||
while Current^ <> #0 do
|
||||
begin
|
||||
if (Position^ = posFinish) and (not (Current^ in Spaces)) then
|
||||
begin
|
||||
Result := False;
|
||||
Break;
|
||||
end;
|
||||
case Current^ of
|
||||
Spaces: if Position in [posOffset,posTarget] then
|
||||
begin
|
||||
Inc(Position);
|
||||
end;
|
||||
'0'..'9': Block := Block + Current^;
|
||||
'+','-': if Length(Block) = 0 then
|
||||
begin
|
||||
Block := Block + Current^;
|
||||
end else
|
||||
begin
|
||||
Result := False;
|
||||
Break;
|
||||
end;
|
||||
'.': if (Current + 1)^ = '.' then
|
||||
begin
|
||||
|
||||
Block := '';
|
||||
Inc(Current);
|
||||
end else
|
||||
begin
|
||||
Result := False;
|
||||
Break;
|
||||
end;
|
||||
end;
|
||||
Inc(Current);
|
||||
end;
|
||||
finally
|
||||
Temp.Free;
|
||||
end;
|
||||
if Result = True then
|
||||
begin
|
||||
Range.Offset := Temp.Offset;
|
||||
Range.Target := Temp.Target;
|
||||
Range.Step := Temp.Step;
|
||||
end; }
|
||||
end;
|
||||
|
||||
function ExprInStr(const S: String; Position: Integer): String;
|
||||
var
|
||||
Current: PChar;
|
||||
begin
|
||||
if (Position < 1) or (Position > Length(S)) then
|
||||
begin
|
||||
raise EStringCharAccess.Create('Access to String char at position ' + IntToStr(Position) + ' not possible');
|
||||
end;
|
||||
Current := @S[Position];
|
||||
Result := '';
|
||||
while (Current^ in Letters) and (Current >= @S[1]) do
|
||||
begin
|
||||
Result := Current^ + Result;
|
||||
Dec(Current);
|
||||
end;
|
||||
Current := @S[Position + 1];
|
||||
while Current^ in Letters do
|
||||
begin
|
||||
Result := Result + Current^;
|
||||
Inc(Current);
|
||||
end;
|
||||
end;
|
||||
|
||||
{$IFDEF PUREPASCAL}
|
||||
function Factional(X: Byte): Cardinal;
|
||||
var
|
||||
Index: Integer;
|
||||
begin
|
||||
Result := 1;
|
||||
for Index := 2 to X do
|
||||
begin
|
||||
Result := Result * Index;
|
||||
end;
|
||||
end;
|
||||
{$ELSE}
|
||||
function Factional(X: Byte): Cardinal; assembler;
|
||||
asm
|
||||
MOV ECX,EAX
|
||||
MOV EAX,1
|
||||
JMP @Check
|
||||
@Multiply:
|
||||
IMUL EAX,ECX
|
||||
DEC ECX
|
||||
@Check:
|
||||
CMP ECX,1
|
||||
JNE @Multiply
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
function ExtractClassName(FullClassName: String; CaseSensitive: Boolean = True): String;
|
||||
begin
|
||||
if ((FullClassName[1] = 'T') or ((CaseSensitive = False) and (FullClassName[1] = 't'))) and ((FullClassName[2] in UppercaseLetters) or (CaseSensitive = False)) then
|
||||
@ -1310,11 +1574,6 @@ function SecToTime(const Sec: Cardinal): TTime;
|
||||
var
|
||||
Hrs, Mins: Word;
|
||||
begin
|
||||
if Sec <= 0 then
|
||||
begin
|
||||
Result := StrToTime('00:00:00');
|
||||
Exit;
|
||||
end;
|
||||
Hrs := Sec div 3600;
|
||||
Mins := Sec div 60 - Hrs * 60;
|
||||
Result := StrToTime(IntToStr(Hrs) + ':' + IntToStr(Mins) + ':' + IntToStr(Sec - (Hrs * 3600 + Mins * 60)));
|
||||
@ -2123,6 +2382,40 @@ begin
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
function ConsistsOf(const S: String; Chars: TCharSet): Boolean; overload;
|
||||
var
|
||||
Current: PChar;
|
||||
begin
|
||||
Current := PChar(S);
|
||||
while Current^ <> #0 do
|
||||
begin
|
||||
if not (Current^ in Chars) then
|
||||
begin
|
||||
Result := False;
|
||||
Exit;
|
||||
end;
|
||||
Inc(Current);
|
||||
end;
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
function ConsistsOf(const S: String; Chars: array of Char): Boolean; overload;
|
||||
var
|
||||
Current: PChar;
|
||||
begin
|
||||
Current := PChar(S);
|
||||
while Current^ <> #0 do
|
||||
begin
|
||||
if ArrayPos(Current^,Chars) = -1 then
|
||||
begin
|
||||
Result := False;
|
||||
Exit;
|
||||
end;
|
||||
Inc(Current);
|
||||
end;
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
procedure PrintText(Strings: TStrings; Font: TFont);
|
||||
var
|
||||
Index: Integer;
|
||||
@ -2144,12 +2437,12 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure ExtractChars(var Text: String; Chars: array of Char);
|
||||
procedure ExtractChars(var Text: String; Chars: array of Char); overload;
|
||||
var
|
||||
Current: PChar;
|
||||
OutPut: String;
|
||||
begin
|
||||
Current := @Text[1];
|
||||
Current := PChar(Text);
|
||||
SetLength(OutPut,0);
|
||||
while Current^ <> #0 do
|
||||
begin
|
||||
@ -2162,21 +2455,50 @@ begin
|
||||
Text := OutPut;
|
||||
end;
|
||||
|
||||
procedure EnableDebugPrivilege;
|
||||
procedure ExtractChars(var Text: String; Chars: TCharSet); overload;
|
||||
var
|
||||
Current: PChar;
|
||||
OutPut: String;
|
||||
begin
|
||||
Current := PChar(Text);
|
||||
SetLength(OutPut,0);
|
||||
while Current^ <> #0 do
|
||||
begin
|
||||
if Current^ in Chars then
|
||||
begin
|
||||
OutPut := OutPut + Current^;
|
||||
end;
|
||||
Inc(Current);
|
||||
end;
|
||||
Text := OutPut;
|
||||
end;
|
||||
|
||||
procedure SetPrivilege(const Name: PChar; Value: Boolean); overload;
|
||||
var
|
||||
Token: THandle;
|
||||
TokenPrivs: TTokenPrivileges;
|
||||
Privileges: TTokenPrivileges;
|
||||
begin
|
||||
if OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,Token) then
|
||||
begin
|
||||
TokenPrivs.PrivilegeCount := 1;
|
||||
LookupPrivilegeValue(nil, SE_DEBUG_NAME, TokenPrivs.Privileges[0].Luid);
|
||||
TokenPrivs.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
|
||||
AdjustTokenPrivileges(Token,False,TokenPrivs,SizeOf(TokenPrivs),nil,DWord(nil^));
|
||||
Privileges.PrivilegeCount := 1;
|
||||
LookupPrivilegeValue(nil,Name,Privileges.Privileges[0].Luid);
|
||||
if Value = True then
|
||||
begin
|
||||
Privileges.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
|
||||
end else
|
||||
begin
|
||||
Privileges.Privileges[0].Attributes := 0;
|
||||
end;
|
||||
AdjustTokenPrivileges(Token,False,Privileges,SizeOf(Privileges),nil,DWord(nil^));
|
||||
CloseHandle(Token);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure SetPrivilege(const Name: String; Value: Boolean); overload;
|
||||
begin
|
||||
SetPrivilege(PChar(Name),Value);
|
||||
end;
|
||||
|
||||
function WinUserName: String;
|
||||
var
|
||||
Buffer: array [0..255] of Char;
|
||||
@ -2266,6 +2588,18 @@ end;
|
||||
TCycle
|
||||
---------------------------------------------------------------------------- }
|
||||
|
||||
constructor TCycle.Create;
|
||||
begin
|
||||
inherited;
|
||||
FRadius := 0;
|
||||
end;
|
||||
|
||||
destructor TCycle.Destroy;
|
||||
begin
|
||||
//...
|
||||
inherited;
|
||||
end;
|
||||
|
||||
function TCycle.GetDiameter: Extended;
|
||||
begin
|
||||
Result := Radius * 2;
|
||||
@ -2286,6 +2620,69 @@ begin
|
||||
FRadius := Value / 2 / Pi;
|
||||
end;
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TRange
|
||||
---------------------------------------------------------------------------- }
|
||||
|
||||
constructor TRange.Create;
|
||||
begin
|
||||
inherited;
|
||||
FOffset := 0;
|
||||
FTarget := 0;
|
||||
FStep := 1;
|
||||
end;
|
||||
|
||||
destructor TRange.Destroy;
|
||||
begin
|
||||
//...
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TRange.SetOffset(Value: Integer);
|
||||
begin
|
||||
if Value <= Target then
|
||||
begin
|
||||
FOffset := Value;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TRange.SetTarget(Value: Integer);
|
||||
begin
|
||||
if Value >= Offset then
|
||||
begin
|
||||
FTarget := Value;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TRange.GetLength: Integer;
|
||||
begin
|
||||
Result := Target - Offset;
|
||||
end;
|
||||
|
||||
procedure TRange.SetLength(Value: Integer);
|
||||
begin
|
||||
if Value >= 0 then
|
||||
begin
|
||||
Length := Value;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TRange.GetCount: Integer;
|
||||
begin
|
||||
Result := Length div Step;
|
||||
end;
|
||||
|
||||
function TRange.GetElements: TIntegerArray;
|
||||
var
|
||||
Index: Integer;
|
||||
begin
|
||||
System.SetLength(Result,Count);
|
||||
for Index := 0 to System.Length(Result) - 1 do
|
||||
begin
|
||||
Result[Index] := Offset + Step * Index;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TFilteredStringList
|
||||
---------------------------------------------------------------------------- }
|
||||
|
@ -3,14 +3,10 @@ unit uVirtObj;
|
||||
//////////////////////////////////////
|
||||
/// Lina Virtual Object Unit ///
|
||||
/// **************************** ///
|
||||
/// (c) 2014 Dennis Göhlert a.o. ///
|
||||
/// (c) 2015 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$IFNDEF MSWINDOWS}
|
||||
{$IFDEF WARN_INCOMPATIBLEOS}
|
||||
{$MESSAGE ERROR 'The "uVirtObj" unit is only available under MS-Windows OS'}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
{$I 'Config.inc'}
|
||||
|
||||
interface
|
||||
|
||||
@ -52,6 +48,9 @@ type
|
||||
TVirtualClasses = array of TVirtualClass;
|
||||
|
||||
{ VirtualProgram }
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TVirtualProgram = class(TComponent)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
@ -68,21 +67,18 @@ type
|
||||
property About: TComponentAbout read FAbout;
|
||||
end;
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
|
||||
const
|
||||
{ Meta-Daten }
|
||||
VirtualProgramComponent_Name = 'ScriptManager';
|
||||
VirtualProgramComponent_Version = 1.0;
|
||||
VirtualProgramComponent_Copyright = 'Copyright © 2014';
|
||||
VirtualProgramComponent_Author = 'Dennis Göhlert a.o.';
|
||||
{$ENDIF}
|
||||
|
||||
implementation
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents(ComponentsPage,[TVirtualProgram]);
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
constructor TVirtualProgram.Create(AOwner: TComponent);
|
||||
begin
|
||||
|
@ -3,14 +3,10 @@ unit uWebCtrls;
|
||||
//////////////////////////////////////
|
||||
/// Lina Web Controls Unit ///
|
||||
/// **************************** ///
|
||||
/// (c) 2014 Dennis Göhlert a.o. ///
|
||||
/// (c) 2015 Dennis Göhlert a.o. ///
|
||||
//////////////////////////////////////
|
||||
|
||||
{$IFNDEF MSWINDOWS}
|
||||
{$IFDEF WARN_INCOMPATIBLEOS}
|
||||
{$MESSAGE ERROR 'The "uWebCtrls" unit is only available under MS-Windows OS'}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
{$I 'Config.inc'}
|
||||
|
||||
interface
|
||||
|
||||
@ -35,6 +31,9 @@ type
|
||||
|
||||
type
|
||||
{ Hauptklassen }
|
||||
{$IFNDEF NO_MULTIPLATFORM}
|
||||
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
|
||||
{$ENDIF}
|
||||
TDownload = class(TComponent)
|
||||
private
|
||||
{ Private-Deklarationen }
|
||||
@ -85,7 +84,9 @@ type
|
||||
function StrIsURL(const S: String): Boolean;
|
||||
function GetTagParamValue(const S,Tag,Param: String): String;
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
{$ENDIF}
|
||||
|
||||
const
|
||||
{ Web-Protokolle }
|
||||
@ -97,17 +98,15 @@ const
|
||||
WebProtocols: array [0..4] of String = (WP_HTTP,WP_HTTPS,WP_FTP,WP_CALL,WP_MAIL);
|
||||
WebProtocolsSimple: array [0..1] of String = (WP_MAIL,WP_CALL);
|
||||
WebProtocolsSpecial: array [0..2] of String = (WP_HTTP,WP_HTTPS,WP_FTP);
|
||||
{ Meta-Daten }
|
||||
DownloadComponent_Version = '1.0';
|
||||
DownloadComponent_Copyright = 'Copyright © 2015';
|
||||
DownloadComponent_Author = 'Dennis Göhlert a.o.';
|
||||
|
||||
implementation
|
||||
|
||||
{$IFDEF ADD_COMPONENTREG}
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents(ComponentsPage,[TDownload]);
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
function ValidProtocol(const Protocol: String;
|
||||
const Protocols: array of String): Boolean;
|
||||
@ -323,10 +322,14 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
{ ----------------------------------------------------------------------------
|
||||
TDownload
|
||||
---------------------------------------------------------------------------- }
|
||||
|
||||
constructor TDownload.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
FAbout := TComponentAbout.Create(TDownload,DownloadComponent_Version,DownloadComponent_Copyright,DownloadComponent_Author);
|
||||
FAbout := TComponentAbout.Create(TDownload);
|
||||
idHTTPObject := TidHTTP.Create(Self);
|
||||
idHTTPObject.HandleRedirects := True;
|
||||
idHTTPObject.OnWork := idHTTPObjectWork;
|
||||
|
BIN
resource/bitmap/Large/TSizePanel.bmp
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
resource/bitmap/Small/TValueEdit.bmp
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
resource/bitmap/TSizePanel.bmp
Normal file
After Width: | Height: | Size: 1.6 KiB |