1
0
mirror of https://bitbucket.org/Dennis07/lina-components.git synced 2025-08-24 21:49:04 +02:00

Version 1.0 DEV 1.15

Signed-off-by: Dennis07 <den.goehlert@t-online.de>
This commit is contained in:
Dennis07
2016-01-16 00:35:34 +01:00
parent 2fd0c3296e
commit 13370e478b
72 changed files with 3475 additions and 747 deletions

View 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.

View 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>

View 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>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View 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

View 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.

View 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.

View 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>

View 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>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View 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

View 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.

View File

@@ -31,7 +31,6 @@ object Form1: TForm1
Height = 41 Height = 41
Align = alBottom Align = alBottom
TabOrder = 0 TabOrder = 0
ExplicitTop = 139
object btClose: TButton object btClose: TButton
Left = 8 Left = 8
Top = 8 Top = 8
@@ -112,7 +111,7 @@ object Form1: TForm1
Indent = 'Coding' Indent = 'Coding'
Field = 'Caption' Field = 'Caption'
end> end>
Left = 240 Left = 280
Top = 32 Top = 24
end end
end end

View File

@@ -52,8 +52,13 @@ begin
end; end;
procedure TForm1.btHelloClick(Sender: TObject); procedure TForm1.btHelloClick(Sender: TObject);
//var g: TLocalizationGenerator;
begin 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; end;
procedure TForm1.coEncodingChange(Sender: TObject); procedure TForm1.coEncodingChange(Sender: TObject);
@@ -75,12 +80,12 @@ end;
procedure TForm1.FormCreate(Sender: TObject); procedure TForm1.FormCreate(Sender: TObject);
var var
Index: Integer; Index: Integer;
LanguageFiles: TStrings; // LanguageFiles: TStrings;
begin begin
LocalizationManager.References.Add; LocalizationManager.References.Add;
HelloWorld := 'Hello,' + #10 + 'World!'; HelloWorld := 'Hello,' + #10 + 'World!';
(LocalizationManager.References.Items[0] as TLocalizationReference).Reference := @HelloWorld; (LocalizationManager.References.Items[0] as TLocalizationReference).Reference := @HelloWorld;
LanguageFiles := TStringList.Create; {LanguageFiles := TStringList.Create;
ListFiles(ExtractFileDir(Application.ExeName),LanguageFiles,['*.loc']); ListFiles(ExtractFileDir(Application.ExeName),LanguageFiles,['*.loc']);
lbLanguage.Items.Assign(LanguageFiles); lbLanguage.Items.Assign(LanguageFiles);
for Index := 0 to LanguageFiles.Count - 1 do 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(''); // if (LocalizationManager.Localizations.Items[Index] as TLocalization).Lines.DefaultEncoding = TEncoding.ANSI then showmessage('');
// TLocalization(LocalizationManager.Localizations.Items[Index]).Encoding := ceANSI; // TLocalization(LocalizationManager.Localizations.Items[Index]).Encoding := ceANSI;
end; 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; end;
procedure TForm1.lbLanguageClick(Sender: TObject); procedure TForm1.lbLanguageClick(Sender: TObject);

View File

@@ -1,4 +1,4 @@
These statistics cover the official repository of Lina Components. These statistics cover the official repository of Lina Components.
Total lines of code (LoC): 10300+ Total lines of code (LoC): 12000+
Total visual components (VC): 17 Total visual components (VC): 20

View File

@@ -41,7 +41,7 @@ package LINA_D_XE5;
requires requires
rtl, rtl,
vcl, vcl,
dbrtl, vclx,
PascalScript_Core_D19, PascalScript_Core_D19,
IndySystem, IndySystem,
IndyProtocols, IndyProtocols,
@@ -60,7 +60,9 @@ contains
uAdvCtrls in '..\..\Source\uAdvCtrls.pas', uAdvCtrls in '..\..\Source\uAdvCtrls.pas',
uWebCtrls in '..\..\Source\uWebCtrls.pas', uWebCtrls in '..\..\Source\uWebCtrls.pas',
uFileCtrls in '..\..\Source\uFileCtrls.pas', uFileCtrls in '..\..\Source\uFileCtrls.pas',
uInit in '..\..\Source\uInit.pas', {$IFDEF WIN32}
uInit in '..\..\Source\uInit.pas',
{$ENDIF}
uCalc in '..\..\Source\uCalc.pas'; uCalc in '..\..\Source\uCalc.pas';
end. end.

View File

@@ -115,7 +115,7 @@
<DCCReference Include="..\..\Resource\Compiled\uWebCtrls.dcr"/> <DCCReference Include="..\..\Resource\Compiled\uWebCtrls.dcr"/>
<DCCReference Include="rtl.dcp"/> <DCCReference Include="rtl.dcp"/>
<DCCReference Include="vcl.dcp"/> <DCCReference Include="vcl.dcp"/>
<DCCReference Include="dbrtl.dcp"/> <DCCReference Include="vclx.dcp"/>
<DCCReference Include="PascalScript_Core_D19.dcp"/> <DCCReference Include="PascalScript_Core_D19.dcp"/>
<DCCReference Include="IndySystem.dcp"/> <DCCReference Include="IndySystem.dcp"/>
<DCCReference Include="IndyProtocols.dcp"/> <DCCReference Include="IndyProtocols.dcp"/>

View File

@@ -1,50 +1,53 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<BorlandProject> <BorlandProject>
<Transactions> <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.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.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.508,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uBase.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.518,=C:\Users\Dennis G\Documents\RAD Studio\Projekte\LinaComponents\Source\uBattery.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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> </Transactions>
<ProjectSortOrder AutoSort="0" SortType="0"> <ProjectSortOrder AutoSort="0" SortType="0">
<File Path="..\..\..\LinaComponents"/> <File Path="..\..\..\LinaComponents"/>
@@ -75,12 +78,12 @@
<File Path="..\..\Source\uSysTools.pas"/> <File Path="..\..\Source\uSysTools.pas"/>
<File Path="..\..\Source\uVirtObj.pas"/> <File Path="..\..\Source\uVirtObj.pas"/>
<File Path="..\..\Source\uWebCtrls.pas"/> <File Path="..\..\Source\uWebCtrls.pas"/>
<File Path="dbrtl.dcp"/>
<File Path="IndyCore.dcp"/> <File Path="IndyCore.dcp"/>
<File Path="IndyProtocols.dcp"/> <File Path="IndyProtocols.dcp"/>
<File Path="IndySystem.dcp"/> <File Path="IndySystem.dcp"/>
<File Path="PascalScript_Core_D19.dcp"/> <File Path="PascalScript_Core_D19.dcp"/>
<File Path="rtl.dcp"/> <File Path="rtl.dcp"/>
<File Path="vcl.dcp"/> <File Path="vcl.dcp"/>
<File Path="vclx.dcp"/>
</ProjectSortOrder> </ProjectSortOrder>
</BorlandProject> </BorlandProject>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Binary file not shown.

View File

@@ -14,9 +14,15 @@ TCOMPONENTMANAGER32 BITMAP "Bitmap\Large\TComponentManager.bmp"
TCONTEXTMENU BITMAP "Bitmap\TContextMenu.bmp" TCONTEXTMENU BITMAP "Bitmap\TContextMenu.bmp"
TCONTEXTMENU16 BITMAP "Bitmap\Small\TContextMenu.bmp" TCONTEXTMENU16 BITMAP "Bitmap\Small\TContextMenu.bmp"
TCONTEXTMENU32 BITMAP "Bitmap\Large\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" TCURSORFIX BITMAP "Bitmap\TCursorFix.bmp"
TCURSORFIX16 BITMAP "Bitmap\Small\TCursorFix.bmp" TCURSORFIX16 BITMAP "Bitmap\Small\TCursorFix.bmp"
TCURSORFIX32 BITMAP "Bitmap\Large\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" TDOWNLOAD BITMAP "Bitmap\TDownload.bmp"
TDOWNLOAD16 BITMAP "Bitmap\Small\TDownload.bmp" TDOWNLOAD16 BITMAP "Bitmap\Small\TDownload.bmp"
TDOWNLOAD32 BITMAP "Bitmap\Large\TDownload.bmp" TDOWNLOAD32 BITMAP "Bitmap\Large\TDownload.bmp"
@@ -41,9 +47,18 @@ TSCROLLLISTBOX32 BITMAP "Bitmap\Large\TScrollListBox.bmp"
TSHORTCUTLABEL BITMAP "Bitmap\TShortcutLabel.bmp" TSHORTCUTLABEL BITMAP "Bitmap\TShortcutLabel.bmp"
TSHORTCUTLABEL16 BITMAP "Bitmap\Small\TShortcutLabel.bmp" TSHORTCUTLABEL16 BITMAP "Bitmap\Small\TShortcutLabel.bmp"
TSHORTCUTLABEL32 BITMAP "Bitmap\Large\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" TSPLASHSCREEN BITMAP "Bitmap\TSplashScreen.bmp"
TSPLASHSCREEN16 BITMAP "Bitmap\Small\TSplashScreen.bmp" TSPLASHSCREEN16 BITMAP "Bitmap\Small\TSplashScreen.bmp"
TSPLASHSCREEN32 BITMAP "Bitmap\Large\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" TVIRTUALPROGRAM BITMAP "Bitmap\TVirtualProgram.bmp"
TVIRTUALPROGRAM16 BITMAP "Bitmap\Small\TVirtualProgram.bmp" TVIRTUALPROGRAM16 BITMAP "Bitmap\Small\TVirtualProgram.bmp"
TVIRTUALPROGRAM32 BITMAP "Bitmap\Large\TVirtualProgram.bmp" TVIRTUALPROGRAM32 BITMAP "Bitmap\Large\TVirtualProgram.bmp"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

76
Source/Config.inc Normal file
View 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}

View File

@@ -3,21 +3,17 @@ unit uAdvCtrls;
////////////////////////////////////// //////////////////////////////////////
/// Lina Advanced Controls Unit /// /// Lina Advanced Controls Unit ///
/// **************************** /// /// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. /// /// (c) 2015 Dennis G�hlert a.o. ///
////////////////////////////////////// //////////////////////////////////////
{$IFNDEF MSWINDOWS} {$I 'Config.inc'}
{$IFDEF WARN_INCOMPATIBLEOS}
{$MESSAGE ERROR 'The "uAdvCtrls" unit is only available under MS-Windows OS'}
{$ENDIF}
{$ENDIF}
interface interface
uses uses
{ Standard-Units } { Standard-Units }
SysUtils, Classes, StdCtrls, Windows, Messages, Graphics, Controls, Printers, SysUtils, Classes, StdCtrls, ExtCtrls, Windows, Messages, Graphics, Controls,
Contnrs, Forms, Printers, Contnrs, Forms, Math,
{ Andere Package-Units } { Andere Package-Units }
uBase, uSysTools, uFileTools; uBase, uSysTools, uFileTools;
@@ -25,12 +21,19 @@ type
{ Hilfsklassen } { Hilfsklassen }
TMemoCaptionMode = (mcmAnyState,mcmUnfocusedOnly); TMemoCaptionMode = (mcmAnyState,mcmUnfocusedOnly);
TShortcutLabelState = (slsDefault,slsHovered,slsPressed); TShortcutLabelState = (slsDefault,slsHovered,slsPressed);
TSizePanelAllow = set of (spaResize,spaMove);
TPanelBorderStyle = bsNone..bsSizeable;
TValueEditAllow = set of (veaNumbers,veaLetters,veaSpaces,veaSeparators,veaOperators,veaOther);
type type
{ Ereignisse } { Ereignisse }
TPaintMemoPaintEvent = procedure(Sender: TObject) of object; TPaintMemoPaintEvent = procedure(Sender: TObject) of object;
type type
{ Hauptklassen }
{$IFNDEF NO_MULTIPLATFORM}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TCommandButton = class(TButton) TCommandButton = class(TButton)
protected protected
procedure CreateWnd; override; procedure CreateWnd; override;
@@ -67,6 +70,9 @@ type
property ReplaceCaption: Boolean read FReplaceCaption write SetReplaceCaption default False; property ReplaceCaption: Boolean read FReplaceCaption write SetReplaceCaption default False;
end; end;
{$IFNDEF NO_MULTIPLATFORM}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TScrollListBox = class(TListBox) TScrollListBox = class(TListBox)
protected protected
{ Protected-Deklarationen } { Protected-Deklarationen }
@@ -100,6 +106,9 @@ type
property WordWrap: Boolean read FWordWrap write SetWordWrap default False; property WordWrap: Boolean read FWordWrap write SetWordWrap default False;
end; end;
{$IFNDEF NO_MULTIPLATFORM}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TPaintMemo = class(TMemo) TPaintMemo = class(TMemo)
private private
{ Private-Deklarationen } { Private-Deklarationen }
@@ -120,6 +129,7 @@ type
{ Public-Deklarationen } { Public-Deklarationen }
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
procedure Clear; override;
property CaptionVisible: Boolean read FCaptionVisible default False; property CaptionVisible: Boolean read FCaptionVisible default False;
published published
{ Ereignisse} { Ereignisse}
@@ -162,6 +172,9 @@ type
property Visited: TColor read FVisited write SetVisited default clPurple; property Visited: TColor read FVisited write SetVisited default clPurple;
end; end;
{$IFNDEF NO_MULTIPLATFORM}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TShortcutLabel = class(TLabel) TShortcutLabel = class(TLabel)
protected protected
{ Protected-Deklarationen } { Protected-Deklarationen }
@@ -197,28 +210,72 @@ type
property StoreVisited: Boolean read FStoreVisited write FStoreVisited default True; property StoreVisited: Boolean read FStoreVisited write FStoreVisited default True;
end; end;
procedure Register; {$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 BmpToIco(Bitmap: TBitmap): TIcon;
function TargetVisited(Target: String): Boolean; function TargetVisited(Target: String): Boolean;
const 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 } { Messages }
BS_COMMANDLINK = $0000000E; BS_COMMANDLINK = $0000000E;
BM_SETIMAGE = $00F7; BM_SETIMAGE = $00F7;
@@ -232,10 +289,12 @@ var
implementation implementation
procedure Register; {$IFDEF ADD_COMPONENTREG}
begin procedure Register;
RegisterComponents(ComponentsPage,[TCommandButton,TScrollListBox,TPaintMemo,TShortcutLabel]); begin
end; RegisterComponents(ComponentsPage,[TCommandButton,TScrollListBox,TPaintMemo,TShortcutLabel,TSizePanel,TValueEdit]);
end;
{$ENDIF}
function BmpToIco(Bitmap: TBitmap): TIcon; function BmpToIco(Bitmap: TBitmap): TIcon;
begin begin
@@ -268,7 +327,7 @@ end;
constructor TCommandButton.Create(AOwner: TComponent); constructor TCommandButton.Create(AOwner: TComponent);
begin begin
inherited; inherited;
FAbout := TComponentAbout.Create(TCommandButton,CommandButtonComponent_Version,CommandButtonComponent_Copyright,CommandButtonComponent_Author); FAbout := TComponentAbout.Create(TCommandButton);
FCommandLink := False; FCommandLink := False;
FShield := False; FShield := False;
FIcon := TIcon.Create; FIcon := TIcon.Create;
@@ -379,7 +438,7 @@ end;
constructor TScrollListBox.Create(AOwner: TComponent); constructor TScrollListBox.Create(AOwner: TComponent);
begin begin
inherited; inherited;
FAbout := TComponentAbout.Create(TScrollListBox,ScrollListBoxComponent_Version,ScrollListBoxComponent_Copyright,ScrollListBoxComponent_Author); FAbout := TComponentAbout.Create(TScrollListBox);
FHorizontalScrollBar := False; FHorizontalScrollBar := False;
FWordWrap := False; FWordWrap := False;
end; end;
@@ -510,7 +569,7 @@ end;
constructor TPaintMemo.Create(AOwner: TComponent); constructor TPaintMemo.Create(AOwner: TComponent);
begin begin
inherited; inherited;
FAbout := TComponentAbout.Create(TPaintMemo,PaintMemoComponent_Version,PaintMemoComponent_Copyright,PaintMemoComponent_Author); FAbout := TComponentAbout.Create(TPaintMemo);
FShowCaption := True; FShowCaption := True;
FCaptionFont := TFont.Create; FCaptionFont := TFont.Create;
FCaptionFont.Assign(Font); FCaptionFont.Assign(Font);
@@ -529,6 +588,17 @@ begin
inherited; inherited;
end; 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); procedure TPaintMemo.SetShowCaption(Value: Boolean);
begin begin
FShowCaption := Value; FShowCaption := Value;
@@ -651,7 +721,7 @@ end;
constructor TShortcutLabel.Create(AOwner: TComponent); constructor TShortcutLabel.Create(AOwner: TComponent);
begin begin
inherited; inherited;
FAbout := TComponentAbout.Create(TShortcutLabel,ShortcutLabelComponent_Version,ShortcutLabelComponent_Copyright,ShortcutLabelComponent_Author); FAbout := TComponentAbout.Create(TShortcutLabel);
FState := slsDefault; FState := slsDefault;
FFont := TShortcutLabelFont.Create(Self); FFont := TShortcutLabelFont.Create(Self);
FHighlightVisited := True; FHighlightVisited := True;
@@ -741,6 +811,164 @@ begin
Font.Update; Font.Update;
end; 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 initialization
finalization finalization

View File

@@ -3,9 +3,11 @@ unit uBase;
////////////////////////////////////// //////////////////////////////////////
/// Lina Base Unit /// /// Lina Base Unit ///
/// **************************** /// /// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. /// /// (c) 2015 Dennis G�hlert a.o. ///
////////////////////////////////////// //////////////////////////////////////
{$I 'Config.inc'}
interface interface
{ Dies ist die Basis-Unit f�r die Lina-Komponenten bzw. Methoden und Klassen. { Dies ist die Basis-Unit f�r die Lina-Komponenten bzw. Methoden und Klassen.
@@ -16,6 +18,17 @@ uses
{ Standard-Units } { Standard-Units }
SysUtils, Classes, Dialogs, uSysTools; 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 type
TComponentAbout = class TComponentAbout = class
private private
@@ -30,6 +43,7 @@ type
{ Protected-Deklarationen } { Protected-Deklarationen }
property Component: TComponentClass read FComponent write FComponent; property Component: TComponentClass read FComponent write FComponent;
published published
{ Published-Deklarationen }
property Name: TComponentName read FName; property Name: TComponentName read FName;
property Version: ShortString read FVersion; property Version: ShortString read FVersion;
property Copyright: ShortString read FCopyright; property Copyright: ShortString read FCopyright;
@@ -37,21 +51,19 @@ type
property Homepage: ShortString read FHomepage; property Homepage: ShortString read FHomepage;
public public
{ Public-Deklarationen } { Public-Deklarationen }
constructor Create(Component: TComponentClass; Ver: ShortString = '1.0'; constructor Create(Component: TComponentClass; Ver:
Copy: ShortString = ''; Auth: ShortString = ''; Home: ShortString = ''); ShortString = ComponentsVersion; Copy: ShortString = ComponentsCopyright;
Auth: ShortString = ComponentsAuthor;
Home: ShortString = ComponentsHomepage);
{ �ber-Dialog } { �ber-Dialog }
procedure AboutDlg; procedure AboutDlg;
end; end;
const
ComponentsPage = 'Lina';
About_Title = 'About...';
implementation implementation
constructor TComponentAbout.Create(Component: TComponentClass; constructor TComponentAbout.Create(Component: TComponentClass;
Ver: ShortString = '1.0'; Copy: ShortString = ''; Auth: ShortString = ''; Ver: ShortString = ComponentsVersion; Copy: ShortString = ComponentsCopyright;
Home: ShortString = ''); Auth: ShortString = ComponentsAuthor; Home: ShortString = ComponentsHomepage);
begin begin
FComponent := Component; FComponent := Component;
FName := ExtractClassName(Component.ClassName); FName := ExtractClassName(Component.ClassName);

View File

@@ -1,5 +1,13 @@
unit uCalc; unit uCalc;
//////////////////////////////////////
/// Lina Calculator Unit ///
/// **************************** ///
/// (c) 2015 Dennis G�hlert a.o. ///
//////////////////////////////////////
{$I 'Config.inc'}
interface interface
uses uses
@@ -73,6 +81,9 @@ type
function IndexOf(Name: String): Integer; function IndexOf(Name: String): Integer;
end; end;
{$IFNDEF NO_MULTIPLATFORM}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TCalculator = class(TComponent) TCalculator = class(TComponent)
private private
{ Ereignisse} { Ereignisse}
@@ -128,13 +139,11 @@ type
property Options: TCalculatorOptions read FOptions write FOptions; property Options: TCalculatorOptions read FOptions write FOptions;
end; end;
procedure Register; {$IFDEF ADD_COMPONENTREG}
procedure Register;
{$ENDIF}
const const
{ Meta-Daten }
CalculatorComponent_Version = '1.0';
CalculatorComponent_Copyright = 'Copyright � 2015';
CalculatorComponent_Author = 'Dennis G�hlert a.o.';
{ Sonderzeichen f�r Ausdr�cke } { Sonderzeichen f�r Ausdr�cke }
CalcSeperators = ['.',',']; CalcSeperators = ['.',','];
CalcBrackets = ['(',')']; CalcBrackets = ['(',')'];
@@ -143,10 +152,12 @@ const
implementation implementation
procedure Register; {$IFDEF ADD_COMPONENTREG}
begin procedure Register;
RegisterComponents(ComponentsPage,[TCalculator]); begin
end; RegisterComponents(ComponentsPage,[TCalculator]);
end;
{$ENDIF}
{ ---------------------------------------------------------------------------- { ----------------------------------------------------------------------------
TCalculatorConstant TCalculatorConstant
@@ -218,7 +229,7 @@ end;
constructor TCalculator.Create(AOwner: TComponent); constructor TCalculator.Create(AOwner: TComponent);
begin begin
inherited; inherited;
FAbout := TComponentAbout.Create(TCalculator,CalculatorComponent_Version,CalculatorComponent_Copyright,CalculatorComponent_Author); FAbout := TComponentAbout.Create(TCalculator);
FExpression := ''; FExpression := '';
FValue := 0; FValue := 0;
FConstants := TCalculatorConstants.Create(TCalculatorConstant,Self); FConstants := TCalculatorConstants.Create(TCalculatorConstant,Self);

View File

@@ -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.

View File

@@ -3,14 +3,10 @@ unit uFileCtrls;
////////////////////////////////////// //////////////////////////////////////
/// Lina File Controls Unit /// /// Lina File Controls Unit ///
/// **************************** /// /// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. /// /// (c) 2015 Dennis G�hlert a.o. ///
////////////////////////////////////// //////////////////////////////////////
{$IFNDEF MSWINDOWS} {$I 'Config.inc'}
{$IFDEF WARN_INCOMPATIBLEOS}
{$MESSAGE ERROR 'The "uFileCtrls" unit is only available under MS-Windows OS'}
{$ENDIF}
{$ENDIF}
interface interface
@@ -18,7 +14,7 @@ uses
{ Standard-Units } { Standard-Units }
SysUtils, Classes, Windows, Registry, SysUtils, Classes, Windows, Registry,
{ Andere Package-Units } { Andere Package-Units }
uBase; uBase, uSysTools;
type type
{ Fehlermeldungen } { Fehlermeldungen }
@@ -57,6 +53,9 @@ type
TContextMenuItems = class(TCollection); TContextMenuItems = class(TCollection);
{$IFNDEF NO_MULTIPLATFORM}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TContextMenu = class(TComponent) TContextMenu = class(TComponent)
private private
{ Private-Deklarationen } { Private-Deklarationen }
@@ -98,25 +97,25 @@ type
property OnCreateEntry: TContextMenuCreateEntryEvent read FCreateEntryEvent write FCreateEntryEvent; property OnCreateEntry: TContextMenuCreateEntryEvent read FCreateEntryEvent write FCreateEntryEvent;
end; end;
procedure Register; {$IFDEF ADD_COMPONENTREG}
procedure Register;
{$ENDIF}
function ExtStrToRegKey(ExtStr: String): String; function ExtStrToRegKey(ExtStr: String): String;
const const
{ Meta-Daten }
ContextMenuComponent_Version = '1.0';
ContextMenuComponent_Copyright = 'Copyright � 2015';
ContextMenuComponent_Author = 'Dennis G�hlert a.o.';
{ Sonstige } { Sonstige }
ContextRegPathShell = '\shell'; ContextRegPathShell = '\shell';
ContextRegPathCommand = '\command'; ContextRegPathCommand = '\command';
implementation implementation
procedure Register; {$IFDEF ADD_COMPONENTREG}
begin procedure Register;
RegisterComponents(ComponentsPage,[TContextMenu]); begin
end; RegisterComponents(ComponentsPage,[TContextMenu]);
end;
{$ENDIF}
function ExtStrToRegKey(ExtStr: String): String; function ExtStrToRegKey(ExtStr: String): String;
begin begin
@@ -181,7 +180,7 @@ end;
constructor TContextMenu.Create(AOwner: TComponent); constructor TContextMenu.Create(AOwner: TComponent);
begin begin
inherited; inherited;
FAbout := TComponentAbout.Create(TContextMenu,ContextMenuComponent_Version,ContextMenuComponent_Copyright,ContextMenuComponent_Author); FAbout := TComponentAbout.Create(TContextMenu);
FItems := TContextMenuItems.Create(TContextMenuItem); FItems := TContextMenuItems.Create(TContextMenuItem);
FExt := '*'; FExt := '*';
FAutoLoad := False; FAutoLoad := False;
@@ -208,7 +207,7 @@ begin
begin begin
for Index := 1 to Length(Value) do for Index := 1 to Length(Value) do
begin begin
if not (Value[Index] in ['0'..'9','A'..'Z','a'..'z']) then if not (Value[Index] in Numbers + Letters) then
begin begin
raise EInvalidExt.Create('Invalid file extension value'); raise EInvalidExt.Create('Invalid file extension value');
end; end;
@@ -246,7 +245,7 @@ begin
begin begin
for Index := 1 to Length(Value) do for Index := 1 to Length(Value) do
begin begin
if not (Value[Index] in ['0'..'9','A'..'Z','a'..'z']) then if not (Value[Index] in Numbers + Letters) then
begin begin
raise EInvalidAlias.Create('Invalid extension alias value'); raise EInvalidAlias.Create('Invalid extension alias value');
end; end;

View File

@@ -3,14 +3,10 @@ unit uFileTools;
////////////////////////////////////// //////////////////////////////////////
/// Lina File Tools Unit /// /// Lina File Tools Unit ///
/// **************************** /// /// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. /// /// (c) 2015 Dennis G�hlert a.o. ///
////////////////////////////////////// //////////////////////////////////////
{$IFNDEF MSWINDOWS} {$I 'Config.inc'}
{$IFDEF WARN_INCOMPATIBLEOS}
{$MESSAGE ERROR 'The "uFileTools" unit is only available under MS-Windows OS'}
{$ENDIF}
{$ENDIF}
interface interface
@@ -166,14 +162,15 @@ const
B_TO_TB = -4; B_TO_TB = -4;
{ Dateierweiterungen f�r ListFiles() } { Dateierweiterungen f�r ListFiles() }
FXT_ANY = '*.*'; FXT_ANY = '*.*';
FXT_EXE = '*.exe'; FXT_EXEC: array [0..2] of String = ('*.exe','*.com','*.scr');
FXT_TXT = '*.txt'; FXT_TEXT: array [0..1] of String = ('*.txt','*.rtf');
{ Vielleicht sp�ter mal implementieren... FXT_IMAGE: array [0..6] of String = ('*.jpg','*.jpeg','*.png','*.tif','*.tiff','*.bmp','*.gif');
FXT_IMG = ('*.jpg','*.jpeg','*.png','*.tif','*.tiff','*.bmp','*.gif'); FXT_SOURCE: array [0..3] of String = ('*.pas','*.dpr','*.dpk','*.dfm');
FXT_PAS = ('*.pas','*.dpr','*.dpk','*.dfm'); FXT_OFFICE: array [0..2] of String = ('*.doc','*.xls','*.ppt');
FXT_MSO = ('*.doc','*.xls','*.ppt'); FXT_OFFICEX: array [0..2] of String = ('*.docx','*.xlsx','*.pptx');
FXT_MSI = ('*.msi'); FXT_INSTALL: array [0..1] of String = ('*.msi','*.msu');
FXT_IMG = ('*.img','*.iso'); } FXT_DISK: array [0..2] of String = ('*.img','*.iso','*.bin');
FXT_ARCHIVE: array [0..4] of String = ('*.zip','*.rar','*.7z','*.tar','*.gz');
var var
InvalidFileNames: TInvalidFileNames; InvalidFileNames: TInvalidFileNames;

View File

@@ -3,14 +3,10 @@ unit uFrmCtrls;
////////////////////////////////////// //////////////////////////////////////
/// Lina Form Controls Unit /// /// Lina Form Controls Unit ///
/// **************************** /// /// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. /// /// (c) 2015 Dennis G�hlert a.o. ///
////////////////////////////////////// //////////////////////////////////////
{$IFNDEF MSWINDOWS} {$I 'Config.inc'}
{$IFDEF WARN_INCOMPATIBLEOS}
{$MESSAGE ERROR 'The "uFrmCtrls" unit is only available under MS-Windows OS'}
{$ENDIF}
{$ENDIF}
interface interface
@@ -223,6 +219,9 @@ type
property Interval: Cardinal read GetInterval write SetInterval default 1000; property Interval: Cardinal read GetInterval write SetInterval default 1000;
end; end;
{$IFNDEF NO_MULTIPLATFORM}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TSplashScreen = class(TComponent) TSplashScreen = class(TComponent)
private private
{ Private-Deklarationen } { Private-Deklarationen }
@@ -292,7 +291,6 @@ type
end; end;
{ T...Manager } { T...Manager }
TComponentManager = class(TComponent) TComponentManager = class(TComponent)
private private
{ Private-Deklarationen } { Private-Deklarationen }
@@ -312,6 +310,9 @@ type
property About: TComponentAbout read FAbout; property About: TComponentAbout read FAbout;
end; end;
{$IFNDEF NO_MULTIPLATFORM}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TProgressBarManager = class(TComponentManager) TProgressBarManager = class(TComponentManager)
private private
{ Private-Deklarationen } { Private-Deklarationen }
@@ -337,6 +338,9 @@ type
property Mode: TProgressBarManagerMode read FMode write SetMode default pmmNone; property Mode: TProgressBarManagerMode read FMode write SetMode default pmmNone;
end; end;
{$IFNDEF NO_MULTIPLATFORM}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TListBoxManager = class(TComponentManager) TListBoxManager = class(TComponentManager)
private private
{ Private-Deklarationen } { Private-Deklarationen }
@@ -418,6 +422,9 @@ type
TParamReferences = class(TCollection); TParamReferences = class(TCollection);
{$IFNDEF NO_MULTIPLATFORM}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TParamDefiner = class(TComponent) TParamDefiner = class(TComponent)
private private
{ Private-Deklarationen } { Private-Deklarationen }
@@ -452,32 +459,18 @@ type
procedure SetTaskBarVisibe(const Value: Boolean); procedure SetTaskBarVisibe(const Value: Boolean);
procedure ListParams(var OutList: TStrings); procedure ListParams(var OutList: TStrings);
procedure Register; {$IFDEF ADD_COMPONENTREG}
procedure Register;
const {$ENDIF}
{ 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.';
implementation implementation
procedure Register; {$IFDEF ADD_COMPONENTREG}
begin procedure Register;
RegisterComponents(ComponentsPage,[TSplashScreen,TProgressBarManager,TListBoxManager,TParamDefiner]); begin
end; RegisterComponents(ComponentsPage,[TSplashScreen,TProgressBarManager,TListBoxManager,TParamDefiner]);
end;
{$ENDIF}
procedure ShowMessageVal(const Msg: Integer); procedure ShowMessageVal(const Msg: Integer);
begin begin
@@ -1043,7 +1036,7 @@ begin
FAnimationSpeed := 10; FAnimationSpeed := 10;
FVisible := False; FVisible := False;
FAbout := TComponentAbout.Create(TSplashScreen,SplashScreenComponent_Version,SplashScreenComponent_Copyright,SplashScreenComponent_Author); FAbout := TComponentAbout.Create(TSplashScreen);
FSplashForm := TSplashForm.Create; FSplashForm := TSplashForm.Create;
FSplashForm.FormObject.OnShow := FormObjectShow; FSplashForm.FormObject.OnShow := FormObjectShow;
FSplashForm.FormObject.OnHide := FormObjectHide; FSplashForm.FormObject.OnHide := FormObjectHide;
@@ -1396,7 +1389,7 @@ end;
constructor TProgressBarManager.Create(AOwner: TComponent); constructor TProgressBarManager.Create(AOwner: TComponent);
begin begin
inherited; inherited;
FAbout := TComponentAbout.Create(TProgressBarManager,ProgressBarManagerComponent_Version,ProgressBarManagerComponent_Copyright,ProgressBarManagerComponent_Author); FAbout := TComponentAbout.Create(TProgressBarManager);
FMode := pmmNone; FMode := pmmNone;
Update; Update;
@@ -1470,7 +1463,7 @@ end;
constructor TListBoxManager.Create(AOwner: TComponent); constructor TListBoxManager.Create(AOwner: TComponent);
begin begin
inherited; inherited;
FAbout := TComponentAbout.Create(TListBoxManager,ListBoxManagerComponent_Version,ListBoxManagerComponent_Copyright,ListBoxManagerComponent_Author); FAbout := TComponentAbout.Create(TListBoxManager);
FMode := lmmNone; FMode := lmmNone;
FFilterOptions := [sfoCaseSensitive,sfoForceTrim,sfoDefaultVisible]; FFilterOptions := [sfoCaseSensitive,sfoForceTrim,sfoDefaultVisible];
FilteredList := TFilteredStringList.Create; FilteredList := TFilteredStringList.Create;
@@ -1805,7 +1798,7 @@ end;
constructor TParamDefiner.Create; constructor TParamDefiner.Create;
begin begin
inherited; inherited;
FAbout := TComponentAbout.Create(TParamDefiner,ParamDefinerComponent_Version,ParamDefinerComponent_Copyright,ParamDefinerComponent_Author); FAbout := TComponentAbout.Create(TParamDefiner);
FReferences := TParamReferences.Create(TParamReference); FReferences := TParamReferences.Create(TParamReference);
end; end;

View File

@@ -3,13 +3,15 @@ unit uInit;
////////////////////////////////////// //////////////////////////////////////
/// Lina Initialization Unit /// /// Lina Initialization Unit ///
/// **************************** /// /// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. /// /// (c) 2015 Dennis G�hlert a.o. ///
////////////////////////////////////// //////////////////////////////////////
{$I 'Config.inc'}
interface interface
{ Dies ist die Initialisierungs-Unit f�r das Lina Components Package. { 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! } werden! }
uses uses
@@ -39,7 +41,7 @@ begin
SplashBitmap := TBitmap.Create; SplashBitmap := TBitmap.Create;
try try
SplashBitmap.LoadFromResourceName(HInstance,'LINA'); SplashBitmap.LoadFromResourceName(HInstance,'LINA');
(ToolsAPI.SplashScreenServices as IOTASplashScreenServices).AddPluginBitmap( (SplashScreenServices as IOTASplashScreenServices).AddPluginBitmap(
Package_Name,SplashBitmap.Handle,False,Package_License,Package_SKU); Package_Name,SplashBitmap.Handle,False,Package_License,Package_SKU);
finally finally
SplashBitmap.Free; SplashBitmap.Free;
@@ -51,7 +53,7 @@ begin
AboutBitmap := TBitmap.Create; AboutBitmap := TBitmap.Create;
try try
AboutBitmap.LoadFromResourceName(HInstance,'LINA'); 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); Package_Name,Package_Description,AboutBitmap.Handle,False,Package_License,Package_SKU);
except except
AboutBitmap.Free; AboutBitmap.Free;
@@ -68,59 +70,6 @@ begin
end; end;
initialization 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 } { Package-Registrierung }
{$IFDEF ADD_SPLASHENTRY} {$IFDEF ADD_SPLASHENTRY}
RegisterPackageOnSplash; RegisterPackageOnSplash;
@@ -129,6 +78,7 @@ initialization
RegisterPackageOnAbout; RegisterPackageOnAbout;
{$ENDIF} {$ENDIF}
finalization finalization
{ Package-Deregistrierung } { Package-Deregistrierung }
{$IFDEF ADD_ABOUTENTRY} {$IFDEF ADD_ABOUTENTRY}

View File

@@ -3,22 +3,18 @@ unit uLocalMgr;
////////////////////////////////////// //////////////////////////////////////
/// Lina Localize Manager Unit /// /// Lina Localize Manager Unit ///
/// **************************** /// /// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. /// /// (c) 2015 Dennis G�hlert a.o. ///
////////////////////////////////////// //////////////////////////////////////
{$IFNDEF MSWINDOWS} {$I 'Config.inc'}
{$IFDEF WARN_INCOMPATIBLEOS}
{$MESSAGE ERROR 'The "uLocalMgr" unit is only available under MS-Windows OS'}
{$ENDIF}
{$ENDIF}
interface interface
uses uses
{ Standard-Units } { Standard-Units }
SysUtils, Classes, Controls, Forms, TypInfo, SysUtils, Classes, Controls, Forms, TypInfo, IniFiles,
{ Andere Package-Units } { Andere Package-Units }
uBase, uSysTools; uBase, uSysTools, uFileTools;
type type
{ Fehlermeldungen } { Fehlermeldungen }
@@ -52,6 +48,7 @@ type
FIndent: String; FIndent: String;
FAddress: String; FAddress: String;
FCharacter: String; FCharacter: String;
FSpecial: String;
{ Methoden } { Methoden }
procedure SetComment(Value: String); procedure SetComment(Value: String);
procedure SetSeparator(Value: String); procedure SetSeparator(Value: String);
@@ -59,6 +56,7 @@ type
procedure SetIndent(Value: String); procedure SetIndent(Value: String);
procedure SetAddress(Value: String); procedure SetAddress(Value: String);
procedure SetCharacter(Value: String); procedure SetCharacter(Value: String);
procedure SetSpecial(Value: String);
public public
{ Public-Deklarationen } { Public-Deklarationen }
constructor Create; constructor Create;
@@ -72,6 +70,30 @@ type
property Indent: String read FIndent write SetIndent; property Indent: String read FIndent write SetIndent;
property Address: String read FAddress write SetAddress; property Address: String read FAddress write SetAddress;
property Character: String read FCharacter write SetCharacter; 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; end;
TLocalization = class(TCollectionItem) TLocalization = class(TCollectionItem)
@@ -82,10 +104,12 @@ type
FTag: TLanguageTag; FTag: TLanguageTag;
FFormat: TLocalizationFormat; FFormat: TLocalizationFormat;
FEncoding: TCharEncoding; FEncoding: TCharEncoding;
FConverter: TLocalizationImporter;
{ Methoden } { Methoden }
function GetDisplayName: String; override; function GetDisplayName: String; override;
function GetLines: TStrings; function GetLines: TStrings;
procedure SetLines(Value: TStrings); procedure SetLines(Value: TStrings);
procedure SetName(Value: ShortString);
procedure SetTag(Value: TLanguageTag); procedure SetTag(Value: TLanguageTag);
function GetFormat: TLocalizationFormat; function GetFormat: TLocalizationFormat;
procedure SetFormat(Value: TLocalizationFormat); procedure SetFormat(Value: TLocalizationFormat);
@@ -107,11 +131,12 @@ type
published published
{ Published-Deklarationen } { Published-Deklarationen }
{ Eigenschaften } { Eigenschaften }
property Name: ShortString read FName write FName; property Name: ShortString read FName write SetName;
property Tag: TLanguageTag read FTag write SetTag; property Tag: TLanguageTag read FTag write SetTag;
property Lines: TStrings read GetLines write SetLines; property Lines: TStrings read GetLines write SetLines;
property Format: TLocalizationFormat read GetFormat write SetFormat; property Format: TLocalizationFormat read GetFormat write SetFormat;
property Encoding: TCharEncoding read FEncoding write SetEncoding default {$IFDEF NO_UNICODE} ceUTF8 {$ELSE} ceUnicode {$ENDIF}; property Encoding: TCharEncoding read FEncoding write SetEncoding default {$IFDEF NO_UNICODE} ceUTF8 {$ELSE} ceUnicode {$ENDIF};
property Converter: TLocalizationImporter read FConverter write FConverter;
end; end;
TLocalizationManager = class; TLocalizationManager = class;
@@ -125,6 +150,27 @@ type
constructor Create(ItemClass: TCollectionItemClass; AManager: TLocalizationManager); constructor Create(ItemClass: TCollectionItemClass; AManager: TLocalizationManager);
destructor Destroy; override; destructor Destroy; override;
function IndexOfTag(const Tag: TLanguageTag): Integer; 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; end;
TLocalizationData = class TLocalizationData = class
@@ -134,6 +180,7 @@ type
Indents: array of TStringReferenceDataArray; Indents: array of TStringReferenceDataArray;
Values: TStringArray; Values: TStringArray;
FManager: TLocalizationManager; FManager: TLocalizationManager;
FExporter: TLocalizationExporter;
protected protected
{ Protected-Deklarationen } { Protected-Deklarationen }
procedure AddSection(Section: String); procedure AddSection(Section: String);
@@ -156,6 +203,7 @@ type
procedure WriteInteger(const Section,Indent: String; Value: Integer); procedure WriteInteger(const Section,Indent: String; Value: Integer);
procedure WriteFloat(const Section,Indent: String; Value: Extended); procedure WriteFloat(const Section,Indent: String; Value: Extended);
procedure Address(const Section,Indent,Target: String); procedure Address(const Section,Indent,Target: String);
property Exporter: TLocalizationExporter read FExporter write FExporter;
end; end;
TLocalizationReferences = class(TCollection) TLocalizationReferences = class(TCollection)
@@ -178,6 +226,7 @@ type
FReference: PString; FReference: PString;
FField: String; FField: String;
{ Methoden } { Methoden }
function GetDisplayName: String; override;
procedure SetIndent(Value: String); procedure SetIndent(Value: String);
procedure Apply; procedure Apply;
public public
@@ -217,6 +266,9 @@ type
property ApplyMode: TLocalizationApplyMode read FApplyMode write SetApplyMode default laCustom; property ApplyMode: TLocalizationApplyMode read FApplyMode write SetApplyMode default laCustom;
end; end;
{$IFNDEF NO_MULTIPLATFORM}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TLocalizationManager = class(TComponent) TLocalizationManager = class(TComponent)
private private
{ Ereignisse} { Ereignisse}
@@ -257,20 +309,18 @@ type
property Applier: TLocalizationApplier read FApplier write FApplier; property Applier: TLocalizationApplier read FApplier write FApplier;
end; end;
procedure Register; {$IFDEF ADD_COMPONENTREG}
procedure Register;
const {$ENDIF}
{ Meta-Daten }
LocalizationManagerComponent_Version = '1.0';
LocalizationManagerComponent_Copyright = 'Copyright � 2015';
LocalizationManagerComponent_Author = 'Dennis G�hlert a.o.';
implementation implementation
procedure Register; {$IFDEF ADD_COMPONENTREG}
begin procedure Register;
RegisterComponents(ComponentsPage,[TLocalizationManager]); begin
end; RegisterComponents(ComponentsPage,[TLocalizationManager]);
end;
{$ENDIF}
{ ---------------------------------------------------------------------------- { ----------------------------------------------------------------------------
TLocalizationFormat TLocalizationFormat
@@ -285,6 +335,7 @@ begin
FHeader := '*'; FHeader := '*';
FAddress := '@'; FAddress := '@';
FCharacter := '$#'; FCharacter := '$#';
FSpecial := '!';
end; end;
destructor TLocalizationFormat.Destroy; destructor TLocalizationFormat.Destroy;
@@ -297,7 +348,7 @@ procedure TLocalizationFormat.SetComment(Value: String);
var var
Index: Integer; Index: Integer;
begin 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 begin
raise EInvalidFormat.Create('Invalid localization format for property: "Comment"'); raise EInvalidFormat.Create('Invalid localization format for property: "Comment"');
end; end;
@@ -315,7 +366,7 @@ procedure TLocalizationFormat.SetSeparator(Value: String);
var var
Index: Integer; Index: Integer;
begin 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 begin
raise EInvalidFormat.Create('Invalid localization format for property: "Separator"'); raise EInvalidFormat.Create('Invalid localization format for property: "Separator"');
end; end;
@@ -333,7 +384,7 @@ procedure TLocalizationFormat.SetHeader(Value: String);
var var
Index: Integer; Index: Integer;
begin begin
if ArrayPos(Value,[FComment,FSeparator,FIndent,FAddress,FCharacter]) <> -1 then if ArrayPos(Value,[FComment,FSeparator,FIndent,FAddress,FCharacter,FSpecial]) <> -1 then
begin begin
raise EInvalidFormat.Create('Invalid localization format for property: "Header"'); raise EInvalidFormat.Create('Invalid localization format for property: "Header"');
end; end;
@@ -351,7 +402,7 @@ procedure TLocalizationFormat.SetIndent(Value: String);
var var
Index: Integer; Index: Integer;
begin begin
if ArrayPos(Value,[FComment,FSeparator,FHeader,FAddress,FCharacter]) <> -1 then if ArrayPos(Value,[FComment,FSeparator,FHeader,FAddress,FCharacter,FSpecial]) <> -1 then
begin begin
raise EInvalidFormat.Create('Invalid localization format for property: "Indent"'); raise EInvalidFormat.Create('Invalid localization format for property: "Indent"');
end; end;
@@ -369,7 +420,7 @@ procedure TLocalizationFormat.SetAddress(Value: String);
var var
Index: Integer; Index: Integer;
begin 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 begin
raise EInvalidFormat.Create('Invalid localization format for property: "Address"'); raise EInvalidFormat.Create('Invalid localization format for property: "Address"');
end; end;
@@ -387,7 +438,7 @@ procedure TLocalizationFormat.SetCharacter(Value: String);
var var
Index: Integer; Index: Integer;
begin 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 begin
raise EInvalidFormat.Create('Invalid localization format for property: "Character"'); raise EInvalidFormat.Create('Invalid localization format for property: "Character"');
end; end;
@@ -401,6 +452,109 @@ begin
FCharacter := Value; FCharacter := Value;
end; 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 TLocalization
---------------------------------------------------------------------------- } ---------------------------------------------------------------------------- }
@@ -412,12 +566,14 @@ begin
FFormat := TLocalizationFormat.Create; FFormat := TLocalizationFormat.Create;
FTag := 'L' + IntToStrMinLength(ID,2); FTag := 'L' + IntToStrMinLength(ID,2);
Encoding := {$IFDEF NO_UNICODE} ceUTF8 {$ELSE} ceUnicode {$ENDIF}; Encoding := {$IFDEF NO_UNICODE} ceUTF8 {$ELSE} ceUnicode {$ENDIF};
FConverter := TLocalizationImporter.Create(Self);
end; end;
constructor TLocalization.Create(Collection: TCollection; const AFileName: TFileName); constructor TLocalization.Create(Collection: TCollection; const AFileName: TFileName);
begin begin
Create(Collection); Create(Collection);
Lines.LoadFromFile(AFileName); Lines.LoadFromFile(AFileName);
FConverter.Free;
end; end;
destructor TLocalization.Destroy; destructor TLocalization.Destroy;
@@ -449,6 +605,7 @@ end;
procedure TLocalization.SetTag(Value: TLanguageTag); procedure TLocalization.SetTag(Value: TLanguageTag);
begin begin
Value := Trim(Value);
if ((Collection as TLocalizations).IndexOfTag(Value) > -1) and if ((Collection as TLocalizations).IndexOfTag(Value) > -1) and
((Collection as TLocalizations).IndexOfTag(Value) <> Index)then ((Collection as TLocalizations).IndexOfTag(Value) <> Index)then
begin begin
@@ -459,6 +616,16 @@ begin
end; end;
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; function TLocalization.GetFormat: TLocalizationFormat;
begin begin
Result := FFormat; Result := FFormat;
@@ -516,13 +683,24 @@ function TLocalization.Apply: Boolean;
Die Syntax entspricht den in der TLocalizationFormat-Klasse festgelegten Die Syntax entspricht den in der TLocalizationFormat-Klasse festgelegten
Bausteinen und Einstellungen, die zur Laufzeit f�r jede Sprache Individuell 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 var
Position: (posPrefix,posIndent,posSeparator,posValue); Position: (posPrefix,posIndent,posSeparator,posValue);
Line: Integer; Line: Integer;
Complete: Boolean; Complete: Boolean;
Finished: Boolean; Finished: Boolean;
Header: Boolean; Header: Boolean;
Special: Boolean;
Address: Boolean; Address: Boolean;
Character: Boolean; Character: Boolean;
Current: PChar; Current: PChar;
@@ -549,6 +727,7 @@ begin
//Zeilenanfang //Zeilenanfang
Position := posPrefix; Position := posPrefix;
Header := False; Header := False;
Special := False;
Address := False; Address := False;
Complete := False; Complete := False;
Finished := False; Finished := False;
@@ -562,14 +741,15 @@ 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 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 begin
//Zeichen zu Block hinzuf�gen //Zeichen zu Block hinzuf�gen
if Character = False then if Current^ <> #0 then
begin begin
Block := Block + Current^; if Character = False then
if address = true then begin
address := true; Block := Block + Current^;
end else end else
begin begin
Ordinal := Ordinal + Current^; Ordinal := Ordinal + Current^;
end;
end; end;
if (Current^ = #0{@Lines.Strings[Line][Length(Lines.Strings[Line])]}) or ((Character = True) and (Current^ in Spaces)) then if (Current^ = #0{@Lines.Strings[Line][Length(Lines.Strings[Line])]}) or ((Character = True) and (Current^ in Spaces)) then
begin begin
@@ -645,7 +825,7 @@ begin
(Address = True) then (Address = True) then
begin begin
//Block fertig //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 begin
if Position = posSeparator then if Position = posSeparator then
begin begin
@@ -660,25 +840,106 @@ begin
//Ende von Value //Ende von Value
if (Finished = False) and (Block <> Format.Comment) then if (Finished = False) and (Block <> Format.Comment) then
begin begin
if Address = False then //Ende von Special
if Special = True then
begin begin
//Wert if Length(Indent) = 0 then
(Collection as TLocalizations).FManager.Data.WriteString(Section,Indent,TrimRight(Block));
end else
begin
//Adressierung
Complete := (Current^ = #0{@Lines.Strings[Line][Length(Lines.Strings[Line])]});
if (Collection as TLocalizations).FManager.Data.IndentExists(Section,Block) = True then
begin begin
(Collection as TLocalizations).FManager.Data.Address(Section,Indent,Block); Indent := LowerCase(Block);
Finished := True; Block := '';
Block := ''; end;
Inc(Current); if Indent = Specials[0] then
Continue; begin
//LOC abc
Name := Block;
end else end else
begin begin
RaiseParseErrorUndeclared(Block,Line,Current,Length(Block)); if Indent = Specials[1] then
Exit; 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
(Collection as TLocalizations).FManager.Data.WriteString(Section,Indent,TrimRight(Block));
end else
begin
//Adressierung
Complete := (Current^ = #0{@Lines.Strings[Line][Length(Lines.Strings[Line])]});
if (Collection as TLocalizations).FManager.Data.IndentExists(Section,Block) = True then
begin
(Collection as TLocalizations).FManager.Data.Address(Section,Indent,Block);
Finished := True;
Block := '';
Inc(Current);
Continue;
end else
begin
RaiseParseErrorUndeclared(Block,Line,Current,Length(Block));
Exit;
end;
end; end;
end; end;
end; end;
@@ -693,11 +954,12 @@ begin
begin begin
case Position of case Position of
posPrefix: begin 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 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 begin
Header := (Length(Format.Header) = 0); Header := (Length(Format.Header) = 0);
Special := (Length(Format.Special) = 0);
Position := posIndent; Position := posIndent;
Continue; Continue;
end else end else
@@ -707,14 +969,30 @@ begin
end; end;
end; end;
Header := (Block = Format.Header); Header := (Block = Format.Header);
Special := (Block = Format.Special);
Inc(Position); Inc(Position);
end; end;
posIndent: begin posIndent: begin
Indent := LowerCase(TrimRight(Block));
if Header = False then if Header = False then
begin begin
Inc(Position); 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; end;
Indent := TrimRight(Block);
end; end;
posSeparator: begin posSeparator: begin
Address := (Block = Format.Address); Address := (Block = Format.Address);
@@ -775,6 +1053,125 @@ begin
end; end;
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 TLocalizationData
---------------------------------------------------------------------------- } ---------------------------------------------------------------------------- }
@@ -783,11 +1180,13 @@ constructor TLocalizationData.Create(AManager: TLocalizationManager);
begin begin
inherited Create; inherited Create;
FManager := AManager; FManager := AManager;
FExporter := TLocalizationExporter.Create(Self);
end; end;
destructor TLocalizationData.Destroy; destructor TLocalizationData.Destroy;
begin begin
FManager := nil; FManager := nil;
FExporter.Free;
inherited; inherited;
end; end;
@@ -975,6 +1374,20 @@ begin
inherited; inherited;
end; 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); procedure TLocalizationReference.SetIndent(Value: String);
var var
Index: Integer; Index: Integer;
@@ -1127,7 +1540,7 @@ end;
constructor TLocalizationManager.Create(AOwnder: TComponent); constructor TLocalizationManager.Create(AOwnder: TComponent);
begin begin
inherited; inherited;
FAbout := TComponentAbout.Create(TLocalizationManager,LocalizationManagerComponent_Version,LocalizationManagerComponent_Copyright,LocalizationManagerComponent_Author); FAbout := TComponentAbout.Create(TLocalizationManager);
FLocalizations := TLocalizations.Create(TLocalization,Self); FLocalizations := TLocalizations.Create(TLocalization,Self);
FData := TLocalizationData.Create(Self); FData := TLocalizationData.Create(Self);
FReferences := TLocalizationReferences.Create(TLocalizationReference,Self); FReferences := TLocalizationReferences.Create(TLocalizationReference,Self);

View File

@@ -3,14 +3,10 @@ unit uScriptMgr;
////////////////////////////////////// //////////////////////////////////////
/// Lina Script Manager Unit /// /// Lina Script Manager Unit ///
/// **************************** /// /// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. /// /// (c) 2015 Dennis G�hlert a.o. ///
////////////////////////////////////// //////////////////////////////////////
{$IFNDEF MSWINDOWS} {$I 'Config.inc'}
{$IFDEF WARN_INCOMPATIBLEOS}
{$MESSAGE ERROR 'The "uScriptMgr" unit is only available under MS-Windows OS'}
{$ENDIF}
{$ENDIF}
interface interface
@@ -78,6 +74,9 @@ type
procedure Delete(Plugin: TPSPlugin); procedure Delete(Plugin: TPSPlugin);
end; end;
{$IFNDEF NO_MULTIPLATFORM}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TScriptManager = class(TComponent) TScriptManager = class(TComponent)
private private
{ Private-Deklarationen } { Private-Deklarationen }
@@ -171,13 +170,11 @@ type
procedure AddPlugin(PluginList: TPSPlugins; Plugin: TPSPlugin); procedure AddPlugin(PluginList: TPSPlugins; Plugin: TPSPlugin);
procedure DeletePlugin(PluginList: TPSPlugins; Plugin: TPSPlugin); procedure DeletePlugin(PluginList: TPSPlugins; Plugin: TPSPlugin);
procedure Register; {$IFDEF ADD_COMPONENTREG}
procedure Register;
{$ENDIF}
const const
{ Meta-Daten }
ScriptManagerComponent_Version = '1.0';
ScriptManagerComponent_Copyright = 'Copyright � 2015';
ScriptManagerComponent_Author = 'Dennis G�hlert a.o.';
{ Fehlermeldungen } { Fehlermeldungen }
Error_MissingReturnTarget = 'Missing log-return target'; Error_MissingReturnTarget = 'Missing log-return target';
Error_MissingComponentName = 'Missing component name'; Error_MissingComponentName = 'Missing component name';
@@ -194,10 +191,12 @@ var
implementation implementation
procedure Register; {$IFDEF ADD_COMPONENTREG}
begin procedure Register;
RegisterComponents(ComponentsPage,[TScriptManager]); begin
end; RegisterComponents(ComponentsPage,[TScriptManager]);
end;
{$ENDIF}
procedure AddPlugin(PluginList: TPSPlugins; Plugin: TPSPlugin); procedure AddPlugin(PluginList: TPSPlugins; Plugin: TPSPlugin);
begin begin
@@ -286,9 +285,9 @@ end;
constructor TScriptManager.Create(AOwner: TComponent); constructor TScriptManager.Create(AOwner: TComponent);
begin begin
inherited; inherited;
FAbout := TComponentAbout.Create(TScriptManager,ScriptManagerComponent_Version,ScriptManagerComponent_Copyright,ScriptManagerComponent_Author); FAbout := TComponentAbout.Create(TScriptManager);
//ReturnMode := srNone; Durch DEFAULT festgelegt! ReturnMode := srNone;
//ReturnStyle := srSimple; Durch DEFAULT festgelegt! ReturnStyle := srSimple;
SecureMode := True; SecureMode := True;
//ReturnSL := TStringList.Create; Nicht erstellen, Property ist nur ein Pointer auf ext. TStrings //ReturnSL := TStringList.Create; Nicht erstellen, Property ist nur ein Pointer auf ext. TStrings
FLibraries := [slClasses,slControls,slStdCtrls,slForms,slDateUtils,slCustom]; FLibraries := [slClasses,slControls,slStdCtrls,slForms,slDateUtils,slCustom];

File diff suppressed because it is too large Load Diff

View File

@@ -3,14 +3,10 @@ unit uSysTools;
////////////////////////////////////// //////////////////////////////////////
/// Lina System Tools Unit /// /// Lina System Tools Unit ///
/// **************************** /// /// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. /// /// (c) 2015 Dennis G�hlert a.o. ///
////////////////////////////////////// //////////////////////////////////////
{$IFNDEF MSWINDOWS} {$I 'Config.inc'}
{$IFDEF WARN_INCOMPATIBLEOS}
{$MESSAGE ERROR 'The "uSysTools" unit is only available under MS-Windows OS'}
{$ENDIF}
{$ENDIF}
interface interface
@@ -25,6 +21,7 @@ uses
type type
{ Fehlermeldungen } { Fehlermeldungen }
EWinUserInformation = class(Exception); EWinUserInformation = class(Exception);
EStringCharAccess = class(Exception);
type type
{ Hilfsklassen } { Hilfsklassen }
@@ -44,11 +41,13 @@ type
{ Typisierte Arrays } { Typisierte Arrays }
TPointerArray = array of Pointer; TPointerArray = array of Pointer;
TPCharArray = array of PChar; TPCharArray = array of PChar;
TCharArray = array of Char;
TVariantArray = array of Variant; TVariantArray = array of Variant;
TStringArray = array of String; TStringArray = array of String;
TShortStringArray = array of ShortString; TShortStringArray = array of ShortString;
TAnsiStringArray = array of AnsiString;
TByteArray = array of Byte; TByteArray = array of Byte;
TWordArray = array of Word; TWordArray = array of Word;
@@ -143,10 +142,13 @@ type
end; end;
TFloatRefDataArrayReferenceDataArray = array of TFloatRefDataArrayReferenceData; TFloatRefDataArrayReferenceDataArray = array of TFloatRefDataArrayReferenceData;
TByteSet = set of Byte;
TCharSet = set of Char;
TVector = TFloatArray; TVector = TFloatArray;
TMatrix = array of TVector; TMatrix = array of TVector;
TCycle = {$IFDEF NO_RECORDMETHODS} record {$ELSE} class {$ENDIF} TCycle = class
private private
{ Private-Deklarationen } { Private-Deklarationen }
FRadius: Extended; FRadius: Extended;
@@ -157,11 +159,38 @@ type
procedure SetCircumference(Value: Extended); procedure SetCircumference(Value: Extended);
public public
{ Public-Deklarationen } { Public-Deklarationen }
constructor Create;
destructor Destroy; override;
property Radius: Extended read FRadius write FRadius; property Radius: Extended read FRadius write FRadius;
property Diameter: Extended read GetDiameter write SetDiameter; property Diameter: Extended read GetDiameter write SetDiameter;
property Circumference: Extended read GetCircumference write SetCircumference; property Circumference: Extended read GetCircumference write SetCircumference;
end; 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) TFilteredStringList = class(TStringList)
private private
{ Private-Deklarationen } { Private-Deklarationen }
@@ -299,7 +328,7 @@ type
procedure SetMethodSubProp(Instance: TObject; const PropName: String; Value: TMethod); procedure SetMethodSubProp(Instance: TObject; const PropName: String; Value: TMethod);
function SubPropIsType(Instance: TObject; const PropName: String; TypeKind: TTypeKind): Boolean; function SubPropIsType(Instance: TObject; const PropName: String; TypeKind: TTypeKind): Boolean;
function SubPropType(Instance: TObject; const PropName: String): TTypeKind; overload; function SubPropType(Instance: TObject; const PropName: String): TTypeKind; overload;
{ Uhrzeit } { Datum/Uhrzeit }
function SystemTime: TSystemTime; function SystemTime: TSystemTime;
function Year: Word; function Year: Word;
function Month: Word; function Month: Word;
@@ -309,7 +338,17 @@ type
function Minute: Word; function Minute: Word;
function Second: Word; function Second: Word;
function Milliseconds: 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 } { 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 ExtractClassName(FullClassName: String; CaseSensitive: Boolean = True): String;
function CountLines(S: String): Integer; function CountLines(S: String): Integer;
function Wrappable(S: String; Font: TFont; MaxWidth: Integer): Boolean; overload; 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: PAnsiChar; Text: AnsiString): Integer; {$IFNDEF NO_UNICODE} overload;
function CharPosition(Current: PWideChar; Text: UnicodeString): Integer; overload; function CharPosition(Current: PWideChar; Text: UnicodeString): Integer; overload;
{$ENDIF} {$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 PrintText(Strings: TStrings; Font: TFont);
procedure ExtractChars(var Text: String; Chars: array of Char); procedure ExtractChars(var Text: String; Chars: array of Char); overload;
procedure EnableDebugPrivilege; 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 const
Spaces = [#9,#10,#13,#32,#160]; Spaces = [#9,#10,#13,#32,#160];
@@ -345,7 +388,42 @@ const
LowerCaseLetters = ['a'..'z']; LowerCaseLetters = ['a'..'z'];
Letters = UpperCaseLetters + LowerCaseLetters; Letters = UpperCaseLetters + LowerCaseLetters;
Operators = ['+','-','*','/']; 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_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 implementation
@@ -1199,6 +1277,192 @@ begin
Result := SystemTime.wMilliseconds; Result := SystemTime.wMilliseconds;
end; 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; function ExtractClassName(FullClassName: String; CaseSensitive: Boolean = True): String;
begin begin
if ((FullClassName[1] = 'T') or ((CaseSensitive = False) and (FullClassName[1] = 't'))) and ((FullClassName[2] in UppercaseLetters) or (CaseSensitive = False)) then 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 var
Hrs, Mins: Word; Hrs, Mins: Word;
begin begin
if Sec <= 0 then
begin
Result := StrToTime('00:00:00');
Exit;
end;
Hrs := Sec div 3600; Hrs := Sec div 3600;
Mins := Sec div 60 - Hrs * 60; Mins := Sec div 60 - Hrs * 60;
Result := StrToTime(IntToStr(Hrs) + ':' + IntToStr(Mins) + ':' + IntToStr(Sec - (Hrs * 3600 + Mins * 60))); Result := StrToTime(IntToStr(Hrs) + ':' + IntToStr(Mins) + ':' + IntToStr(Sec - (Hrs * 3600 + Mins * 60)));
@@ -2123,6 +2382,40 @@ begin
end; end;
{$ENDIF} {$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); procedure PrintText(Strings: TStrings; Font: TFont);
var var
Index: Integer; Index: Integer;
@@ -2144,12 +2437,12 @@ begin
end; end;
end; end;
procedure ExtractChars(var Text: String; Chars: array of Char); procedure ExtractChars(var Text: String; Chars: array of Char); overload;
var var
Current: PChar; Current: PChar;
OutPut: String; OutPut: String;
begin begin
Current := @Text[1]; Current := PChar(Text);
SetLength(OutPut,0); SetLength(OutPut,0);
while Current^ <> #0 do while Current^ <> #0 do
begin begin
@@ -2162,21 +2455,50 @@ begin
Text := OutPut; Text := OutPut;
end; 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 var
Token: THandle; Token: THandle;
TokenPrivs: TTokenPrivileges; Privileges: TTokenPrivileges;
begin begin
if OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,Token) then if OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,Token) then
begin begin
TokenPrivs.PrivilegeCount := 1; Privileges.PrivilegeCount := 1;
LookupPrivilegeValue(nil, SE_DEBUG_NAME, TokenPrivs.Privileges[0].Luid); LookupPrivilegeValue(nil,Name,Privileges.Privileges[0].Luid);
TokenPrivs.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; if Value = True then
AdjustTokenPrivileges(Token,False,TokenPrivs,SizeOf(TokenPrivs),nil,DWord(nil^)); 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); CloseHandle(Token);
end; end;
end; end;
procedure SetPrivilege(const Name: String; Value: Boolean); overload;
begin
SetPrivilege(PChar(Name),Value);
end;
function WinUserName: String; function WinUserName: String;
var var
Buffer: array [0..255] of Char; Buffer: array [0..255] of Char;
@@ -2266,6 +2588,18 @@ end;
TCycle TCycle
---------------------------------------------------------------------------- } ---------------------------------------------------------------------------- }
constructor TCycle.Create;
begin
inherited;
FRadius := 0;
end;
destructor TCycle.Destroy;
begin
//...
inherited;
end;
function TCycle.GetDiameter: Extended; function TCycle.GetDiameter: Extended;
begin begin
Result := Radius * 2; Result := Radius * 2;
@@ -2286,6 +2620,69 @@ begin
FRadius := Value / 2 / Pi; FRadius := Value / 2 / Pi;
end; 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 TFilteredStringList
---------------------------------------------------------------------------- } ---------------------------------------------------------------------------- }

View File

@@ -3,14 +3,10 @@ unit uVirtObj;
////////////////////////////////////// //////////////////////////////////////
/// Lina Virtual Object Unit /// /// Lina Virtual Object Unit ///
/// **************************** /// /// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. /// /// (c) 2015 Dennis G�hlert a.o. ///
////////////////////////////////////// //////////////////////////////////////
{$IFNDEF MSWINDOWS} {$I 'Config.inc'}
{$IFDEF WARN_INCOMPATIBLEOS}
{$MESSAGE ERROR 'The "uVirtObj" unit is only available under MS-Windows OS'}
{$ENDIF}
{$ENDIF}
interface interface
@@ -52,6 +48,9 @@ type
TVirtualClasses = array of TVirtualClass; TVirtualClasses = array of TVirtualClass;
{ VirtualProgram } { VirtualProgram }
{$IFNDEF NO_MULTIPLATFORM}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TVirtualProgram = class(TComponent) TVirtualProgram = class(TComponent)
private private
{ Private-Deklarationen } { Private-Deklarationen }
@@ -68,21 +67,18 @@ type
property About: TComponentAbout read FAbout; property About: TComponentAbout read FAbout;
end; end;
procedure Register; {$IFDEF ADD_COMPONENTREG}
procedure Register;
const {$ENDIF}
{ Meta-Daten }
VirtualProgramComponent_Name = 'ScriptManager';
VirtualProgramComponent_Version = 1.0;
VirtualProgramComponent_Copyright = 'Copyright � 2014';
VirtualProgramComponent_Author = 'Dennis G�hlert a.o.';
implementation implementation
procedure Register; {$IFDEF ADD_COMPONENTREG}
begin procedure Register;
RegisterComponents(ComponentsPage,[TVirtualProgram]); begin
end; RegisterComponents(ComponentsPage,[TVirtualProgram]);
end;
{$ENDIF}
constructor TVirtualProgram.Create(AOwner: TComponent); constructor TVirtualProgram.Create(AOwner: TComponent);
begin begin

View File

@@ -3,14 +3,10 @@ unit uWebCtrls;
////////////////////////////////////// //////////////////////////////////////
/// Lina Web Controls Unit /// /// Lina Web Controls Unit ///
/// **************************** /// /// **************************** ///
/// (c) 2014 Dennis G�hlert a.o. /// /// (c) 2015 Dennis G�hlert a.o. ///
////////////////////////////////////// //////////////////////////////////////
{$IFNDEF MSWINDOWS} {$I 'Config.inc'}
{$IFDEF WARN_INCOMPATIBLEOS}
{$MESSAGE ERROR 'The "uWebCtrls" unit is only available under MS-Windows OS'}
{$ENDIF}
{$ENDIF}
interface interface
@@ -35,6 +31,9 @@ type
type type
{ Hauptklassen } { Hauptklassen }
{$IFNDEF NO_MULTIPLATFORM}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TDownload = class(TComponent) TDownload = class(TComponent)
private private
{ Private-Deklarationen } { Private-Deklarationen }
@@ -85,7 +84,9 @@ type
function StrIsURL(const S: String): Boolean; function StrIsURL(const S: String): Boolean;
function GetTagParamValue(const S,Tag,Param: String): String; function GetTagParamValue(const S,Tag,Param: String): String;
procedure Register; {$IFDEF ADD_COMPONENTREG}
procedure Register;
{$ENDIF}
const const
{ Web-Protokolle } { Web-Protokolle }
@@ -97,17 +98,15 @@ const
WebProtocols: array [0..4] of String = (WP_HTTP,WP_HTTPS,WP_FTP,WP_CALL,WP_MAIL); 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); WebProtocolsSimple: array [0..1] of String = (WP_MAIL,WP_CALL);
WebProtocolsSpecial: array [0..2] of String = (WP_HTTP,WP_HTTPS,WP_FTP); 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 implementation
procedure Register; {$IFDEF ADD_COMPONENTREG}
begin procedure Register;
RegisterComponents(ComponentsPage,[TDownload]); begin
end; RegisterComponents(ComponentsPage,[TDownload]);
end;
{$ENDIF}
function ValidProtocol(const Protocol: String; function ValidProtocol(const Protocol: String;
const Protocols: array of String): Boolean; const Protocols: array of String): Boolean;
@@ -323,10 +322,14 @@ begin
end; end;
end; end;
{ ----------------------------------------------------------------------------
TDownload
---------------------------------------------------------------------------- }
constructor TDownload.Create(AOwner: TComponent); constructor TDownload.Create(AOwner: TComponent);
begin begin
inherited; inherited;
FAbout := TComponentAbout.Create(TDownload,DownloadComponent_Version,DownloadComponent_Copyright,DownloadComponent_Author); FAbout := TComponentAbout.Create(TDownload);
idHTTPObject := TidHTTP.Create(Self); idHTTPObject := TidHTTP.Create(Self);
idHTTPObject.HandleRedirects := True; idHTTPObject.HandleRedirects := True;
idHTTPObject.OnWork := idHTTPObjectWork; idHTTPObject.OnWork := idHTTPObjectWork;

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB