From ff9304fe20fb7045ff92fcbbcd6e1345973844a4 Mon Sep 17 00:00:00 2001 From: Francisco Aurino Date: Tue, 17 Jan 2023 01:02:28 -0300 Subject: [PATCH 1/4] converted to lazarus and in progress... --- packages/backup/fkprabuttonstyle.pas.bak | 48 + packages/backup/laz_pracomponents.lpk.bak | 27 + packages/backup/newpackage.lpk.bak | 1 + packages/backup/prabuttonstyle.pas.bak | 14 + packages/backup/prabuttonstyle1.pas.bak | 31 + packages/backup/pracomponents.lpk.bak | 157 ++ packages/lazpk/backup/newpackage.lpk.bak | 27 + .../lib/x86_64-win64/NewPackage.compiled | 6 + .../lazpk/lib/x86_64-win64/PraInterfaces.ppu | Bin 0 -> 18286 bytes .../lib/x86_64-win64/pkprabuttonstyle.ppu | Bin 0 -> 91124 bytes packages/lazpk/newpackage.lpk | 156 ++ packages/lazpk/newpackage.pas | 32 + packages/lazpk/pkprabuttonstyle.pas | 32 + packages/lazpk/pkprabuttonstyle_icon.lrs | 504 +++++ packages/lib/x86_64-win64/PraAbout.dfm | 252 +++ packages/lib/x86_64-win64/PraAbout.ppu | Bin 0 -> 100144 bytes .../lib/x86_64-win64/PraButtonStyleBack.ppu | Bin 0 -> 11329 bytes .../lib/x86_64-win64/PraButtonStyleCancel.ppu | Bin 0 -> 11407 bytes .../lib/x86_64-win64/PraButtonStyleClose.ppu | Bin 0 -> 11368 bytes .../lib/x86_64-win64/PraButtonStyleDelete.ppu | Bin 0 -> 11407 bytes .../lib/x86_64-win64/PraButtonStyleEdit.ppu | Bin 0 -> 11329 bytes .../lib/x86_64-win64/PraButtonStyleEmail.ppu | Bin 0 -> 11368 bytes .../lib/x86_64-win64/PraButtonStyleGear.ppu | Bin 0 -> 11329 bytes .../lib/x86_64-win64/PraButtonStyleHeart.ppu | Bin 0 -> 11368 bytes .../lib/x86_64-win64/PraButtonStyleInsert.ppu | Bin 0 -> 11407 bytes .../lib/x86_64-win64/PraButtonStyleMenu.ppu | Bin 0 -> 11329 bytes .../lib/x86_64-win64/PraButtonStylePrint.ppu | Bin 0 -> 11368 bytes .../lib/x86_64-win64/PraButtonStyleReport.ppu | Bin 0 -> 11407 bytes .../lib/x86_64-win64/PraButtonStyleSave.ppu | Bin 0 -> 11329 bytes .../PraButtonStyleTemplateDanger.ppu | Bin 0 -> 22683 bytes .../PraButtonStyleTemplateDark.ppu | Bin 0 -> 22590 bytes .../PraButtonStyleTemplateGear.ppu | Bin 0 -> 22589 bytes .../PraButtonStyleTemplateHeart.ppu | Bin 0 -> 22623 bytes .../PraButtonStyleTemplateInfo.ppu | Bin 0 -> 22590 bytes .../PraButtonStyleTemplateLight.ppu | Bin 0 -> 22624 bytes .../PraButtonStyleTemplatePrimary.ppu | Bin 0 -> 22738 bytes .../PraButtonStyleTemplateSecondary.ppu | Bin 0 -> 22835 bytes .../PraButtonStyleTemplateSuccess.ppu | Bin 0 -> 22737 bytes .../PraButtonStyleTemplateWarning.ppu | Bin 0 -> 22738 bytes packages/lib/x86_64-win64/PraConsts.ppu | Bin 0 -> 1769 bytes packages/lib/x86_64-win64/PraInterfaces.ppu | Bin 0 -> 18286 bytes packages/lib/x86_64-win64/PraUtils.ppu | Bin 0 -> 1486 bytes packages/lib/x86_64-win64/button1.ppu | Bin 0 -> 90725 bytes .../lib/x86_64-win64/fkprabuttonstyle.ppu | Bin 0 -> 1002 bytes .../x86_64-win64/laz_pracomponents.compiled | 6 + packages/lib/x86_64-win64/prabuttonstyle.ppu | Bin 0 -> 15327 bytes .../lib/x86_64-win64/pracomponents.compiled | 6 + packages/lib/x86_64-win64/pracomponents.ppu | Bin 0 -> 2993 bytes packages/pracomponents.dproj | 346 +++- packages/pracomponents.lpk | 157 ++ source/PraButtonStyle.pas | 42 +- source/PraButtonStyleBack.pas | 17 +- source/PraButtonStyleCancel.pas | 16 +- source/PraButtonStyleClose.pas | 16 +- source/PraButtonStyleDelete.pas | 17 +- source/PraButtonStyleEdit.pas | 18 +- source/PraButtonStyleEmail.pas | 18 +- source/PraButtonStyleGear.pas | 18 +- source/PraButtonStyleHeart.pas | 18 +- source/PraButtonStyleInsert.pas | 18 +- source/PraButtonStyleMenu.pas | 17 +- source/PraButtonStylePrint.pas | 17 +- source/PraButtonStyleReport.pas | 20 +- source/PraButtonStyleSave.pas | 20 +- source/PraButtonStyleTemplateDanger.pas | 20 +- source/PraButtonStyleTemplateDark.pas | 20 +- source/PraButtonStyleTemplateGear.pas | 21 +- source/PraButtonStyleTemplateHeart.pas | 21 +- source/PraButtonStyleTemplateInfo.pas | 20 +- source/PraButtonStyleTemplateLight.pas | 20 +- source/PraButtonStyleTemplatePrimary.pas | 20 +- source/PraButtonStyleTemplateSecondary.pas | 20 +- source/PraButtonStyleTemplateSuccess.pas | 21 +- source/PraButtonStyleTemplateWarning.pas | 20 +- source/PraInterfaces.pas | 11 +- source/backup/PraButtonStyle.pas.bak | 1725 +++++++++++++++++ source/backup/PraButtonStyleBack.pas.bak | 161 ++ source/backup/PraButtonStyleCancel.pas.bak | 156 ++ source/backup/PraButtonStyleClose.pas.bak | 156 ++ source/backup/PraButtonStyleDelete.pas.bak | 155 ++ source/backup/PraButtonStyleEdit.pas.bak | 156 ++ source/backup/PraButtonStyleEmail.pas.bak | 156 ++ source/backup/PraButtonStyleGear.pas.bak | 156 ++ source/backup/PraButtonStyleHeart.pas.bak | 156 ++ source/backup/PraButtonStyleInsert.pas.bak | 156 ++ source/backup/PraButtonStyleMenu.pas.bak | 155 ++ source/backup/PraButtonStylePrint.pas.bak | 155 ++ source/backup/PraButtonStyleReport.pas.bak | 155 ++ source/backup/PraButtonStyleSave.pas.bak | 155 ++ .../PraButtonStyleTemplateDanger.pas.bak | 269 +++ .../backup/PraButtonStyleTemplateDark.pas.bak | 269 +++ .../backup/PraButtonStyleTemplateGear.pas.bak | 268 +++ .../PraButtonStyleTemplateHeart.pas.bak | 269 +++ .../backup/PraButtonStyleTemplateInfo.pas.bak | 269 +++ .../PraButtonStyleTemplateLight.pas.bak | 269 +++ .../PraButtonStyleTemplatePrimary.pas.bak | 269 +++ .../PraButtonStyleTemplateSecondary.pas.bak | 269 +++ .../PraButtonStyleTemplateSuccess.pas.bak | 268 +++ .../PraButtonStyleTemplateWarning.pas.bak | 269 +++ source/backup/PraInterfaces.pas.bak | 96 + source/backup/newpackage.lpk.bak | 1 + source/commom/PraRegister.pas | 11 + source/commom/PraUtils.pas | 29 +- source/commom/backup/PraRegister.pas.bak | 121 ++ source/commom/backup/PraUtils.pas.bak | 70 + source/commom/view/PraAbout.pas | 24 +- source/commom/view/backup/PraAbout.pas.bak | 67 + source/newpackage.lpk | 27 + 108 files changed, 9034 insertions(+), 141 deletions(-) create mode 100644 packages/backup/fkprabuttonstyle.pas.bak create mode 100644 packages/backup/laz_pracomponents.lpk.bak create mode 100644 packages/backup/newpackage.lpk.bak create mode 100644 packages/backup/prabuttonstyle.pas.bak create mode 100644 packages/backup/prabuttonstyle1.pas.bak create mode 100644 packages/backup/pracomponents.lpk.bak create mode 100644 packages/lazpk/backup/newpackage.lpk.bak create mode 100644 packages/lazpk/lib/x86_64-win64/NewPackage.compiled create mode 100644 packages/lazpk/lib/x86_64-win64/PraInterfaces.ppu create mode 100644 packages/lazpk/lib/x86_64-win64/pkprabuttonstyle.ppu create mode 100644 packages/lazpk/newpackage.lpk create mode 100644 packages/lazpk/newpackage.pas create mode 100644 packages/lazpk/pkprabuttonstyle.pas create mode 100644 packages/lazpk/pkprabuttonstyle_icon.lrs create mode 100644 packages/lib/x86_64-win64/PraAbout.dfm create mode 100644 packages/lib/x86_64-win64/PraAbout.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleBack.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleCancel.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleClose.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleDelete.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleEdit.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleEmail.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleGear.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleHeart.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleInsert.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleMenu.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStylePrint.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleReport.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleSave.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleTemplateDanger.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleTemplateDark.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleTemplateGear.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleTemplateHeart.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleTemplateInfo.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleTemplateLight.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleTemplatePrimary.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleTemplateSecondary.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleTemplateSuccess.ppu create mode 100644 packages/lib/x86_64-win64/PraButtonStyleTemplateWarning.ppu create mode 100644 packages/lib/x86_64-win64/PraConsts.ppu create mode 100644 packages/lib/x86_64-win64/PraInterfaces.ppu create mode 100644 packages/lib/x86_64-win64/PraUtils.ppu create mode 100644 packages/lib/x86_64-win64/button1.ppu create mode 100644 packages/lib/x86_64-win64/fkprabuttonstyle.ppu create mode 100644 packages/lib/x86_64-win64/laz_pracomponents.compiled create mode 100644 packages/lib/x86_64-win64/prabuttonstyle.ppu create mode 100644 packages/lib/x86_64-win64/pracomponents.compiled create mode 100644 packages/lib/x86_64-win64/pracomponents.ppu create mode 100644 packages/pracomponents.lpk create mode 100644 source/backup/PraButtonStyle.pas.bak create mode 100644 source/backup/PraButtonStyleBack.pas.bak create mode 100644 source/backup/PraButtonStyleCancel.pas.bak create mode 100644 source/backup/PraButtonStyleClose.pas.bak create mode 100644 source/backup/PraButtonStyleDelete.pas.bak create mode 100644 source/backup/PraButtonStyleEdit.pas.bak create mode 100644 source/backup/PraButtonStyleEmail.pas.bak create mode 100644 source/backup/PraButtonStyleGear.pas.bak create mode 100644 source/backup/PraButtonStyleHeart.pas.bak create mode 100644 source/backup/PraButtonStyleInsert.pas.bak create mode 100644 source/backup/PraButtonStyleMenu.pas.bak create mode 100644 source/backup/PraButtonStylePrint.pas.bak create mode 100644 source/backup/PraButtonStyleReport.pas.bak create mode 100644 source/backup/PraButtonStyleSave.pas.bak create mode 100644 source/backup/PraButtonStyleTemplateDanger.pas.bak create mode 100644 source/backup/PraButtonStyleTemplateDark.pas.bak create mode 100644 source/backup/PraButtonStyleTemplateGear.pas.bak create mode 100644 source/backup/PraButtonStyleTemplateHeart.pas.bak create mode 100644 source/backup/PraButtonStyleTemplateInfo.pas.bak create mode 100644 source/backup/PraButtonStyleTemplateLight.pas.bak create mode 100644 source/backup/PraButtonStyleTemplatePrimary.pas.bak create mode 100644 source/backup/PraButtonStyleTemplateSecondary.pas.bak create mode 100644 source/backup/PraButtonStyleTemplateSuccess.pas.bak create mode 100644 source/backup/PraButtonStyleTemplateWarning.pas.bak create mode 100644 source/backup/PraInterfaces.pas.bak create mode 100644 source/backup/newpackage.lpk.bak create mode 100644 source/commom/backup/PraRegister.pas.bak create mode 100644 source/commom/backup/PraUtils.pas.bak create mode 100644 source/commom/view/backup/PraAbout.pas.bak create mode 100644 source/newpackage.lpk diff --git a/packages/backup/fkprabuttonstyle.pas.bak b/packages/backup/fkprabuttonstyle.pas.bak new file mode 100644 index 0000000..3b96247 --- /dev/null +++ b/packages/backup/fkprabuttonstyle.pas.bak @@ -0,0 +1,48 @@ +unit fkPraButtonStyle; +{$warn 5023 off : no warning about unused units} +interface + +uses + PraButtonStyle, LazarusPackageIntf; + +implementation + +procedure Register; +begin + RegisterUnit('PraButtonStyle', @PraButtonStyle.Register); +end; + +initialization + RegisterPackage('fkPraButtonStyle', @Register); +end. + +(*{$mode ObjFPC}{$H+} + +interface + +uses + Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs; + +type + TPraButtonStyle = class(PraComponents) + private + + protected + + public + + published + + end; + +procedure Register; + +implementation + +procedure Register; +begin + RegisterComponents('PraComponents',[TPraButtonStyle]); +end; + +end. +*) diff --git a/packages/backup/laz_pracomponents.lpk.bak b/packages/backup/laz_pracomponents.lpk.bak new file mode 100644 index 0000000..2f1fafe --- /dev/null +++ b/packages/backup/laz_pracomponents.lpk.bak @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/backup/newpackage.lpk.bak b/packages/backup/newpackage.lpk.bak new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/packages/backup/newpackage.lpk.bak @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/backup/prabuttonstyle.pas.bak b/packages/backup/prabuttonstyle.pas.bak new file mode 100644 index 0000000..60c6a89 --- /dev/null +++ b/packages/backup/prabuttonstyle.pas.bak @@ -0,0 +1,14 @@ +unit PraButtonStyle; +{$warn 5023 off : no warning about unused units} +interface +uses + LazarusPackageIntf; + +implementation + +procedure Register; +begin + RegisterComponents('PraComponents',[TPraButtonStyles]); +end; + +end. diff --git a/packages/backup/prabuttonstyle1.pas.bak b/packages/backup/prabuttonstyle1.pas.bak new file mode 100644 index 0000000..50d3d28 --- /dev/null +++ b/packages/backup/prabuttonstyle1.pas.bak @@ -0,0 +1,31 @@ +unit PraButtonStyle1; + +{$mode ObjFPC}{$H+} + +interface + +uses + Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs; + +type + TPraButtonStyle1 = class(tTPraButtonStyle) + private + + protected + + public + + published + + end; + +procedure Register; + +implementation + +procedure Register; +begin + RegisterComponents('pracomponents',[TPraButtonStyle1]); +end; + +end. diff --git a/packages/backup/pracomponents.lpk.bak b/packages/backup/pracomponents.lpk.bak new file mode 100644 index 0000000..2d499af --- /dev/null +++ b/packages/backup/pracomponents.lpk.bak @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/lazpk/backup/newpackage.lpk.bak b/packages/lazpk/backup/newpackage.lpk.bak new file mode 100644 index 0000000..c3d3192 --- /dev/null +++ b/packages/lazpk/backup/newpackage.lpk.bak @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/lazpk/lib/x86_64-win64/NewPackage.compiled b/packages/lazpk/lib/x86_64-win64/NewPackage.compiled new file mode 100644 index 0000000..5d222fe --- /dev/null +++ b/packages/lazpk/lib/x86_64-win64/NewPackage.compiled @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/lazpk/lib/x86_64-win64/PraInterfaces.ppu b/packages/lazpk/lib/x86_64-win64/PraInterfaces.ppu new file mode 100644 index 0000000000000000000000000000000000000000..919fac3035a31fca3678e4cb5f3afb944f7b8348 GIT binary patch literal 18286 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 NT3!eeVLScl{{x;atpfl6 literal 0 HcmV?d00001 diff --git a/packages/lazpk/lib/x86_64-win64/pkprabuttonstyle.ppu b/packages/lazpk/lib/x86_64-win64/pkprabuttonstyle.ppu new file mode 100644 index 0000000000000000000000000000000000000000..75336c0c469a44c7712684aa00cc13ccb7ff6507 GIT binary patch literal 91124 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 WnTFt>d|OjwdZxZ^k~-QK-0^={BZaj9 literal 0 HcmV?d00001 diff --git a/packages/lazpk/newpackage.lpk b/packages/lazpk/newpackage.lpk new file mode 100644 index 0000000..b096800 --- /dev/null +++ b/packages/lazpk/newpackage.lpk @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/lazpk/newpackage.pas b/packages/lazpk/newpackage.pas new file mode 100644 index 0000000..34ac248 --- /dev/null +++ b/packages/lazpk/newpackage.pas @@ -0,0 +1,32 @@ +{ This file was automatically created by Lazarus. Do not edit! + This source is only used to compile and install the package. + } + +unit NewPackage; + +{$warn 5023 off : no warning about unused units} +interface + +uses + pkPraButtonStyle, PraButtonStyle, PraButtonStyleBack, PraButtonStyleCancel, + PraButtonStyleClose, PraButtonStyleDelete, PraButtonStyleEdit, + PraButtonStyleEmail, PraButtonStyleGear, PraButtonStyleHeart, + PraButtonStyleInsert, PraButtonStyleMenu, PraButtonStylePrint, + PraButtonStyleReport, PraButtonStyleSave, PraButtonStyleTemplateDanger, + PraButtonStyleTemplateDark, PraButtonStyleTemplateGear, + PraButtonStyleTemplateHeart, PraButtonStyleTemplateInfo, + PraButtonStyleTemplateLight, PraButtonStyleTemplatePrimary, + PraButtonStyleTemplateSecondary, PraButtonStyleTemplateSuccess, + PraButtonStyleTemplateWarning, PraInterfaces, PraConsts, PraRegister, + PraUtils, PraAbout, LazarusPackageIntf; + +implementation + +procedure Register; +begin + RegisterUnit('pkPraButtonStyle', @pkPraButtonStyle.Register); +end; + +initialization + RegisterPackage('NewPackage', @Register); +end. diff --git a/packages/lazpk/pkprabuttonstyle.pas b/packages/lazpk/pkprabuttonstyle.pas new file mode 100644 index 0000000..5656509 --- /dev/null +++ b/packages/lazpk/pkprabuttonstyle.pas @@ -0,0 +1,32 @@ +unit pkPraButtonStyle; + +{$mode ObjFPC}{$H+} + +interface + +uses + Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls; + +type + TPraButtonStyle = class(TButton) + private + + protected + + public + + published + + end; + +procedure Register; + +implementation + +procedure Register; +begin + {$I pkprabuttonstyle_icon.lrs} + RegisterComponents('Pra Components',[TPraButtonStyle]); +end; + +end. diff --git a/packages/lazpk/pkprabuttonstyle_icon.lrs b/packages/lazpk/pkprabuttonstyle_icon.lrs new file mode 100644 index 0000000..36542af --- /dev/null +++ b/packages/lazpk/pkprabuttonstyle_icon.lrs @@ -0,0 +1,504 @@ +LazarusResources.Add('TPraButtonStyle','BMP',[ + 'BM'#138#16#0#0#0#0#0#0#138#0#0#0'|'#0#0#0' '#0#0#0' '#0#0#0#1#0' '#0#3#0#0#0 + +#0#16#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#255#0#0#255#0#0#0#0 + +#0#0#255'BGRs'#143#194#245'(Q'#184#30#21#30#133#235#1'333'#19'fff&fff'#6#153 + +#153#153#9'='#10#215#3'(\'#143'2'#0#0#0#0#0#0#0#0#0#0#0#0#4#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#18#255#255#255#19#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255'&' + +#255#255#255#170#255#255#255#132#255#255#255#132#255#255#255#187#255#255#255 + +'-'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#18#255#255#255#136#255 + +#255#255#249#255#255#255#255#255#255#255#132#255#255#255#132#255#255#255#255 + +#255#255#255#251#255#255#255#153#255#255#255#22#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#5#255#255 + +#255'f'#255#255#255#235#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#132#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#243#255#255#255#128#255#255#255#8#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255'D'#255#255#255#213#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#132#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#225#255#255#255'^'#255#255#255#1#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#255#255#255'1'#255#255#255#191#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#241#255#255#255'Q'#255#255#255'Q'#255#255#255#241#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#192#255#255#255'2'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#10#255#255#255#158#255#255 + +#255#253#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#250#255#255#255#147#255#255#255#27#255#255#255')' + +#255#255#255')'#255#255#255#27#255#255#255#147#255#255#255#250#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#253#255#255#255#158#255#255#255#10#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255'<'#255#255#255'A'#255#255#255#209#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#172 + +#255#255#255'&'#255#255#255'W'#255#255#255#221#255#255#255#132#255#255#255 + +#132#255#255#255#221#255#255#255'W'#255#255#255'&'#255#255#255#172#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#209#255 + +#255#255'A'#255#255#255'<'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#255#255#255#255#255#255#255#179#255#255#255'"'#255#255#255'^' + +#255#255#255#233#255#255#255#201#255#255#255'>'#255#255#255'8'#255#255#255 + +#195#255#255#255#255#255#255#255#255#255#255#255#132#255#255#255#132#255#255 + +#255#255#255#255#255#255#255#255#255#203#255#255#255'@'#255#255#255'6'#255 + +#255#255#194#255#255#255#237#255#255#255'o'#255#255#255#30#255#255#255#162 + +#255#255#255#254#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#255#255#255#255#255#255#255#255#255#255#255#245#255#255#255'|'#255#255 + +#255#11#255#255#255''''#255#255#255#175#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#132#255#255#255#132#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#177#255#255#255 + +')'#255#255#255#11#255#255#255'|'#255#255#255#245#255#255#255#255#255#255#255 + +#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#241#255#255#255#22#255 + +#255#255#250#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + ,#255#255#255#255#255#255#255#132#255#255#255#132#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#251#255#255 + +#255#23#255#255#255#241#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#241#255#255#255#27#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#132#255#255#255#132#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#27 + +#255#255#255#241#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#241#255#255#255#27#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#132#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#27#255#255 + +#255#241#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#241#255#255#255#27#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#252#255#255 + +#255'a'#255#255#255'a'#255#255#255#252#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#27#255#255#255#241 + +#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#241#255#255#255#27#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#192#255#255#255'0'#255#255#255'L' + +#255#255#255'L'#255#255#255'0'#255#255#255#192#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#27#255#255#255#241#255#255 + +#255#255#255#255#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#241#255#255#255#27#255#255#255#255#255#255#255#255#255#255#255 + +#227#255#255#255'^'#255#255#255''''#255#255#255#180#255#255#255#255#255#255 + +#255#255#255#255#255#188#255#255#255'-'#255#255#255'M'#255#255#255#222#255 + +#255#255#255#255#255#255#255#255#255#255#27#255#255#255#241#255#255#255#255 + +#255#255#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#241#255#255#255#27#255#255#255#245#255#255#255#128#255#255#255#25#255 + +#255#255#136#255#255#255#249#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#251#255#255#255#153#255#255#255#27#255#255#255 + +'o'#255#255#255#242#255#255#255#27#255#255#255#241#255#255#255#255#255#255 + +#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#241 + +#255#255#255#10#255#255#255#31#255#255#255'k'#255#255#255#236#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#236#255#255#255'k'#255#255 + +#255#31#255#255#255#10#255#255#255#241#255#255#255#255#255#255#255#255#255 + +#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#255#255#255#255#255#255#255#255#255#255#255#208#255#255#255'A'#255#255#255 + +#17#255#255#255'<'#255#255#255#222#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#222#255#255#255'<' + +#255#255#255#18#255#255#255'A'#255#255#255#208#255#255#255#255#255#255#255 + +#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255 + +#255#236#255#255#255'o'#255#255#255' '#255#255#255#162#255#255#255#250#255 + +#255#255#153#255#255#255#29#255#255#255'f'#255#255#255#234#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#238#255#255#255'w'#255#255#255#27#255#255#255#136#255#255 + +#255#249#255#255#255#179#255#255#255'$'#255#255#255'^'#255#255#255#232#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#26#255 + +#255#255#133#255#255#255#247#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#241#255#255#255'y'#255#255#255#27#255#255#255#139#255#255#255 + +#248#255#255#255#255#255#255#255#255#255#255#255#248#255#255#255#139#255#255 + +#255#27#255#255#255'{'#255#255#255#242#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#247#255#255#255#134#255#255#255#26#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#30#255#255#255#169 + +#255#255#255#254#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + ,#255#255#255#255#255#255#255#255#227#255#255#255'`'#255#255#255'"'#255#255 + +#255#165#255#255#255#165#255#255#255'"'#255#255#255'a'#255#255#255#228#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#254#255#255#255#169#255#255#255#30#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255';'#255#255#255 + +#201#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#209#255#255#255'6'#255#255#255'6'#255 + +#255#255#209#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#201#255#255#255';'#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#255#255#255#1#255#255#255'U'#255#255#255#223#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#132#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#228#255#255#255'f'#255#255#255#2#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#9#255#255#255'w'#255 + +#255#255#242#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#132 + +#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#245#255#255#255#136#255#255#255#12#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#26#255#255#255#153#255 + +#255#255#252#255#255#255#255#255#255#255#132#255#255#255#132#255#255#255#255 + +#255#255#255#254#255#255#255#170#255#255#255#31#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#255#255#255'2'#255#255#255#192#255#255#255#132#255#255#255#132#255 + +#255#255#199#255#255#255'9'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#255#255#255#25#255#255#255#25#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +]); +LazarusResources.Add('TPraButtonStyle_150','BMP',[ + 'BM'#138#16#0#0#0#0#0#0#138#0#0#0'|'#0#0#0' '#0#0#0' '#0#0#0#1#0' '#0#3#0#0#0 + +#0#16#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#255#0#0#255#0#0#0#0 + +#0#0#255'BGRs'#143#194#245'(Q'#184#30#21#30#133#235#1'333'#19'fff&fff'#6#153 + +#153#153#9'='#10#215#3'(\'#143'2'#0#0#0#0#0#0#0#0#0#0#0#0#4#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#18#255#255#255#19#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255'&' + +#255#255#255#170#255#255#255#132#255#255#255#132#255#255#255#187#255#255#255 + +'-'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#18#255#255#255#136#255 + +#255#255#249#255#255#255#255#255#255#255#132#255#255#255#132#255#255#255#255 + +#255#255#255#251#255#255#255#153#255#255#255#22#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#5#255#255 + +#255'f'#255#255#255#235#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#132#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#243#255#255#255#128#255#255#255#8#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255'D'#255#255#255#213#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#132#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#225#255#255#255'^'#255#255#255#1#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#255#255#255'1'#255#255#255#191#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#241#255#255#255'Q'#255#255#255'Q'#255#255#255#241#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#192#255#255#255'2'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#10#255#255#255#158#255#255 + +#255#253#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#250#255#255#255#147#255#255#255#27#255#255#255')' + +#255#255#255')'#255#255#255#27#255#255#255#147#255#255#255#250#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#253#255#255#255#158#255#255#255#10#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255'<'#255#255#255'A'#255#255#255#209#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#172 + +#255#255#255'&'#255#255#255'W'#255#255#255#221#255#255#255#132#255#255#255 + +#132#255#255#255#221#255#255#255'W'#255#255#255'&'#255#255#255#172#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#209#255 + +#255#255'A'#255#255#255'<'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#255#255#255#255#255#255#255#179#255#255#255'"'#255#255#255'^' + +#255#255#255#233#255#255#255#201#255#255#255'>'#255#255#255'8'#255#255#255 + +#195#255#255#255#255#255#255#255#255#255#255#255#132#255#255#255#132#255#255 + +#255#255#255#255#255#255#255#255#255#203#255#255#255'@'#255#255#255'6'#255 + +#255#255#194#255#255#255#237#255#255#255'o'#255#255#255#30#255#255#255#162 + +#255#255#255#254#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#255#255#255#255#255#255#255#255#255#255#255#245#255#255#255'|'#255#255 + +#255#11#255#255#255''''#255#255#255#175#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#132#255#255#255#132#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#177#255#255#255 + +')'#255#255#255#11#255#255#255'|'#255#255#255#245#255#255#255#255#255#255#255 + +#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#241#255#255#255#22#255 + +#255#255#250#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + ,#255#255#255#255#255#255#255#132#255#255#255#132#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#251#255#255 + +#255#23#255#255#255#241#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#241#255#255#255#27#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#132#255#255#255#132#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#27 + +#255#255#255#241#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#241#255#255#255#27#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#132#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#27#255#255 + +#255#241#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#241#255#255#255#27#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#252#255#255 + +#255'a'#255#255#255'a'#255#255#255#252#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#27#255#255#255#241 + +#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#241#255#255#255#27#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#192#255#255#255'0'#255#255#255'L' + +#255#255#255'L'#255#255#255'0'#255#255#255#192#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#27#255#255#255#241#255#255 + +#255#255#255#255#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#241#255#255#255#27#255#255#255#255#255#255#255#255#255#255#255 + +#227#255#255#255'^'#255#255#255''''#255#255#255#180#255#255#255#255#255#255 + +#255#255#255#255#255#188#255#255#255'-'#255#255#255'M'#255#255#255#222#255 + +#255#255#255#255#255#255#255#255#255#255#27#255#255#255#241#255#255#255#255 + +#255#255#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#241#255#255#255#27#255#255#255#245#255#255#255#128#255#255#255#25#255 + +#255#255#136#255#255#255#249#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#251#255#255#255#153#255#255#255#27#255#255#255 + +'o'#255#255#255#242#255#255#255#27#255#255#255#241#255#255#255#255#255#255 + +#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#241 + +#255#255#255#10#255#255#255#31#255#255#255'k'#255#255#255#236#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#236#255#255#255'k'#255#255 + +#255#31#255#255#255#10#255#255#255#241#255#255#255#255#255#255#255#255#255 + +#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#255#255#255#255#255#255#255#255#255#255#255#208#255#255#255'A'#255#255#255 + +#17#255#255#255'<'#255#255#255#222#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#222#255#255#255'<' + +#255#255#255#18#255#255#255'A'#255#255#255#208#255#255#255#255#255#255#255 + +#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255 + +#255#236#255#255#255'o'#255#255#255' '#255#255#255#162#255#255#255#250#255 + +#255#255#153#255#255#255#29#255#255#255'f'#255#255#255#234#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#238#255#255#255'w'#255#255#255#27#255#255#255#136#255#255 + +#255#249#255#255#255#179#255#255#255'$'#255#255#255'^'#255#255#255#232#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#26#255 + +#255#255#133#255#255#255#247#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#241#255#255#255'y'#255#255#255#27#255#255#255#139#255#255#255 + +#248#255#255#255#255#255#255#255#255#255#255#255#248#255#255#255#139#255#255 + +#255#27#255#255#255'{'#255#255#255#242#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#247#255#255#255#134#255#255#255#26#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#30#255#255#255#169 + +#255#255#255#254#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + ,#255#255#255#255#255#255#255#255#227#255#255#255'`'#255#255#255'"'#255#255 + +#255#165#255#255#255#165#255#255#255'"'#255#255#255'a'#255#255#255#228#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#254#255#255#255#169#255#255#255#30#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255';'#255#255#255 + +#201#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#209#255#255#255'6'#255#255#255'6'#255 + +#255#255#209#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#201#255#255#255';'#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#255#255#255#1#255#255#255'U'#255#255#255#223#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#132#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#228#255#255#255'f'#255#255#255#2#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#9#255#255#255'w'#255 + +#255#255#242#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#132 + +#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#245#255#255#255#136#255#255#255#12#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#26#255#255#255#153#255 + +#255#255#252#255#255#255#255#255#255#255#132#255#255#255#132#255#255#255#255 + +#255#255#255#254#255#255#255#170#255#255#255#31#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#255#255#255'2'#255#255#255#192#255#255#255#132#255#255#255#132#255 + +#255#255#199#255#255#255'9'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#255#255#255#25#255#255#255#25#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +]); +LazarusResources.Add('TPraButtonStyle_200','BMP',[ + 'BM'#138#16#0#0#0#0#0#0#138#0#0#0'|'#0#0#0' '#0#0#0' '#0#0#0#1#0' '#0#3#0#0#0 + +#0#16#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#255#0#0#255#0#0#0#0 + +#0#0#255'BGRs'#143#194#245'(Q'#184#30#21#30#133#235#1'333'#19'fff&fff'#6#153 + +#153#153#9'='#10#215#3'(\'#143'2'#0#0#0#0#0#0#0#0#0#0#0#0#4#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#18#255#255#255#19#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255'&' + +#255#255#255#170#255#255#255#132#255#255#255#132#255#255#255#187#255#255#255 + +'-'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#18#255#255#255#136#255 + +#255#255#249#255#255#255#255#255#255#255#132#255#255#255#132#255#255#255#255 + +#255#255#255#251#255#255#255#153#255#255#255#22#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#5#255#255 + +#255'f'#255#255#255#235#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#132#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#243#255#255#255#128#255#255#255#8#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255'D'#255#255#255#213#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#132#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#225#255#255#255'^'#255#255#255#1#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#255#255#255'1'#255#255#255#191#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#241#255#255#255'Q'#255#255#255'Q'#255#255#255#241#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#192#255#255#255'2'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#10#255#255#255#158#255#255 + +#255#253#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#250#255#255#255#147#255#255#255#27#255#255#255')' + +#255#255#255')'#255#255#255#27#255#255#255#147#255#255#255#250#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#253#255#255#255#158#255#255#255#10#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255'<'#255#255#255'A'#255#255#255#209#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#172 + +#255#255#255'&'#255#255#255'W'#255#255#255#221#255#255#255#132#255#255#255 + +#132#255#255#255#221#255#255#255'W'#255#255#255'&'#255#255#255#172#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#209#255 + +#255#255'A'#255#255#255'<'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#255#255#255#255#255#255#255#179#255#255#255'"'#255#255#255'^' + +#255#255#255#233#255#255#255#201#255#255#255'>'#255#255#255'8'#255#255#255 + +#195#255#255#255#255#255#255#255#255#255#255#255#132#255#255#255#132#255#255 + +#255#255#255#255#255#255#255#255#255#203#255#255#255'@'#255#255#255'6'#255 + +#255#255#194#255#255#255#237#255#255#255'o'#255#255#255#30#255#255#255#162 + +#255#255#255#254#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#255#255#255#255#255#255#255#255#255#255#255#245#255#255#255'|'#255#255 + +#255#11#255#255#255''''#255#255#255#175#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#132#255#255#255#132#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#177#255#255#255 + +')'#255#255#255#11#255#255#255'|'#255#255#255#245#255#255#255#255#255#255#255 + +#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#241#255#255#255#22#255 + +#255#255#250#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + ,#255#255#255#255#255#255#255#132#255#255#255#132#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#251#255#255 + +#255#23#255#255#255#241#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#241#255#255#255#27#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#132#255#255#255#132#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#27 + +#255#255#255#241#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#241#255#255#255#27#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#132#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#27#255#255 + +#255#241#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#241#255#255#255#27#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#252#255#255 + +#255'a'#255#255#255'a'#255#255#255#252#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#27#255#255#255#241 + +#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#241#255#255#255#27#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#192#255#255#255'0'#255#255#255'L' + +#255#255#255'L'#255#255#255'0'#255#255#255#192#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#27#255#255#255#241#255#255 + +#255#255#255#255#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#241#255#255#255#27#255#255#255#255#255#255#255#255#255#255#255 + +#227#255#255#255'^'#255#255#255''''#255#255#255#180#255#255#255#255#255#255 + +#255#255#255#255#255#188#255#255#255'-'#255#255#255'M'#255#255#255#222#255 + +#255#255#255#255#255#255#255#255#255#255#27#255#255#255#241#255#255#255#255 + +#255#255#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#241#255#255#255#27#255#255#255#245#255#255#255#128#255#255#255#25#255 + +#255#255#136#255#255#255#249#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#251#255#255#255#153#255#255#255#27#255#255#255 + +'o'#255#255#255#242#255#255#255#27#255#255#255#241#255#255#255#255#255#255 + +#255#255#255#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#241 + +#255#255#255#10#255#255#255#31#255#255#255'k'#255#255#255#236#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#236#255#255#255'k'#255#255 + +#255#31#255#255#255#10#255#255#255#241#255#255#255#255#255#255#255#255#255 + +#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#255#255#255#255#255#255#255#255#255#255#255#208#255#255#255'A'#255#255#255 + +#17#255#255#255'<'#255#255#255#222#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#222#255#255#255'<' + +#255#255#255#18#255#255#255'A'#255#255#255#208#255#255#255#255#255#255#255 + +#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255 + +#255#236#255#255#255'o'#255#255#255' '#255#255#255#162#255#255#255#250#255 + +#255#255#153#255#255#255#29#255#255#255'f'#255#255#255#234#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#238#255#255#255'w'#255#255#255#27#255#255#255#136#255#255 + +#255#249#255#255#255#179#255#255#255'$'#255#255#255'^'#255#255#255#232#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#26#255 + +#255#255#133#255#255#255#247#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#241#255#255#255'y'#255#255#255#27#255#255#255#139#255#255#255 + +#248#255#255#255#255#255#255#255#255#255#255#255#248#255#255#255#139#255#255 + +#255#27#255#255#255'{'#255#255#255#242#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#247#255#255#255#134#255#255#255#26#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#30#255#255#255#169 + +#255#255#255#254#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + ,#255#255#255#255#255#255#255#255#227#255#255#255'`'#255#255#255'"'#255#255 + +#255#165#255#255#255#165#255#255#255'"'#255#255#255'a'#255#255#255#228#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#254#255#255#255#169#255#255#255#30#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255';'#255#255#255 + +#201#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#209#255#255#255'6'#255#255#255'6'#255 + +#255#255#209#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#201#255#255#255';'#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#255#255#255#1#255#255#255'U'#255#255#255#223#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#132#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#228#255#255#255'f'#255#255#255#2#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#9#255#255#255'w'#255 + +#255#255#242#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#132 + +#255#255#255#132#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#245#255#255#255#136#255#255#255#12#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#26#255#255#255#153#255 + +#255#255#252#255#255#255#255#255#255#255#132#255#255#255#132#255#255#255#255 + +#255#255#255#254#255#255#255#170#255#255#255#31#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#255#255#255'2'#255#255#255#192#255#255#255#132#255#255#255#132#255 + +#255#255#199#255#255#255'9'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#255#255#255#25#255#255#255#25#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +]); diff --git a/packages/lib/x86_64-win64/PraAbout.dfm b/packages/lib/x86_64-win64/PraAbout.dfm new file mode 100644 index 0000000..6b27e99 --- /dev/null +++ b/packages/lib/x86_64-win64/PraAbout.dfm @@ -0,0 +1,252 @@ +object FPraViewAbout: TFPraViewAbout + Left = 0 + Top = 0 + BorderStyle = bsNone + ClientHeight = 217 + ClientWidth = 291 + 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 Bevel1: TBevel + Left = 0 + Top = 0 + Width = 291 + Height = 217 + Align = alClient + Shape = bsFrame + ExplicitTop = -1 + end + object lbVersion: TLabel + Left = 193 + Top = 49 + Width = 62 + Height = 13 + Alignment = taRightJustify + Caption = 'Version 1.0' + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + end + object Label3: TLabel + Left = 44 + Top = 86 + Width = 204 + Height = 17 + Alignment = taCenter + AutoSize = False + Caption = '(c) 2020-2020 by Paulo Roberto Alves' + ShowAccelChar = False + WordWrap = True + end + object Label5: TLabel + Tag = 1 + Left = 26 + Top = 127 + Width = 250 + Height = 13 + Cursor = crHandPoint + Caption = 'https://github.com/pauloalvis/Delphi-PraButtonStyle' + Font.Charset = DEFAULT_CHARSET + Font.Color = clNavy + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsUnderline] + ParentFont = False + ShowAccelChar = False + WordWrap = True + OnClick = Label5Click + end + object Shape1: TShape + Left = 32 + Top = 104 + Width = 229 + Height = 1 + Pen.Color = clGray + end + object Label1: TLabel + Left = 81 + Top = 23 + Width = 177 + Height = 23 + Alignment = taRightJustify + Caption = 'Pra Components' + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -19 + Font.Name = 'Verdana' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + end + object Image1: TImage + Left = 8 + Top = 2 + Width = 80 + Height = 80 + AutoSize = True + Picture.Data = { + 0954506E67496D61676589504E470D0A1A0A0000000D49484452000000500000 + 005008060000008E11F2AD0000000467414D410000B18F0BFC61050000000173 + 52474200AECE1CE900000006624B4744000000000000F943BB7F000000097048 + 597300000048000000480046C96B3E00000A9D4944415478DAED9C0B6C1C4719 + C767E6EEE2D87767A779D82975EB3B3B495128889242036D50510B42A8455529 + 0189974A0A8ECFF123699C776C277171DE0FC73EDBA550158A04A54420528468 + 78B5690B81A0202094D4F69D8B21758AD3FA1E4E62DFEEC7377B9ECBE67CB677 + 6FF71E71EF2F599ED9C7EC37BF9B9DE7374B494E8644336DC0F5AE1C4083CA01 + 34A81C4083CA0134A8AC0558D61DBEB1BFD27E3E3E9C6DCA3A8037B507E6CDA2 + B49150BADCE771DCC98FB9BD8153F8EF3562630DBE6F3806336DA35A590370E9 + B3306BE4AD7015A5B003A34540E0B4DF5378073FE7F206FE4C095D86E68629C0 + 7EB9C0B1DBFF08BD9C699BB9B202A0BB23F00096B8C3182C17C712038CE9DF04 + E8369FC7FE7DBC0F32697B46015678C3CB642A1F445A1F8F3F370D4061FE2906 + F2DADEEAC2573295878C002CED1CB9C9065223061FC53F96E81A6D00C72F25E4 + 39A0910DFEAA1BFCE9CE4B5A01DED80D057952B006616CC5A873AA6B7500141A + C16B8EDAF22E3DFEAF550B82E9CA537A0002507767E8610CECC3479669BA453F + 40A1FFE2BD3BFCF39DDF212BA994EAACA51CA0AB7DF84E4AD9217CD247F5DC67 + 0060346394FC4506B2CEEF71FE3E95F94B19C0F2EE915B408AB4E023BE9CCC73 + 8C025465F1B8C512A9EFA99CD39B8A7C9A0E7069C705C76592BF1E28D988D1D9 + C9A6631E4045639860278C469AFC6B6F78C7CCFC9A07B00998BB388CA50DF662 + AA2546933319A0D045AC8E77BA2ED83B7EB78346CCC8B629005D1DA14F130AFB + 31B1F799911EAA076458EF5F53F833257D6FE0413495A75F6146E2D8EFF90776 + C4D7FBAB1DBF349A9621803846BD1593D885C1CF9B828D97102CC1D688F3704F + 2DBDA23EB1AC1B6C4352F0111A7D5EB149CF3B4125BAAEAFC6F1B76413480AE0 + 92EEC0FC3199EEC09FF29B18B59A90914B08A68D58465BFB2AE70EF3038BDA86 + 0A23D6BC4D3C6C8D5CD9DD533B2FC0C3AE436FCFA179B62D588E6A88813A56A5 + 085278C2C6A0E95C65E1FF520A50290591B007879FCD189D6382F1CA284296A4 + 8DFD35737CB167F092867595AA2E9D50322B3A466E96A9B48D4C319AD1A9108E + AA0FE89DA8D005D0E50D7D8D12F062B0C004834F6085DE80F5D099284AA0E55D + A18700482BC6164F72CFEBD8BFDBDCB7DA714C4C22947785EF0059C60E3AB9C7 + 049B4680508FDFE3783A2500B9A2E3D8486BB2FD3BD43FF1AFC9E771FE581C70 + 770E7F8400DB8FC1151ACD3E456468F0AD71BE288E947B43F761293D80C10F24 + C78E1E073A56A3773CAD1980AB33F845FF6AC78F62BF7C47E06EC2E8112C311F + D2F8A4010AD0D837E87C9AECA0B29246D7F06290192F710FE9B1655CDC8E6394 + C958228B5EE707EE6902AB7F6168155AD88CD1851AD33943645217FB31F04D70 + 7585BEE0AF72FED054806E6F100D863F3120F5B1E9234D7D3F1AC687B4AB07F9 + 7CD6398FB1062C31F518CDD3092E5E63F8F714B1D146315B5DB2EF4D7BBEBD60 + CD3493164A9FD0BFC0DE2EC6CCCAF41A91F9BCE4DDF8866862A313A022A5E227 + B2155FA1FC7E7E4035FAD8A402322163A50721DF3A3B588B19DB8CD12283E0E2 + 15C2743B66C348CBD9EAE2103F70F3D1F07BAC16B90983ABF0CF327E1DEF407F + D76681ADA2D5555D176B90520950DC1AE62DE3158B63FFF94A3A12BD26702BBE + D207F135BFCC64D8DCB7A6F09C722996545771F0AB94611F0E48A9C9E0E27334 + 809DF0EDFE0BCEEF89AAA2A233781B00ECC51267952CA4FE8DD5CEB3FC78747A + 2DB41EC16FC072615727930680B104FE2313D8E91F743E290C566BBC72E7ADE4 + 07530A6EA25D67D1E066756315536C7A8DEEC5882BD1FD690378D528F22A80BC + D6BFA6E88FE2505947F0138C929F62B0309DF0540AC8401EECAF76FE561CD03A + BD967E8051F5E183AF19AF5E5DA624D5E46A3D946AF106EF1900B601FB996FC6 + E5834F6B954F9740C601627DB8C237E87C39560FA95AB814C33BC908ABEFF5D8 + 4F2B31DE532809DEE5F314BE749D010CBE84A38602ACBCEB85F1CA716509931D + C112E236931AAF8BB16ADBA25EEA2CEF087F18887C044F4A68D78AEB0E208995 + B66B7BF9AAEECCB48B4B1AA42C26A9BB2F09464B27AF738089339AA8FFA54313 + FAA353FC303302A07860C2574DA6F2613CF7316DE4E0341F11F555179E8CD937 + 75D5307300AA1E7D0A8854E7F714FD214A45F4CD089F54B865929BCE23BC6675 + 9FB3AC337C3BE38D5302EF86190E501142801FA8BDAEF838D65E606F885B941A + 45405D166974BB9858D5D93D9AB1008586F175DE953FCF7EF4EC4A3ACA0F941D + 7DC7CD2C967D0A65496A1013AEDC8BEBD250B8064BEC76A27D3C3DE3010AF169 + A9AD09875F243A2CC461E3E12416AFDE35008555BFC626B9BEB7CAF977055C7B + 60093076005FF7FB934AEF5D079098BE2E9C0398039803980398039803980398 + 03980398368001EE0FFD989E67A40C2090365FB5B32EFB010279010DFD94881A + F15B3105209057198386DEAAC29763F9E808FE0A73FDC96C0338044077A957F9 + D54AC66FC51840E827C01A13EE64E2D366DEF05708853D640AF78F74011C458B + DAA825D222FCFADCDF0E95903168A1945AD918DBDE535B30C08FEBF55B491220 + F734D839D7E2E83A5D49B9670459D436522ADBE45D00102136BA4D4C9B95775F + 2C02C9BA0D11D462745626009E9018A913ABFC2ADF4165B3600C30902EB573B7 + 46BF15BD00273868AADC4D3660347F3CBBCA664526395AAFFA190E2F9229FB16 + 89F3B24D25C07394C8EBFA3C45CF8B73FC15C52C1FC10B964E72FB0407C9456D + C10592856C430B3C248197AB46807C56FA27EA6D5E933868C6AB07FFB6A8A7CD + CADB43F70203BEEC7A5BAA00BE8D99DA5D30DF79484C7A0A5F187C5D3FA32D95 + 897593AB3BF05E2A6166E34A800680D73A6892D8AE4F5ED72E261A8406FC8649 + B45EF8482BD54C49F0EBF8ACC711E002530172BF68E1CD54FAE4F05CDB286BC6 + 601549C6473A41EB385E02788B7DFB3400CF104637F8563B5E10F7567406EE92 + 65BA4FEF6EA871716FADCEB15972F3C0A34517E3F36A1A402EFE0BF597842A31 + C8EBB97949181BC7911C8BF7E2722F0C7F095BCA1604F8561CC062658FF005FB + 333107CDF6C01299D1561A75D034AA216E41D9A0A35BCF1E127D9D5CEEBDE90D + ADC45776F7645E4D4988B7964F304A76F656392F28C09E82D97424743FF6299F + E371ECBB3D3C76C5F1FCC03A7A89C72B3A83C53210BE5D96EF12B0996306F463 + F636FA3D8E67F56CE24E6A9410BF3DDF9C0C4CF4648D976ABBAC890E9AD19679 + F48A638FF88174DD6DE4D1A9F0BC8AF91BAAB7AB2A0E42A1CF4DE5CF97849425 + D5441E5C690328547E34F47EB0C0410CDE6752E6B869C77D1EC7033CE4F6867E + 6E6041698278EB4B195D870DD15F0D5B695E866343B64364BC2F652C9329D96C + 38E5B26932327DBBABAA2F65684F9BC900791F764FA23D784695B20DD77C4F1B + CBB36D4A762B834900158F7C6CE1B78B16DE6CA57CCBFF6463CDE96402C01308 + 6EAD589C4F95D2F6D50E97777839258CD78FCBB55C9F344020AF510B7BAC6FB5 + FD17E9C8577ABF1BA3CD856D9C836E80CA9CA499BBD1B528231FDE517588F976 + 5547A26B740054A6CCA875AC514C65A55319FDF4D3545F30D2F8E9A7E31289D4 + BDE199D397A93C64C5C7C7127D436B2A80FC1C95B123ACDAEE9A2965054021F5 + 57DC260118FD2AD124DBCA32A1AC02C825262A0885CFFA3DCE7BF931B737F822 + 027C25DDDFC5D2A2AC0328C4B72C88D911BEBE21B646649BB216E0F5A21C4083 + CA0134A81C4083CA0134A81C4083FA3F0751CCABFD6E1A170000002574455874 + 646174653A63726561746500323032302D30342D32355431383A35323A33372B + 30303A3030B21751C80000002574455874646174653A6D6F6469667900323032 + 302D30342D32355431383A35323A33372B30303A3030C34AE974000000287445 + 58747376673A626173652D7572690066696C653A2F2F2F746D702F6D61676963 + 6B2D3732724D4C3242639FF112BC0000000049454E44AE426082} + end + object Label4: TLabel + Left = 32 + Top = 111 + Width = 229 + Height = 13 + Alignment = taCenter + AutoSize = False + Caption = 'Visit my github for more information:' + end + object Label8: TLabel + Left = 55 + Top = 151 + Width = 40 + Height = 13 + Caption = 'contact:' + end + object Label9: TLabel + Tag = 2 + Left = 103 + Top = 151 + Width = 137 + Height = 13 + Cursor = crDrag + Caption = 'pauloalvis@hotmail.com' + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold, fsUnderline] + ParentFont = False + ShowAccelChar = False + WordWrap = True + end + object Label10: TLabel + Left = 240 + Top = 14 + Width = 3 + Height = 13 + Caption = ' ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + Transparent = True + end + object Button1: TButton + Left = 106 + Top = 184 + Width = 75 + Height = 25 + Caption = 'OK' + Default = True + ModalResult = 1 + TabOrder = 0 + end +end diff --git a/packages/lib/x86_64-win64/PraAbout.ppu b/packages/lib/x86_64-win64/PraAbout.ppu new file mode 100644 index 0000000000000000000000000000000000000000..db8de3e481735509477ec207b2d50423858488d0 GIT binary patch literal 100144 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 F`xm|KWS0N{ literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleBack.ppu b/packages/lib/x86_64-win64/PraButtonStyleBack.ppu new file mode 100644 index 0000000000000000000000000000000000000000..4904472b9275b461372186d9d7edd12baa66ec7c GIT binary patch literal 11329 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 literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleCancel.ppu b/packages/lib/x86_64-win64/PraButtonStyleCancel.ppu new file mode 100644 index 0000000000000000000000000000000000000000..a9dcdc8f7879537404d20cd7415f5dd6d5de9e2a GIT binary patch literal 11407 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 literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleDelete.ppu b/packages/lib/x86_64-win64/PraButtonStyleDelete.ppu new file mode 100644 index 0000000000000000000000000000000000000000..53a2802da3d9866c2af9e56a62e051ab302f830d GIT binary patch literal 11407 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 Xy*R8nDc;mvj`%Y;zSFjxkjMWIBUk4w literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleEmail.ppu b/packages/lib/x86_64-win64/PraButtonStyleEmail.ppu new file mode 100644 index 0000000000000000000000000000000000000000..aa798c8d356950a32f3d78dd9f68e15e12b50d15 GIT binary patch literal 11368 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 ao{Q)?;w8gL@tWZZ#9zSi?RMmZ-2Z=t#_;a| literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleGear.ppu b/packages/lib/x86_64-win64/PraButtonStyleGear.ppu new file mode 100644 index 0000000000000000000000000000000000000000..3c7e47ad1f0da0e8b2eb149efd17015e7c2f612d GIT binary patch literal 11329 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 X>%?oClj1GSWr@Fn<2!B333>GY^3vw7 literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleHeart.ppu b/packages/lib/x86_64-win64/PraButtonStyleHeart.ppu new file mode 100644 index 0000000000000000000000000000000000000000..6c8df51fa983ebbf8e860488e9525c431ef94a6b GIT binary patch literal 11368 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 literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleMenu.ppu b/packages/lib/x86_64-win64/PraButtonStyleMenu.ppu new file mode 100644 index 0000000000000000000000000000000000000000..1d3f04e88a1b974e2c9bdfd5c8914221fe5d5a5f GIT binary patch literal 11329 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 Y=0@?R=A?L6b6MiA;P_74azdW?KcSZDW&i*H literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStylePrint.ppu b/packages/lib/x86_64-win64/PraButtonStylePrint.ppu new file mode 100644 index 0000000000000000000000000000000000000000..1dc62ffd13223f47686ee98929fb05b44e4b0fad GIT binary patch literal 11368 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 literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleSave.ppu b/packages/lib/x86_64-win64/PraButtonStyleSave.ppu new file mode 100644 index 0000000000000000000000000000000000000000..80b92bc54e2337989a032418ce2cd2c0fe5ac294 GIT binary patch literal 11329 zcmcIqX>c6H74DvuwCnqnu`CJO^7<6MOCIX>EzJWg)Hc5eOo< zI2^)NfdEdqOaetHjtU77@*^CE5GO!@#3X?#LK3b}t`tQPCyoW>d|yxZ?99$$TRz(E z*KfMN_xiopJ>5O6ZD?pJo3qGzDI_L~-r*&p;5;D?9^PB=<;t1SQX#|@$VUneHjP3l z<;aHamddTE)RxY8YR9Hzyyco?4jY<4L?JnAj2|+qtEK1Y({ol4B?Ec!9X+Y!<^wOC zGkjd#M}OZRd3S%_mi1Qw^YLqgW?jE?|3gc+Z(BJ8YGR$KWcP-a)@09`uLB)&_Gho% z*z>1wXjyklS9?cm&#b@P_et5s=ihs1%^Rx=s5*CamcF-GXkwCiiUt)8DLO#Wfr_>% zI!Mt*MOQCHAxBXxFTN(8h^`DRYpiIfiB-jiG&EMk>Jrh$>WZppJcQP!M65O*LbYNB zfT^mliznhALR^l>r4d0XLQ)8@BOAyB@c(8hRIS8=d?ptZrLapSG~h&lK_>zXIT2vk zi2x%sfEJ5T79&TU2#`;J_KHg2RTed4(2ktDv5n zmIAGN4%I+Mv(u~0GPF*kr5e4%>NEyaqjyN1#vIk? z9Zsh)S2cQv(rL_7jox8&8iT4aJ%r-M}U+bzj9ppG-nP?|o@`Mn3 zy>ei}h<;N&whZIpY4my=EyMhtW_DyINM?PJUsM!1%LJzu5$=Uq3j}UfX^Zvklmav0D%~{rO;huft_j{?nCmrD@GCF@NR55jH0?A@uVIFO zQJOymlf%C9z$jxJCaA#$yEGG2?<&AS^=6W(GEGYiQ(>5tVYV9P8gwJ%SL!ry8F|GW z83t|-TjsFNByOyu68_CvbPW|20###x*lzGoh!MJC2+H5Xw%mgx?~{B&@;S*75{_5y zK$1};MI@6+W|1r+K?kB7Obof4ig_fku24q;+iuJ8z&gS%?vtpYPZRz1M7dPI1^`!4N?z-6d%54ilXSbfzN#r6jhvqM_Hl1X+WQ*X2=D7qxV(QD zk5(xv#5!b?t^{*Z-d_#iHcH9e9`EZ<*?Tof>YEa^vAWZo0E3lX=chx^!3u<63kp{V z9>=3q%1Lw`vPn09IjIob4d8v0k~exnu}CZbaVH8_Bp$@0 zRmvA;FS1EL0&`N4_&I>Tq?Fw1iNuOijzlCDuc)j&-FIQQvgyLK`;V~#?mvaX(F@HLxLV<;obM>snlKC^^~;DCV=l>s?Tf$e?roJ=%6 zkW{D&P$E?LpeMSIA+;9pGGVH!VXY86FWiRGD&>wd*VVEBd~OK69yf@PtOGDXLD@RN z9mIwGoIa6gJkeOc28#L{Fy5;OSuxxR*ixDU(HXdUi)F8j~&EU2=N`1c=XP`LbT!Q&`ICdys?HeU+FIjRX23BrnYt`X`qmE)rWzS zdqB&KRZp0+D6OJl24B6Ub!$(u4W>e@EG_n9EjED-NDGmzqR~c7-4xbuO>OGvRF{Q9 z&P&Tau4Nf0ri+lRqCz99yL78i;gj>zDxT3Q%oj$PQZd}9h;;O{tlyMuvv2~0xE@!q}7ch)K0yVz)$A$R1j+>xp^cDNca_C6^_#C+=Dg|EkZ`q zIu{Xdr`~e#m3)qXSj)*ZkTjC;;@c`5=QYu-x�rtJA6z6th$B<=~t7+yY{4B)6GF z-E1!hV-*h5s?Fd}LamU?()zBZfSr1Gg1?r}-v+UEk=spj8%YG&DjeWUkT9NwtVwIS zohUo?{s8>_eBJ|MJxJ~ml1E9nNLqyhsmY#1e0hY7rByvfn4Nl`2LCLdp98U;C-(}; zt0dfrt^7b;avNV#XAza+09%o)KH4p3a*bWV1qzdg>p>wm{kG(WY#-HVM&kX&TQ;jH z4}0Hu8(@%TS>;=x7KNffc*7i?G=$`?ty5ermgdO?ovRi+H*}qba_%!ZTFa*M(G5*% zs5-s7q4T)tc%YpcYL;|I>-^G8=r#?Vzy>4-y5KxMx((>nP_t?~(1pA~@IY_XP_sHa z&_%N{p?7PjS&$v*VqTzlwC>T+ayB42&?TxLx2+FpXpN1u7tErZ@P@f_xa4}&KB2J< zKI~lXDjw{!8hfb^TQ)Bf`+~+^>BG*OpNajo#A%^_P(vL z+kM!Di!!l)*4SPjc99w!cYNR1*js$q#Y-~veyFi``mjsR&%}PFvG-+S%jR5=iTzw- z_xZ4MFU-Uq*4Ur;uw^`acw*M4u|M@;=Pk{|N*u|Up0kVeJS&^e8#9mIpvJ!F!!9Ui zl{>yeH1>eTvatF%WO5#lh+}j+>&Jl)hF-D1&{&Z*@ho}V`$8_Nu8*b)YJo|)EV;5y zqJoGJ(@~<*@*Hz37088F_eZFm3pC zgOl4^lU*tNDL&bnin14Xz`AtTJ5UbfC~~E@N(S0OEp2Vx)tMsS(jvQ1;)~BaO_pV% zZz3Ab-+|KS{6w_frPWdJ9`I*iL^v1KIlUyfIoZ?GvN2gh?Z$65@729Nf>QbIo>n}1 zI%vKbj}i?heumQLL{m5csp=1ix53PUtHJQH&maPSm^6bYeVhgcH+H`kdhBIH8VQ?vYre zdo4%lbK(-3W6*S>l4v-w0;SIh?qw^rItpF_{tPUgoGycaGf^lrff#>v*Z?+QMdKSs1Stt zs#!-sR5D*wjH-K$<+roPsC%?gdyP>u07ze(t#ae3Y#;FzSesFzOF9jFAE{J-AeBdh z;3x38ILi;*R--}4N%rxFHZ(;vwq1{oXZvG0jTUltfl~39qV_G49DTgcUd~u2o=<5pRoBOkjXuom*kX2hcds020 z$tS-%^6{<@zPj+qJ075xOE{OstW_%$&0+6tD*xEcziDUrYj=({J60F#r$l2S5$jhU zhn0OY4@H5p&-}K}w#xqNI)2XB++5vI)!fsSZ0*?4(c0YJ(%H5t*)8SVSS+GCO#cp$ zlE=9;mezd8;3mGmV$+p<_D>L%bxxNNOt)xNBHYp0*3pe)+aPPA9f;$ArPWT?SMh4! zg8PGzM}L4FAN3FK#yUqC*9{5JA? z$V~EUzU=Zc@`}R`mT*_Zx>CNrpStGZA@CN~hv5Uz@QtZ3`*iB)>_~-=9h3itlK)Vt zbpM4xSOuI}__cvw`gjUyg<7o~2mI@nvDCY=P)fhv=6zaAq-^Aw!D%zEmC`TccH23` z6{p{>brg^ZyKxTr{Gu$5aE7QbT(0nI?L|n6uT+PS>Z_n^oFniH)UkX~x6#~J!E@bQ XFW%Ig6z^y*NBk8W-)UP;$YcKpk;Uoq literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleTemplateDanger.ppu b/packages/lib/x86_64-win64/PraButtonStyleTemplateDanger.ppu new file mode 100644 index 0000000000000000000000000000000000000000..79c27c6ba99bdd94d2d72f0940fdbd6e7a9b8a3b GIT binary patch literal 22683 zcmdU13w&0^mA`Y7KzPbqAVFRUpaIM~0bM2Jtq?-KgomgQ$Ol9qp-B+1t;ScuM}<<` z1#PRPqEzc^eYdruZT-<|wRK(VcCD>zxBjT@&$_NHns(X$|J-w5-E7F0!9ZwKA>F5!0;p6_$1LJ?p9;J9E#j8q2btMJRpriEWb* z8117d+WKfe|>I1>)OkJ`HvTd%)RQ0=k7Xh$M(g;V6eKSBigpU zab2{1<=>N<&DqCZxVHVZjMU1u#;qHh*R{`megE%s&!7L*cUS&w`E;62IiuHBwAuiX z%mCp7g{KN1Bz&;&CgDSb*9l){$jLq_{3HOLNFNm3Bq>89=D z;)>WTGD4uEq~A`4TUsib;Fp3~$1%MKV$2A)g*z=u7CA-uK(DxG+H~VwPic!X>{w5k zB+9T;J!P^eeTR


- PraButtonStyle + PraButtonStyle in (Delphi, Lazarus)

-

Button with very attractive layout, standard bootstrap to Delphi VCL

+

Button with very attractive layout, standard bootstrap to Delphi/Lazarus VCL

@@ -37,6 +37,7 @@ ## Features - **Delphi-VCL** — Tested on the latest delphi. +- **Lazarus-VCL** — preparing and converting to lazarus. compiled delphi; developing lazarus. ## Documentation From 7c1d810a65f41913fa97d161e9144f2e1fe7a0d9 Mon Sep 17 00:00:00 2001 From: Francisco Aurino Date: Tue, 17 Jan 2023 01:04:53 -0300 Subject: [PATCH 3/4] developing lazarus. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e0d6f6e..d6e6d12 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,6 @@ Add the folder directory to the Library path in Delphi inside the Tools->Options menu. The Options window will show up and there you have to click on Environment Options->Delphi Options->Library, select the right platform (32 or 64 bits) and add directory in Library path. - ## License This project is licensed under the MIT License - see the [LICENSE](https://opensource.org/licenses/MIT) page for details. From bcbd6608ec22f03408bec69877fa311ce9d6cfb3 Mon Sep 17 00:00:00 2001 From: Francisco Aurino Date: Tue, 17 Jan 2023 01:11:05 -0300 Subject: [PATCH 4/4] delphi/lazarus fix --- source/PraButtonStyle.pas | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/PraButtonStyle.pas b/source/PraButtonStyle.pas index fa14556..cb0e795 100644 --- a/source/PraButtonStyle.pas +++ b/source/PraButtonStyle.pas @@ -29,8 +29,7 @@ // SOFTWARE. // // *************************************************************************** -{$mode delphi} -{$ifdef mswindows} {$apptype console}{$endif} + unit PraButtonStyle; interface

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 bikx-pRSG0&jDIL-qN&zunvn=b!)N{%X&h(C literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleTemplateHeart.ppu b/packages/lib/x86_64-win64/PraButtonStyleTemplateHeart.ppu new file mode 100644 index 0000000000000000000000000000000000000000..062568e065dd173d5bb0420094c3f65a7856010a GIT binary patch literal 22623 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 a%v+~YAW8H2cZ4RJY^|mniC`3b`hNjDI&*da literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleTemplateInfo.ppu b/packages/lib/x86_64-win64/PraButtonStyleTemplateInfo.ppu new file mode 100644 index 0000000000000000000000000000000000000000..6282832445d4d0934c4cdcac3901d7cc2fc47e90 GIT binary patch literal 22590 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 literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleTemplateLight.ppu b/packages/lib/x86_64-win64/PraButtonStyleTemplateLight.ppu new file mode 100644 index 0000000000000000000000000000000000000000..c3b9c06fa94a93347807f02b0cdb8f80bf6911b8 GIT binary patch literal 22624 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 literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleTemplatePrimary.ppu b/packages/lib/x86_64-win64/PraButtonStyleTemplatePrimary.ppu new file mode 100644 index 0000000000000000000000000000000000000000..a281a5e3f133133dce81e053b0a46de73ebb4a52 GIT binary patch literal 22738 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 W7)a6q{?Vd|CR?j%Mj{vmpZy=wH=OqX literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleTemplateSecondary.ppu b/packages/lib/x86_64-win64/PraButtonStyleTemplateSecondary.ppu new file mode 100644 index 0000000000000000000000000000000000000000..c56093fa9e00502774b24322ff29069603c8235b GIT binary patch literal 22835 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 literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraButtonStyleTemplateSuccess.ppu b/packages/lib/x86_64-win64/PraButtonStyleTemplateSuccess.ppu new file mode 100644 index 0000000000000000000000000000000000000000..55e4e69ac665115622afa336947de8e97b34e5a4 GIT binary patch literal 22737 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 literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraInterfaces.ppu b/packages/lib/x86_64-win64/PraInterfaces.ppu new file mode 100644 index 0000000000000000000000000000000000000000..919fac3035a31fca3678e4cb5f3afb944f7b8348 GIT binary patch literal 18286 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 NT3!eeVLScl{{x;atpfl6 literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/PraUtils.ppu b/packages/lib/x86_64-win64/PraUtils.ppu new file mode 100644 index 0000000000000000000000000000000000000000..8f450999b7dfc458945565d330816aaba2c029d6 GIT binary patch literal 1486 zcmZ`(O-vI}5Pq{jSwW@z6bVWsxG0E0BqS0Jm{Mw8g?8QDLI{bq))i_hZMr3b2Q{A5 zm~b=7)t|(0(RlPC^`OQWj7Fm;L;O1sFP@NU>YLf!21F-$Z|2S4n|br?DoVJsW4|yj zvSxPC-Nf#eFm}0eY5SAv>CFOTY!hEs`}f}2z&U`Zq@&?XJYg2&G0ZnsiIT9q{dqhf95lsA(GJ`MLX^#+lcb=9X%=iaZ@%pLH)h4?boqZ)eAkm#W5? ze=3z;xc1}0y-%T6%FLUknt(B3q%or}nMfG1OguSZetY^Zb}KhG@$lo~_X;epq^wYN z5_?4g7wx6Ai?n0w49aLfNqaf%D(%BHoIy3liviWE9Fl#SOB>O2|KJ!}DuDqLfw3Zf zYTyE(unn~(806v{HEVpxxz3KHfFj$yoSXp@^626*N5F;{{Gz#xqD;~k;)uFAoHB)xCWK{-9qU4yi}%r^0Mli7<*~khF|CB;hBWSFndxJU6+#L(#;f zK~+Fkv&Fd?L5ft%7oU?gOCg6Upd_$@<3lqv6fkVfcn44#nqq@JIBV`}Eup@{idVC+ z&}_xn`5g4(bqrccD4&P!azKnNFle<*c9?@@sup&y39}(hxPUgx)I=HoiEMl)274?& zoE0>R&KF?e*0wcrTMODfJWoc6$1;;?BXmkN%;aP`W?0zovc?PyZ$yF|)(=(Ip$Pkf zqjcyX5zyQ+G^j@;=L>{_BQ!n{&q(<^1h|)sp3qHGv4eyPIVkH=L~>%*2cst;vQVP14y$%HwibMN v(N4a=Q&q^1FGMw2Ka*|?QourX3drrk2#wy>)*-|5KE5c7bHXa;oFM-PB0TCt literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/button1.ppu b/packages/lib/x86_64-win64/button1.ppu new file mode 100644 index 0000000000000000000000000000000000000000..42a619e269208cc0ca5c137fb689624c3a4dcb3d GIT binary patch literal 90725 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 literal 0 HcmV?d00001 diff --git a/packages/lib/x86_64-win64/laz_pracomponents.compiled b/packages/lib/x86_64-win64/laz_pracomponents.compiled new file mode 100644 index 0000000..d5edadd --- /dev/null +++ b/packages/lib/x86_64-win64/laz_pracomponents.compiled @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/lib/x86_64-win64/prabuttonstyle.ppu b/packages/lib/x86_64-win64/prabuttonstyle.ppu new file mode 100644 index 0000000000000000000000000000000000000000..50c8d7fed12595aec06ddbae24e42dd08362e594 GIT binary patch literal 15327 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 + + + + + diff --git a/packages/lib/x86_64-win64/pracomponents.ppu b/packages/lib/x86_64-win64/pracomponents.ppu new file mode 100644 index 0000000000000000000000000000000000000000..02a59b9a3938c57134ccb04e33820a4d39a06934 GIT binary patch literal 2993 zcma);e{54#6vy9f*%)K()^=kXzYy^XT=wYIO~ zKoR7}0MP|R0e=h#8bo23fub=?7;4o0fg%ongeVDsK}nS4$N+fep#wJrER`SJDF3k| zH8^hp)pU0bHa)kf`IlYU@otMCc}0J(nqN0AZ^gp%6VH5NPze0NhxqZRS30m0{2g)|cm)TF=v zj#*czm_9`m!rYQKhdW>0rL8@^<5$J>$EjQX?POEvkxyH?&Mn_OTTz}(iilx(_5L#Z zs`j>T)=&KQoFcwml%g*^QPB3eqj#idSI-Z}-+fN^=+#Zd)xC=NRbnU@ zmXB`mw0X8(YW=Jr5LCo>2~UZ~|86l~vX@vd=O6bBi*K)6421lGES3vWy%=7%(`);n zxVg!)|3GwTGGVwOXYVto-o3K++0*>CJxOHHwy*0?b{##d+PUY8g^LRkN5l5*{pn)y zmg&u@E2m9Zl_Z=^staD}-a7x{1pCK_{>`-{30L8(pD*t`cxdMQ>7CB+ax2d8iPO@q z283|qv8L9k&D==t)Pa@H7baG^L~l^4rP@JxH3I^wF)wm;n;%OO)fM%6#Yp6b`;K+x zzt*<>k4ci4L|H9_C7)E^xu(uoxbL5q_fA;V8k*lG$zr%pph0S`t9@j2Pv`PTmvIpF zSb|bSj`Wb$7xcSBzx0;2HmA|29@*!Qtk#_^JYs0nt}P$^Has-X3r6LE>%U6bZCcu1 z+Ow}iUm+|K!qJG6o*ttI8qc*WfhLqC14vUOSn{5jmvGd>nqGN%~c+k(`=b$o?^8*+>^D=Ds!2~ z?XGmV+%*-}hhd72aD+>vD1)hL!lgh7MJaFxj|tprsi6X+`Q{THxJfS(ZWh>RT?Pv- zas}_N7E!wZ?)i8!^7I);(ntz?V<-4n)%P$@`t6>|vZ+q9s}McuDd-tSZwRlzAqY4! zSdEGzuzAI)1S$fxsmg$=5vWoeZU#qKFV&4i9blgD3P@Ohk=Q7b!ICBn$506k;Ydba z^5TG)=p`AZk?H&zFnQ#Tj0k*v~4`R-QD_}Hb8&KO%Qh+MkpxXT8 zD?qlgy{j!ro|GXr1KXC_Pf{SQhN)Q6QP60nXtELKCm zYUp|vQy1dOiZON)Y-0D>Nz&a#aDcHMgX@a!92}W!K)Id;e*kMqg2ot{;Vg1Q&*CFe z_&X6g2d5bBB1a6=@Mnmk%7|;|x2PDeb8$j8%Mil}CGIV3=P|(uj0kGN-=cRubB;wP z{t@H*AU>4&N)S`=5r@98# l&36N u!rH$GEeiA5;SXKx9@;YNc1*RXvq@G38I {43D2776C-0763-4C18-B2B1-846ECC39F391} pracomponents.dpk - 18.8 + 19.2 VCL True Debug @@ -18,26 +18,6 @@ Base true - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - true Base @@ -88,21 +68,7 @@ None android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar;google-play-services.dex.jar rtl;dbrtl;$(DCC_UsePackage) - - - None - rtl;dbrtl;$(DCC_UsePackage) - - - None - rtl;dbrtl;$(DCC_UsePackage) - - - None - rtl;dbrtl;$(DCC_UsePackage) - - - rtl;dbrtl;$(DCC_UsePackage) + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -404,7 +370,6 @@ 1 - Contents\MacOS 0 @@ -413,6 +378,10 @@ classes 1 + + classes + 1 + @@ -435,6 +404,10 @@ library\lib\armeabi 1 + + library\lib\armeabi + 1 + @@ -447,12 +420,20 @@ library\lib\mips 1 + + library\lib\mips + 1 + library\lib\armeabi-v7a 1 + + library\lib\arm64-v8a + 1 + @@ -465,12 +446,20 @@ res\drawable 1 + + res\drawable + 1 + res\values 1 + + res\values + 1 + @@ -497,36 +486,70 @@ res\drawable 1 + + res\drawable + 1 + res\drawable-xxhdpi 1 + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + res\drawable-ldpi 1 + + res\drawable-ldpi + 1 + res\drawable-mdpi 1 + + res\drawable-mdpi + 1 + res\drawable-hdpi 1 + + res\drawable-hdpi + 1 + res\drawable-xhdpi 1 + + res\drawable-xhdpi + 1 + @@ -583,24 +606,40 @@ res\drawable-small 1 + + res\drawable-small + 1 + res\drawable-normal 1 + + res\drawable-normal + 1 + res\drawable-large 1 + + res\drawable-large + 1 + res\drawable-xlarge 1 + + res\drawable-xlarge + 1 + @@ -628,6 +667,10 @@ 1 .framework + + 1 + .framework + 0 @@ -637,6 +680,10 @@ 1 .dylib + + 1 + .dylib + 0 .dll;.bpl @@ -659,6 +706,10 @@ 1 .dylib + + 1 + .dylib + 0 .bpl @@ -668,6 +719,9 @@ 0 + + 0 + 0 @@ -680,10 +734,39 @@ 0 + + 0 + 0 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + 1 @@ -816,6 +899,16 @@ 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + 1 @@ -838,6 +931,66 @@ 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + 1 @@ -937,6 +1090,16 @@ 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + 1 @@ -948,6 +1111,16 @@ 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + 1 @@ -992,10 +1165,93 @@ 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + 1 + + 1 + @@ -1010,6 +1266,7 @@ + 1 @@ -1029,12 +1286,20 @@ Contents\Resources 1 + + Contents\Resources + 1 + library\lib\armeabi-v7a 1 + + library\lib\arm64-v8a + 1 + 1 @@ -1050,6 +1315,9 @@ 1 + + 1 + 0 @@ -1101,10 +1369,6 @@ False - False - False - False - False True False diff --git a/packages/pracomponents.lpk b/packages/pracomponents.lpk new file mode 100644 index 0000000..afee5e2 --- /dev/null +++ b/packages/pracomponents.lpk @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/PraButtonStyle.pas b/source/PraButtonStyle.pas index 8af83a7..fa14556 100644 --- a/source/PraButtonStyle.pas +++ b/source/PraButtonStyle.pas @@ -2,6 +2,7 @@ // Delphi PraButtonStyle // // Copyright (c) 2020-2020 Paulo Roberto Alves +// convertido para Lazarus FCP 2023 Francisco Aurino // // https://github.com/pauloalvis/Delphi-PraButtonStyle // @@ -28,12 +29,28 @@ // SOFTWARE. // // *************************************************************************** - +{$mode delphi} +{$ifdef mswindows} {$apptype console}{$endif} unit PraButtonStyle; interface uses + + +{$IF DEFINED(FPC)} + Graphics, + buttons, + SysUtils, + Classes, + System.UITypes, +LCLStrConsts, LCLType, LCLProc, LMessages, LCLIntf, InterfaceBase, + Controls, + Messages, + Windows, + Math, + PraInterfaces +{$ELSE} // DEFINE DELPHI Vcl.Graphics, Vcl.buttons, System.SysUtils, @@ -43,7 +60,9 @@ interface Winapi.Messages, Winapi.Windows, System.Math, - PraInterfaces; + PraInterfaces +{$ENDIF} ; + type TPraAlignment = (paLeftJustify, paCenter); @@ -266,7 +285,6 @@ TPraButtonStyle = class(TGraphicControl) public property Focused: Boolean read GetFocused; property CanFocus: Boolean read GetCanFocus; - procedure SetFocus; procedure Click; override; procedure Assign(Source: TPersistent); override; @@ -286,20 +304,23 @@ TPraButtonStyle = class(TGraphicControl) property Constraints; property ParentShowHint; property ShowHint; - property Touch; + //property Touch ; + {$IF DEFINED(DELPHI)} property Touch , {$ENDIF} property Visible; property OnContextPopup; property OnDragDrop; property OnDragOver; property OnEndDock; property OnEndDrag; - property OnMouseActivate; + //property OnMouseActivate; + {$IF DEFINED(DELPHI)} property OnMouseActivate , {$ENDIF} property OnMouseDown; property OnMouseEnter; property OnMouseLeave; property OnMouseMove; property OnMouseUp; - property OnGesture; + // property OnGesture; + {$IF DEFINED(DELPHI)} property OnGesture , {$ENDIF} property OnStartDock; property OnStartDrag; property OnClick; @@ -353,7 +374,14 @@ TPraButtonStyle = class(TGraphicControl) implementation -uses Vcl.Forms, +uses + + {$IF DEFINED(FPC)} + Forms, + {$ELSE} // DEFINE DELPHI + Vcl.Forms, + {$ENDIF} + PraButtonStyleSave, PraButtonStyleEdit, PraButtonStyleGear, diff --git a/source/PraButtonStyleBack.pas b/source/PraButtonStyleBack.pas index 82f97de..df9c324 100644 --- a/source/PraButtonStyleBack.pas +++ b/source/PraButtonStyleBack.pas @@ -36,8 +36,11 @@ interface uses PraInterfaces, - Vcl.Graphics; - +{$IF DEFINED(FPC)} + Graphics +{$ELSE} // DEFINE DELPHI + Vcl.Graphics +{$ENDIF} ; type TPraButtonStyleBack = class(TInterfacedObject, iPraButtonStyleTemplateType) private @@ -73,9 +76,17 @@ TPraButtonStyleBack = class(TInterfacedObject, iPraButtonStyleTemplateType) implementation uses + +{$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts +{$ELSE} // DEFINE DELPHI PraUtils, System.SysUtils, - PraConsts; + PraConsts +{$ENDIF} ; + constructor TPraButtonStyleBack.Create; begin diff --git a/source/PraButtonStyleCancel.pas b/source/PraButtonStyleCancel.pas index ee06386..7eaca7b 100644 --- a/source/PraButtonStyleCancel.pas +++ b/source/PraButtonStyleCancel.pas @@ -35,8 +35,14 @@ interface uses + +{$IF DEFINED(FPC)} + PraInterfaces, + Graphics +{$ELSE} // DEFINE DELPHI PraInterfaces, - Vcl.Graphics; + Vcl.Graphics +{$ENDIF} ; type TPraButtonStyleCancel = class(TInterfacedObject, iPraButtonStyleTemplateType) @@ -73,9 +79,15 @@ TPraButtonStyleCancel = class(TInterfacedObject, iPraButtonStyleTemplateType) implementation uses +{$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts +{$ELSE} // DEFINE DELPHI PraUtils, System.SysUtils, - PraConsts; + PraConsts +{$ENDIF} ; constructor TPraButtonStyleCancel.Create; begin diff --git a/source/PraButtonStyleClose.pas b/source/PraButtonStyleClose.pas index 2afefc5..35c032d 100644 --- a/source/PraButtonStyleClose.pas +++ b/source/PraButtonStyleClose.pas @@ -35,8 +35,14 @@ interface uses + +{$IF DEFINED(FPC)} + PraInterfaces, + Graphics +{$ELSE} // DEFINE DELPHI PraInterfaces, - Vcl.Graphics; + Vcl.Graphics +{$ENDIF} ; type TPraButtonStyleClose = class(TInterfacedObject, iPraButtonStyleTemplateType) @@ -73,9 +79,15 @@ TPraButtonStyleClose = class(TInterfacedObject, iPraButtonStyleTemplateType) implementation uses +{$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts +{$ELSE} // DEFINE DELPHI PraUtils, System.SysUtils, - PraConsts; + PraConsts +{$ENDIF} ; constructor TPraButtonStyleClose.Create; begin diff --git a/source/PraButtonStyleDelete.pas b/source/PraButtonStyleDelete.pas index 26e9355..cdb30e3 100644 --- a/source/PraButtonStyleDelete.pas +++ b/source/PraButtonStyleDelete.pas @@ -35,8 +35,13 @@ interface uses - PraInterfaces, - Vcl.Graphics; +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; type TPraButtonStyleDelete = class(TInterfacedObject, iPraButtonStyleTemplateType) @@ -73,9 +78,15 @@ TPraButtonStyleDelete = class(TInterfacedObject, iPraButtonStyleTemplateType) implementation uses +{$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts +{$ELSE} // DEFINE DELPHI PraUtils, System.SysUtils, - PraConsts; + PraConsts +{$ENDIF} ; constructor TPraButtonStyleDelete.Create; begin diff --git a/source/PraButtonStyleEdit.pas b/source/PraButtonStyleEdit.pas index 5e8262c..27d7243 100644 --- a/source/PraButtonStyleEdit.pas +++ b/source/PraButtonStyleEdit.pas @@ -35,8 +35,14 @@ interface uses - PraInterfaces, - Vcl.Graphics; + +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; type TPraButtonStyleEdit = class(TInterfacedObject, iPraButtonStyleTemplateType) @@ -73,9 +79,15 @@ TPraButtonStyleEdit = class(TInterfacedObject, iPraButtonStyleTemplateType) implementation uses +{$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts +{$ELSE} // DEFINE DELPHI PraUtils, System.SysUtils, - PraConsts; + PraConsts +{$ENDIF} ; constructor TPraButtonStyleEdit.Create; begin diff --git a/source/PraButtonStyleEmail.pas b/source/PraButtonStyleEmail.pas index 24e4dc7..fd0e8d1 100644 --- a/source/PraButtonStyleEmail.pas +++ b/source/PraButtonStyleEmail.pas @@ -35,8 +35,14 @@ interface uses - PraInterfaces, - Vcl.Graphics; + +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; type TPraButtonStyleEmail = class(TInterfacedObject, iPraButtonStyleTemplateType) @@ -73,9 +79,15 @@ TPraButtonStyleEmail = class(TInterfacedObject, iPraButtonStyleTemplateType) implementation uses +{$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts +{$ELSE} // DEFINE DELPHI PraUtils, System.SysUtils, - PraConsts; + PraConsts +{$ENDIF} ; constructor TPraButtonStyleEmail.Create; begin diff --git a/source/PraButtonStyleGear.pas b/source/PraButtonStyleGear.pas index 72347f2..235a19b 100644 --- a/source/PraButtonStyleGear.pas +++ b/source/PraButtonStyleGear.pas @@ -35,8 +35,14 @@ interface uses - PraInterfaces, - Vcl.Graphics; + +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; type TPraButtonStyleGear = class(TInterfacedObject, iPraButtonStyleTemplateType) @@ -73,9 +79,15 @@ TPraButtonStyleGear = class(TInterfacedObject, iPraButtonStyleTemplateType) implementation uses +{$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts +{$ELSE} // DEFINE DELPHI PraUtils, System.SysUtils, - PraConsts; + PraConsts +{$ENDIF} ; constructor TPraButtonStyleGear.Create; begin diff --git a/source/PraButtonStyleHeart.pas b/source/PraButtonStyleHeart.pas index fee63a8..84811e6 100644 --- a/source/PraButtonStyleHeart.pas +++ b/source/PraButtonStyleHeart.pas @@ -35,8 +35,14 @@ interface uses - PraInterfaces, - vcl.Graphics; + +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +vcl.Graphics +{$ENDIF} ; type TPraButtonStyleHeart = class(TInterfacedObject, iPraButtonStyleTemplateType) @@ -73,9 +79,15 @@ TPraButtonStyleHeart = class(TInterfacedObject, iPraButtonStyleTemplateType) implementation uses +{$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts +{$ELSE} // DEFINE DELPHI PraUtils, System.SysUtils, - PraConsts; + PraConsts +{$ENDIF} ; constructor TPraButtonStyleHeart.Create; begin diff --git a/source/PraButtonStyleInsert.pas b/source/PraButtonStyleInsert.pas index 2a9da26..75e604a 100644 --- a/source/PraButtonStyleInsert.pas +++ b/source/PraButtonStyleInsert.pas @@ -35,8 +35,14 @@ interface uses - PraInterfaces, - Vcl.Graphics; + +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; type TPraButtonStyleInsert = class(TInterfacedObject, iPraButtonStyleTemplateType) @@ -73,9 +79,15 @@ TPraButtonStyleInsert = class(TInterfacedObject, iPraButtonStyleTemplateType) implementation uses +{$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts +{$ELSE} // DEFINE DELPHI PraUtils, System.SysUtils, - PraConsts; + PraConsts +{$ENDIF} ; constructor TPraButtonStyleInsert.Create; begin diff --git a/source/PraButtonStyleMenu.pas b/source/PraButtonStyleMenu.pas index fba8092..1550b1b 100644 --- a/source/PraButtonStyleMenu.pas +++ b/source/PraButtonStyleMenu.pas @@ -35,9 +35,14 @@ interface uses - PraInterfaces, - Vcl.Graphics; +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; type TPraButtonStyleMenu = class(TInterfacedObject, iPraButtonStyleTemplateType) private @@ -73,9 +78,15 @@ TPraButtonStyleMenu = class(TInterfacedObject, iPraButtonStyleTemplateType) implementation uses +{$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts +{$ELSE} // DEFINE DELPHI PraUtils, System.SysUtils, - PraConsts; + PraConsts +{$ENDIF} ; constructor TPraButtonStyleMenu.Create; begin diff --git a/source/PraButtonStylePrint.pas b/source/PraButtonStylePrint.pas index f3f727f..fa098fd 100644 --- a/source/PraButtonStylePrint.pas +++ b/source/PraButtonStylePrint.pas @@ -35,9 +35,14 @@ interface uses - PraInterfaces, - Vcl.Graphics; +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; type TPraButtonStylePrint = class(TInterfacedObject, iPraButtonStyleTemplateType) private @@ -73,9 +78,15 @@ TPraButtonStylePrint = class(TInterfacedObject, iPraButtonStyleTemplateType) implementation uses +{$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts +{$ELSE} // DEFINE DELPHI PraUtils, System.SysUtils, - PraConsts; + PraConsts +{$ENDIF} ; constructor TPraButtonStylePrint.Create; begin diff --git a/source/PraButtonStyleReport.pas b/source/PraButtonStyleReport.pas index 20248e5..f481589 100644 --- a/source/PraButtonStyleReport.pas +++ b/source/PraButtonStyleReport.pas @@ -35,8 +35,13 @@ interface uses + {$IF DEFINED(FPC)} PraInterfaces, - Vcl.Graphics; + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; type TPraButtonStyleReport = class(TInterfacedObject, iPraButtonStyleTemplateType) @@ -73,10 +78,15 @@ TPraButtonStyleReport = class(TInterfacedObject, iPraButtonStyleTemplateType) implementation uses - PraUtils, - System.SysUtils, - PraConsts; - + {$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts + {$ELSE} // DEFINE DELPHI + PraUtils, + System.SysUtils, + PraConsts + {$ENDIF} ; constructor TPraButtonStyleReport.Create; begin FPicture := TPicture.Create; diff --git a/source/PraButtonStyleSave.pas b/source/PraButtonStyleSave.pas index 63fffee..92ea25f 100644 --- a/source/PraButtonStyleSave.pas +++ b/source/PraButtonStyleSave.pas @@ -35,8 +35,13 @@ interface uses + {$IF DEFINED(FPC)} PraInterfaces, - vcl.Graphics; + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; type TPraButtonStyleSave = class(TInterfacedObject, iPraButtonStyleTemplateType) @@ -73,10 +78,15 @@ TPraButtonStyleSave = class(TInterfacedObject, iPraButtonStyleTemplateType) implementation uses - PraUtils, - System.SysUtils, - PraConsts; - + {$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts + {$ELSE} // DEFINE DELPHI + PraUtils, + System.SysUtils, + PraConsts + {$ENDIF} ; constructor TPraButtonStyleSave.Create; begin FPicture := TPicture.Create; diff --git a/source/PraButtonStyleTemplateDanger.pas b/source/PraButtonStyleTemplateDanger.pas index 194fcc9..7645ac6 100644 --- a/source/PraButtonStyleTemplateDanger.pas +++ b/source/PraButtonStyleTemplateDanger.pas @@ -35,8 +35,13 @@ interface uses - Vcl.Graphics, - PraInterfaces; + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; type TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) @@ -110,8 +115,15 @@ TPraButtonStyleTemplateDanger = class(TInterfacedObject, iPraButtonStyleTempla implementation uses - System.SysUtils, - PraConsts; + {$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts + {$ELSE} // DEFINE DELPHI + PraUtils, + System.SysUtils, + PraConsts + {$ENDIF} ; constructor TPraFontConfiguration.Create; begin diff --git a/source/PraButtonStyleTemplateDark.pas b/source/PraButtonStyleTemplateDark.pas index 73dbf2d..c8ae93e 100644 --- a/source/PraButtonStyleTemplateDark.pas +++ b/source/PraButtonStyleTemplateDark.pas @@ -35,8 +35,13 @@ interface uses - Vcl.Graphics, - PraInterfaces; + {$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; type TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) @@ -110,8 +115,15 @@ TPraButtonStyleTemplateDark = class(TInterfacedObject, iPraButtonStyleTemplate implementation uses - System.SysUtils, - PraConsts; + {$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts + {$ELSE} // DEFINE DELPHI + PraUtils, + System.SysUtils, + PraConsts + {$ENDIF} ; constructor TPraFontConfiguration.Create; begin diff --git a/source/PraButtonStyleTemplateGear.pas b/source/PraButtonStyleTemplateGear.pas index 4d80dce..7637de5 100644 --- a/source/PraButtonStyleTemplateGear.pas +++ b/source/PraButtonStyleTemplateGear.pas @@ -35,9 +35,13 @@ interface uses - Vcl.Graphics, - PraInterfaces; - + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; type TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) private @@ -110,8 +114,15 @@ TPraButtonStyleTemplateGear = class(TInterfacedObject, iPraButtonStyleTemplate implementation uses - System.SysUtils, - PraConsts; + {$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts + {$ELSE} // DEFINE DELPHI + PraUtils, + System.SysUtils, + PraConsts + {$ENDIF} ; constructor TPraFontConfiguration.Create; begin diff --git a/source/PraButtonStyleTemplateHeart.pas b/source/PraButtonStyleTemplateHeart.pas index b7a2fcb..957a751 100644 --- a/source/PraButtonStyleTemplateHeart.pas +++ b/source/PraButtonStyleTemplateHeart.pas @@ -35,8 +35,13 @@ interface uses - Vcl.Graphics, - PraInterfaces; + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; type TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) @@ -110,9 +115,15 @@ TPraButtonStyleTemplateHeart = class(TInterfacedObject, iPraButtonStyleTemplat implementation uses - System.SysUtils, - PraConsts; - + {$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts + {$ELSE} // DEFINE DELPHI + PraUtils, + System.SysUtils, + PraConsts + {$ENDIF} ; constructor TPraFontConfiguration.Create; begin FFont := TFont.Create; diff --git a/source/PraButtonStyleTemplateInfo.pas b/source/PraButtonStyleTemplateInfo.pas index bc2ae36..75d16c6 100644 --- a/source/PraButtonStyleTemplateInfo.pas +++ b/source/PraButtonStyleTemplateInfo.pas @@ -35,8 +35,13 @@ interface uses - Vcl.Graphics, - PraInterfaces; + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; type TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) @@ -110,8 +115,15 @@ TPraButtonStyleTemplateInfo = class(TInterfacedObject, iPraButtonStyleTemplate implementation uses - System.SysUtils, - PraConsts; + {$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts + {$ELSE} // DEFINE DELPHI + PraUtils, + System.SysUtils, + PraConsts + {$ENDIF} ; constructor TPraFontConfiguration.Create; begin diff --git a/source/PraButtonStyleTemplateLight.pas b/source/PraButtonStyleTemplateLight.pas index 8e88fb2..2c94dba 100644 --- a/source/PraButtonStyleTemplateLight.pas +++ b/source/PraButtonStyleTemplateLight.pas @@ -35,8 +35,13 @@ interface uses - Vcl.Graphics, - PraInterfaces; + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; type TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) @@ -110,8 +115,15 @@ TPraButtonStyleTemplateLight = class(TInterfacedObject, iPraButtonStyleTemplat implementation uses - System.SysUtils, - PraConsts; + {$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts + {$ELSE} // DEFINE DELPHI + PraUtils, + System.SysUtils, + PraConsts + {$ENDIF} ; constructor TPraFontConfiguration.Create; begin diff --git a/source/PraButtonStyleTemplatePrimary.pas b/source/PraButtonStyleTemplatePrimary.pas index fb4bfe3..69add97 100644 --- a/source/PraButtonStyleTemplatePrimary.pas +++ b/source/PraButtonStyleTemplatePrimary.pas @@ -35,8 +35,13 @@ interface uses - Vcl.Graphics, - PraInterfaces; + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; type TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) @@ -110,8 +115,15 @@ TPraButtonStyleTemplatePrimary = class(TInterfacedObject, iPraButtonStyleTempl implementation uses - System.SysUtils, - PraConsts; + {$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts + {$ELSE} // DEFINE DELPHI + PraUtils, + System.SysUtils, + PraConsts + {$ENDIF} ; constructor TPraFontConfiguration.Create; begin diff --git a/source/PraButtonStyleTemplateSecondary.pas b/source/PraButtonStyleTemplateSecondary.pas index 4af2fef..25e6c9f 100644 --- a/source/PraButtonStyleTemplateSecondary.pas +++ b/source/PraButtonStyleTemplateSecondary.pas @@ -35,8 +35,13 @@ interface uses - Vcl.Graphics, - PraInterfaces; + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; type TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) @@ -110,8 +115,15 @@ TPraButtonStyleTemplateSecondary = class(TInterfacedObject, iPraButtonStyleTem implementation uses - System.SysUtils, - PraConsts; + {$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts + {$ELSE} // DEFINE DELPHI + PraUtils, + System.SysUtils, + PraConsts + {$ENDIF} ; constructor TPraFontConfiguration.Create; begin diff --git a/source/PraButtonStyleTemplateSuccess.pas b/source/PraButtonStyleTemplateSuccess.pas index 257d045..5794bbc 100644 --- a/source/PraButtonStyleTemplateSuccess.pas +++ b/source/PraButtonStyleTemplateSuccess.pas @@ -35,9 +35,13 @@ interface uses - Vcl.Graphics, - PraInterfaces; - + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; type TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) private @@ -110,8 +114,15 @@ TPraButtonStyleTemplateSuccess = class(TInterfacedObject, iPraButtonStyleTempl implementation uses - System.SysUtils, - PraConsts; + {$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts + {$ELSE} // DEFINE DELPHI + PraUtils, + System.SysUtils, + PraConsts + {$ENDIF} ; constructor TPraFontConfiguration.Create; begin diff --git a/source/PraButtonStyleTemplateWarning.pas b/source/PraButtonStyleTemplateWarning.pas index a829bc0..5665c4d 100644 --- a/source/PraButtonStyleTemplateWarning.pas +++ b/source/PraButtonStyleTemplateWarning.pas @@ -35,8 +35,13 @@ interface uses - Vcl.Graphics, - PraInterfaces; + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; type TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) @@ -110,8 +115,15 @@ TPraButtonStyleTemplateWarning = class(TInterfacedObject, iPraButtonStyleTempl implementation uses - System.SysUtils, - PraConsts; + {$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts + {$ELSE} // DEFINE DELPHI + PraUtils, + System.SysUtils, + PraConsts + {$ENDIF} ; constructor TPraFontConfiguration.Create; begin diff --git a/source/PraInterfaces.pas b/source/PraInterfaces.pas index 16ce271..ec9b77d 100644 --- a/source/PraInterfaces.pas +++ b/source/PraInterfaces.pas @@ -35,7 +35,16 @@ interface uses - Vcl.Graphics; + {$IF DEFINED(FPC)} + Graphics, + Classes, + SysUtils, + RegExpr, + Generics.Collections + {$ELSE} // DEFINE DELPHI + Vcl.Graphics + {$ENDIF} ; + type iPraPenConfigurationCommon = interface diff --git a/source/backup/PraButtonStyle.pas.bak b/source/backup/PraButtonStyle.pas.bak new file mode 100644 index 0000000..3e91d01 --- /dev/null +++ b/source/backup/PraButtonStyle.pas.bak @@ -0,0 +1,1725 @@ +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// convertido para Lazarus FCP 2023 Francisco Aurino +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** +unit PraButtonStyle; + +interface + +uses + + +{$IF DEFINED(FPC)} + Graphics, + buttons, + SysUtils, + Classes, + System.UITypes, +LCLStrConsts, LCLType, LCLProc, LMessages, LCLIntf, InterfaceBase, + Controls, + Messages, + Windows, + Math, + PraInterfaces +{$ELSE} // DEFINE DELPHI + Vcl.Graphics, + Vcl.buttons, + System.SysUtils, + System.Classes, + System.UITypes, + Vcl.Controls, + Winapi.Messages, + Winapi.Windows, + System.Math, + PraInterfaces +{$ENDIF} ; + + +type + TPraAlignment = (paLeftJustify, paCenter); + TPictureLayout = (plGraphicCenter, plGraphicBottom, plGraphicTop); + TPraButtonStyleType = (stRoundRect, stRectangle); + TPraButtonStyleStyle = (bsCustom, bsPrimary, bsSecondary, bsSuccess, bsDanger, bsWarning, bsInfo, bsLight, bsDark); + TTemplateStyle = (tsNone = 0, tsSave = 1, tsCancel = 2, tsEdit = 3, tsDelete = 4, tsPrint = 5, tsGear = 6, tsMenu = 7, tsHeart = 8, tsEmail = 9, tsInsert = 10, tsBack = 11, tsClose = 12, + tsReport = 13); + + TPraButtonStyle = class; + + TFocusControl = class(TWinControl) + private + FGraphicControl: TPraButtonStyle; + protected + procedure WndProc(var Message: TMessage); override; + procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN; + procedure WMKeyUp(var Message: TWMKeyDown); message WM_KEYUP; + public + constructor Create(AOwner: TComponent; AGraphicControl: TPraButtonStyle); reintroduce; + property TabStop default false; + property TabOrder; + end; + + TPraButtonChangeFont = procedure(const Value: Boolean) of Object; + + TPraButtonFont = class(TFont) + private + FCopyOfFont: Boolean; + FonChange: TPraButtonChangeFont; + + function IsCopyOfFont: Boolean; + procedure SetCopyOfFont(const Value: Boolean); + published + property CopyOfFont: Boolean read FCopyOfFont write SetCopyOfFont stored IsCopyOfFont default false; + public + property onChange: TPraButtonChangeFont read FonChange write FonChange; + end; + + TPraButtonStyle = class(TGraphicControl) + private + FPraButtonStyleTemplate: iPraButtonStyleTemplate; + FPraButtonStyleTemplateType: iPraButtonStyleTemplateType; + + FMouseEnter: Boolean; + FState: TButtonState; + FFocusControl: TFocusControl; + FControllerStyleTemplate: Boolean; + + FPen: TPen; + FPenDown: TPen; + FPenFocused: TPen; + FPenDisabled: TPen; + + FBrush: TBrush; + FBrushDown: TBrush; + FBrushFocused: TBrush; + FBrushDisabled: TBrush; + + FPicture: TPicture; + FPictureFocused: TPicture; + FPictureDisabled: TPicture; + FPictureMarginLeft: SmallInt; + + FFontDown: TPraButtonFont; + FFontFocused: TPraButtonFont; + FFontDisabled: TPraButtonFont; + + FCaption: TCaption; + FShowCaption: Boolean; + + FRadius: SmallInt; + FSpacing: SmallInt; + + FClickOnEnter: Boolean; + FAlignment: TPraAlignment; + + FShape: TPraButtonStyleType; + FPictureCenter: Boolean; + FStyle: TPraButtonStyleStyle; + FStyleOutline: Boolean; + FAboutInfo: String; + FTemplateStyle: TTemplateStyle; + FPictureLayout: TPictureLayout; + + FImageList: TImageList; + FImageIndexPicture: Integer; + FImageIndexPictureFocused: Integer; + FImageIndexPictureDisabled: Integer; + + procedure SetPen(Value: TPen); + procedure SetPenDown(const Value: TPen); + procedure SetPenFocused(const Value: TPen); + procedure SetPenDisabled(const Value: TPen); + + procedure SetBrush(Value: TBrush); + procedure SetBrushDown(const Value: TBrush); + procedure SetBrushFocused(const Value: TBrush); + procedure SetBrushDisabled(const Value: TBrush); + + procedure SetPicture(const Value: TPicture); + procedure SetPictureFocused(const Value: TPicture); + procedure SetPictureDisabled(const Value: TPicture); + procedure SetPictureMarginLeft(const Value: SmallInt); + + procedure SetFontDown(const Value: TPraButtonFont); + procedure SetFontFocused(const Value: TPraButtonFont); + procedure SetFontDisabled(const Value: TPraButtonFont); + + function IsRadius: Boolean; + function IsSpacing: Boolean; + function IsShowCaption: Boolean; + function IsClickOnEnter: Boolean; + function IsStoredAlignment: Boolean; + function IsPictureMarginLeft: Boolean; + + function GetTabOrder: Integer; + procedure SetTabStop(const Value: Boolean); + + function GetTabStop: Boolean; + procedure SetTabOrder(const Value: Integer); + + function GetFocused: Boolean; + function GetCanFocus: Boolean; + + procedure SetRadius(const Value: SmallInt); + procedure SetCaption(const Value: TCaption); + procedure SetSpacing(const Value: SmallInt); + procedure SetShape(Value: TPraButtonStyleType); + procedure SetShowCaption(const Value: Boolean); + procedure SetAlignment(const Value: TPraAlignment); + + procedure DestroyFocusControl; + procedure SetClickOnEnter(const Value: Boolean); + procedure CreateFocusControl(AOwner: TComponent; AParent: TWinControl); + procedure WMEraseBkgnd(var Message: TWMEraseBkGnd); message WM_ERASEBKGND; + procedure DoMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure DoMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + function isPictureCenter: Boolean; + procedure SetPictureCenter(const Value: Boolean); + function informedPicture: Boolean; + + function GetPictureMarginLeft: SmallInt; + function GetPictureWidth: SmallInt; + function GetPictureHeight: SmallInt; + function GetSpacing: SmallInt; + function IsStoredStyle: Boolean; + procedure SetStyle(const Value: TPraButtonStyleStyle); + function IsStyleOutline: Boolean; + procedure SetStyleOutline(const Value: Boolean); + function IsStoredTemplateStyle: Boolean; + procedure SetTemplateStyle(const Value: TTemplateStyle); + + procedure StyleChanged(Sender: TObject); + procedure StyleOutlineConfig; + + procedure FontDownCopyOfFont(const AValue: Boolean); + procedure FontFocusedCopyOfFont(const AValue: Boolean); + procedure FontDisabledCopyOfFont(const AValue: Boolean); + + procedure LoadingTemplateInfo; + procedure LoadingTemplateDark; + procedure LoadingTemplateLight; + procedure LoadingTemplateDanger; + procedure LoadingTemplateSuccess; + procedure LoadingTemplateWarning; + procedure LoadingTemplatePrimary; + procedure LoadingTemplateSecondary; + procedure LoadingTemplateHeart; + procedure ApplyTemplate; + + procedure CreateButtonInfo; + procedure CreateButtonDark; + procedure CreateButtonLight; + procedure CreateButtonDanger; + procedure CreateButtonSuccess; + procedure CreateButtonWarning; + procedure CreateButtonPrimary; + procedure CreateButtonSecondary; + + procedure CreateButtonPrint; + procedure CreateButtonSave; + procedure CreateButtonEdit; + procedure CreateButtonDelete; + procedure CreateButtonCancel; + procedure CreateButtonGear; + procedure CreateButtonMenu; + procedure CreateButtonHeart; + procedure CreateButtonEmail; + procedure CreateButtonInsert; + procedure CreateButtonBack; + procedure CreateButtonClose; + procedure CreateButtonReport; + + procedure SetPictureTemplate; + + procedure CreateButtonDefault; + procedure SetSize(const AHeight, AWidth: Integer); + function isTemplateStyle: Boolean; + function IsPictureLayout: Boolean; + procedure SetPictureLayout(const Value: TPictureLayout); + + procedure SetImageList(const Value: TImageList); + procedure SetImageIndexPicture(const Value: Integer); + procedure SetImageIndexPictureFocused(const Value: Integer); + procedure SetImageIndexPictureDisabled(const Value: Integer); + function IsImageIndexPicture: Boolean; + function IsImageIndexPictureDisabled: Boolean; + function IsImageIndexPictureFocused: Boolean; + protected + procedure DoKeyUp; + procedure Paint; override; + procedure SetParent(AParent: TWinControl); override; + procedure DoKeyDown(var Key: Word; Shift: TShiftState); + procedure CMEnter(var Message: TCMEnter); message CM_ENTER; + procedure ChangeScale(M, D: Integer; isDpiChange: Boolean); override; + procedure CMMouseEnter(var Message: TNotifyEvent); message CM_MOUSEENTER; + procedure CMMouseLeave(var Message: TNotifyEvent); message CM_MOUSELEAVE; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + property Focused: Boolean read GetFocused; + property CanFocus: Boolean read GetCanFocus; + procedure SetFocus; + procedure Click; override; + procedure Assign(Source: TPersistent); override; + procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; + + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property Action; + property Align; + property Anchors; + property Cursor default crHandPoint; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property Constraints; + property ParentShowHint; + property ShowHint; + //property Touch ; + {$IF DEFINED(DELPHI)} property Touch , {$ENDIF} + property Visible; + property OnContextPopup; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + //property OnMouseActivate; + {$IF DEFINED(DELPHI)} property OnMouseActivate , {$ENDIF} + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; + // property OnGesture; + {$IF DEFINED(DELPHI)} property OnGesture , {$ENDIF} + property OnStartDock; + property OnStartDrag; + property OnClick; + property Font; + property ParentFont default true; + + property Pen: TPen read FPen write SetPen; + property PenDown: TPen read FPenDown write SetPenDown; + property PenFocused: TPen read FPenFocused write SetPenFocused; + property PenDisabled: TPen read FPenDisabled write SetPenDisabled; + + property Brush: TBrush read FBrush write SetBrush; + property BrushDown: TBrush read FBrushDown write SetBrushDown; + property BrushFocused: TBrush read FBrushFocused write SetBrushFocused; + property BrushDisabled: TBrush read FBrushDisabled write SetBrushDisabled; + + property Picture: TPicture read FPicture write SetPicture; + property PictureFocused: TPicture read FPictureFocused write SetPictureFocused; + property PictureDisabled: TPicture read FPictureDisabled write SetPictureDisabled; + + property FontDown: TPraButtonFont read FFontDown Write SetFontDown; + property FontFocused: TPraButtonFont read FFontFocused Write SetFontFocused; + property FontDisabled: TPraButtonFont read FFontDisabled Write SetFontDisabled; + + property Caption: TCaption read FCaption write SetCaption; + property TabOrder: Integer read GetTabOrder write SetTabOrder; + property TabStop: Boolean read GetTabStop write SetTabStop default false; + property Radius: SmallInt read FRadius write SetRadius stored IsRadius default 4; + property Shape: TPraButtonStyleType read FShape write SetShape default stRoundRect; + property Spacing: SmallInt read FSpacing write SetSpacing stored IsSpacing default 3; + property ShowCaption: Boolean read FShowCaption write SetShowCaption stored IsShowCaption default true; + property ClickOnEnter: Boolean read FClickOnEnter write SetClickOnEnter stored IsClickOnEnter default true; + property Alignment: TPraAlignment read FAlignment write SetAlignment stored IsStoredAlignment default paCenter; + property PictureCenter: Boolean read FPictureCenter write SetPictureCenter stored isPictureCenter default false; + property PictureMarginLeft: SmallInt read FPictureMarginLeft write SetPictureMarginLeft stored IsPictureMarginLeft default 3; + + property Style: TPraButtonStyleStyle read FStyle write SetStyle stored IsStoredStyle default bsCustom; + property StyleOutline: Boolean read FStyleOutline write SetStyleOutline stored IsStyleOutline default false; + + property TemplateStyle: TTemplateStyle read FTemplateStyle write SetTemplateStyle stored IsStoredTemplateStyle default tsNone; + property PictureLayout: TPictureLayout read FPictureLayout write SetPictureLayout stored IsPictureLayout default plGraphicCenter; + + property ImageList: TImageList read FImageList write SetImageList; + + property ImageIndexPicture: Integer read FImageIndexPicture write SetImageIndexPicture stored IsImageIndexPicture default -1; + property ImageIndexPictureFocused: Integer read FImageIndexPictureFocused write SetImageIndexPictureFocused stored IsImageIndexPictureFocused default -1; + property ImageIndexPictureDisabled: Integer read FImageIndexPictureDisabled write SetImageIndexPictureDisabled stored IsImageIndexPictureDisabled default -1; + + property AboutInfo: String Read FAboutInfo Write FAboutInfo Stored false; + end; + +implementation + +uses + + {$IF DEFINED(FPC)} + Forms, + {$ELSE} // DEFINE DELPHI + Vcl.Forms, + {$ENDIF} + + PraButtonStyleSave, + PraButtonStyleEdit, + PraButtonStyleGear, + PraButtonStylePrint, + PraButtonStyleCancel, + PraButtonStyleDelete, + PraButtonStyleTemplateInfo, + PraButtonStyleTemplateDark, + PraButtonStyleTemplateLight, + PraButtonStyleTemplateDanger, + PraButtonStyleTemplatePrimary, + PraButtonStyleTemplateSuccess, + PraButtonStyleTemplateWarning, + PraButtonStyleTemplateSecondary, + PraButtonStyleMenu, + PraButtonStyleHeart, + PraButtonStyleTemplateHeart, + PraButtonStyleEmail, + PraButtonStyleInsert, + PraButtonStyleBack, + PraButtonStyleClose, + PraButtonStyleReport; + +procedure TPraButtonStyle.ApplyTemplate; +begin + Brush.Color := FPraButtonStyleTemplate.GetBrushColor; + BrushFocused.Color := FPraButtonStyleTemplate.GetBrushFocusedColor; + BrushDown.Color := FPraButtonStyleTemplate.GetBrushDownColor; + BrushDisabled.Color := FPraButtonStyleTemplate.GetBrushDisabledColor; + + PenDown.Color := FPraButtonStyleTemplate.GetPenDownColor; + + Pen.Style := FPraButtonStyleTemplate.GetPenConfigurationCommon.GetPenStyle; + PenFocused.Style := FPraButtonStyleTemplate.GetPenConfigurationCommon.GetPenFocusedStyle; + PenDisabled.Style := FPraButtonStyleTemplate.GetPenConfigurationCommon.GetPenDisabledStyle; + PenDown.Style := FPraButtonStyleTemplate.GetPenConfigurationCommon.GetPenDownStyle; + PenDown.Width := FPraButtonStyleTemplate.GetPenConfigurationCommon.GetPenDownWidth; + + Font.Assign(FPraButtonStyleTemplate.GetFontConfigurationCommon.GetFont); + FontDown.Assign(FPraButtonStyleTemplate.GetFontConfigurationCommon.GetFontDown); + FontDisabled.Assign(FPraButtonStyleTemplate.GetFontConfigurationCommon.GetFontDisabled); + FontFocused.Assign(FPraButtonStyleTemplate.GetFontConfigurationCommon.GetFontFocused); +end; + +procedure TPraButtonStyle.Assign(Source: TPersistent); +begin + if Source is TPraButtonStyle then + begin + Brush.Assign(TPraButtonStyle(Source).Brush); + BrushFocused.Assign(TPraButtonStyle(Source).BrushFocused); + Pen.Assign(TPraButtonStyle(Source).Pen); + PenFocused.Assign(TPraButtonStyle(Source).PenFocused); + Font.Assign(TPraButtonStyle(Source).Font); + FontFocused.Assign(TPraButtonStyle(Source).FontFocused); + FontDown.Assign(TPraButtonStyle(Source).FontDown); + Radius := TPraButtonStyle(Source).Radius; + end + else + inherited Assign(Source); +end; + +procedure TPraButtonStyle.ChangeScale(M, D: Integer; isDpiChange: Boolean); +var + Flags: TScalingFlags; +begin + FPen.Width := MulDiv(FPen.Width, M, D); + // Scaling of other Fonts as current Font + if csLoading in ComponentState then + Flags := ScalingFlags + else + Flags := DefaultScalingFlags; + if not ParentFont and (sfFont in Flags) then + begin + FFontDown.Height := MulDiv(FFontDown.Height, M, D); + FFontFocused.Height := MulDiv(FFontFocused.Height, M, D); + FFontDisabled.Height := MulDiv(FFontDisabled.Height, M, D); + end; + inherited; +end; + +procedure TPraButtonStyle.Click; +begin + inherited; +end; + +procedure TPraButtonStyle.CMEnter(var Message: TCMEnter); +begin + if not(Enabled) or (csDesigning in ComponentState) then + Exit; + + FMouseEnter := false; + invalidate; +end; + +procedure TPraButtonStyle.CMMouseEnter(var Message: TNotifyEvent); +begin + if not(Enabled) or (csDesigning in ComponentState) then + Exit; + + FMouseEnter := true; + invalidate; +end; + +procedure TPraButtonStyle.CMMouseLeave(var Message: TNotifyEvent); +begin + if not(Enabled) or (csDesigning in ComponentState) then + Exit; + + FMouseEnter := false; + invalidate; +end; + +procedure TPraButtonStyle.FontDisabledCopyOfFont(const AValue: Boolean); +begin + if AValue then + FFontDisabled.Assign(Font); +end; + +procedure TPraButtonStyle.FontDownCopyOfFont(const AValue: Boolean); +begin + if AValue then + FFontDown.Assign(Font); +end; + +procedure TPraButtonStyle.FontFocusedCopyOfFont(const AValue: Boolean); +begin + if AValue then + FFontFocused.Assign(Font); +end; + +constructor TPraButtonStyle.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + + FFocusControl := nil; + CreateFocusControl(nil, TWinControl(AOwner)); + + Cursor := crHandPoint; + ControlStyle := ControlStyle + [csReplicatable]; + ParentFont := true; + + Width := 75; + Height := 25; + + // Pen + FPen := TPen.Create; + FPen.onChange := StyleChanged; + // PenDown + FPenDown := TPen.Create; + FPenDown.onChange := StyleChanged; + // PenFocused + FPenFocused := TPen.Create; + FPenFocused.onChange := StyleChanged; + // PenDisabled + FPenDisabled := TPen.Create; + FPenDisabled.onChange := StyleChanged; + + // Brush + FBrush := TBrush.Create; + FBrush.onChange := StyleChanged; + // BrushDown + FBrushDown := TBrush.Create; + FBrushDown.onChange := StyleChanged; + // BrushFocused + FBrushFocused := TBrush.Create; + FBrushFocused.onChange := StyleChanged; + // BrushDisabled + FBrushDisabled := TBrush.Create; + FBrushDisabled.onChange := StyleChanged; + + // Picture + FPicture := TPicture.Create; + FPicture.onChange := StyleChanged; + // PictureFocused + FPictureFocused := TPicture.Create; + FPictureFocused.onChange := StyleChanged; + // PictureDisabled + FPictureDisabled := TPicture.Create; + FPictureDisabled.onChange := StyleChanged; + + // FontDown + FFontDown := TPraButtonFont.Create; + FFontDown.onChange := FontDownCopyOfFont; + // FontFocused + FFontFocused := TPraButtonFont.Create; + FFontFocused.onChange := FontFocusedCopyOfFont; + // FontDisabled + FFontDisabled := TPraButtonFont.Create; + FFontDisabled.onChange := FontDisabledCopyOfFont; + + FMouseEnter := false; + FShowCaption := true; + + FClickOnEnter := true; + + TabStop := false; + + OnMouseDown := DoMouseDown; + OnMouseUp := DoMouseUp; + + FControllerStyleTemplate := false; + + FStyleOutline := false; + FPictureLayout := plGraphicCenter; + + ImageIndexPicture := -1; + ImageIndexPictureFocused := -1; + ImageIndexPictureDisabled := -1; + + CreateButtonDefault; +end; + +procedure TPraButtonStyle.CreateButtonBack; +begin + LoadingTemplateLight; + FPraButtonStyleTemplateType := TPraButtonStyleBack.New; + + Height := FPraButtonStyleTemplateType.GetSizeHeight; + Width := FPraButtonStyleTemplateType.GetSizeWidth; + + Self.Caption := 'Back'; + Self.Alignment := paLeftJustify; +end; + +procedure TPraButtonStyle.CreateButtonCancel; +begin + LoadingTemplateSecondary; + FPraButtonStyleTemplateType := TPraButtonStyleCancel.New; + + Height := FPraButtonStyleTemplateType.GetSizeHeight; + Width := FPraButtonStyleTemplateType.GetSizeWidth; + + Self.Caption := 'Cancel'; + Self.Alignment := paLeftJustify; +end; + +procedure TPraButtonStyle.CreateButtonClose; +begin + LoadingTemplateDanger; + FPraButtonStyleTemplateType := TPraButtonStyleClose.New; + + Height := FPraButtonStyleTemplateType.GetSizeHeight; + Width := FPraButtonStyleTemplateType.GetSizeWidth; + + Self.Caption := 'Close'; + Self.Alignment := paLeftJustify; +end; + +procedure TPraButtonStyle.CreateButtonDanger; +begin + LoadingTemplateDanger; + + Height := FPraButtonStyleTemplate.GetSizeHeight; + Width := FPraButtonStyleTemplate.GetSizeWidth; +end; + +procedure TPraButtonStyle.CreateButtonDark; +begin + LoadingTemplateDark; + + Height := FPraButtonStyleTemplate.GetSizeHeight; + Width := FPraButtonStyleTemplate.GetSizeWidth; +end; + +procedure TPraButtonStyle.CreateButtonDefault; +begin + Font.Name := 'Tahoma'; + + FBrush.Color := clWhite; + FBrushDown.Color := clWhite; + FBrushFocused.Color := clWhite; + FBrushDisabled.Color := clWhite; + + FFontDown.Assign(Self.Font); + FFontFocused.Assign(Self.Font); + FFontDisabled.Assign(Self.Font); + + FRadius := 4; + FSpacing := 3; + FPictureMarginLeft := 3; + FAlignment := paCenter; + FStyle := bsCustom; + FTemplateStyle := tsNone; + + if Assigned(FPicture.Graphic) then + FPicture.Graphic := nil; + + if Assigned(FPictureFocused.Graphic) then + FPictureFocused.Graphic := nil; + + if Assigned(FPictureDisabled.Graphic) then + FPictureDisabled.Graphic := nil; +end; + +procedure TPraButtonStyle.CreateButtonDelete; +begin + LoadingTemplateDanger; + FPraButtonStyleTemplateType := TPraButtonStyleDelete.New; + + Height := FPraButtonStyleTemplateType.GetSizeHeight; + Width := FPraButtonStyleTemplateType.GetSizeWidth; + + Self.Caption := 'Delete'; + Self.Alignment := paLeftJustify; +end; + +procedure TPraButtonStyle.CreateButtonEdit; +begin + LoadingTemplateWarning; + FPraButtonStyleTemplateType := TPraButtonStyleEdit.New; + + Height := FPraButtonStyleTemplateType.GetSizeHeight; + Width := FPraButtonStyleTemplateType.GetSizeWidth; + + Self.Caption := 'Edit'; + Self.Alignment := paLeftJustify; +end; + +procedure TPraButtonStyle.CreateButtonEmail; +begin + LoadingTemplateLight; + FPraButtonStyleTemplateType := TPraButtonStyleEmail.New; + + Height := FPraButtonStyleTemplateType.GetSizeHeight; + Width := FPraButtonStyleTemplateType.GetSizeWidth; + + Self.Caption := 'Email'; + Self.Alignment := paLeftJustify; +end; + +procedure TPraButtonStyle.CreateButtonGear; +begin + LoadingTemplatePrimary; + FPraButtonStyleTemplateType := TPraButtonStyleGear.New; + + Height := FPraButtonStyleTemplateType.GetSizeHeight; + Width := FPraButtonStyleTemplateType.GetSizeWidth; + + Self.Caption := 'Gear'; + Self.Alignment := paLeftJustify; +end; + +procedure TPraButtonStyle.CreateButtonHeart; +begin + LoadingTemplateHeart; + FPraButtonStyleTemplateType := TPraButtonStyleHeart.New; + + Height := FPraButtonStyleTemplateType.GetSizeHeight; + Width := FPraButtonStyleTemplateType.GetSizeWidth; + + Self.Caption := 'Heart'; + Self.Alignment := paLeftJustify; +end; + +procedure TPraButtonStyle.CreateButtonInfo; +begin + LoadingTemplateInfo; + + Height := FPraButtonStyleTemplate.GetSizeHeight; + Width := FPraButtonStyleTemplate.GetSizeWidth; +end; + +procedure TPraButtonStyle.CreateButtonInsert; +begin + LoadingTemplateSuccess; + FPraButtonStyleTemplateType := TPraButtonStyleInsert.New; + + Height := FPraButtonStyleTemplateType.GetSizeHeight; + Width := FPraButtonStyleTemplateType.GetSizeWidth; + + Self.Caption := 'Insert'; + Self.Alignment := paLeftJustify; +end; + +procedure TPraButtonStyle.CreateButtonLight; +begin + LoadingTemplateLight; + + Height := FPraButtonStyleTemplate.GetSizeHeight; + Width := FPraButtonStyleTemplate.GetSizeWidth; +end; + +procedure TPraButtonStyle.CreateButtonMenu; +begin + LoadingTemplatePrimary; + FPraButtonStyleTemplateType := TPraButtonStyleMenu.New; + + Height := FPraButtonStyleTemplateType.GetSizeHeight; + Width := FPraButtonStyleTemplateType.GetSizeWidth; + + Self.Caption := 'Menu'; + Self.Alignment := paLeftJustify; +end; + +procedure TPraButtonStyle.CreateButtonPrimary; +begin + LoadingTemplatePrimary; + + Height := FPraButtonStyleTemplate.GetSizeHeight; + Width := FPraButtonStyleTemplate.GetSizeWidth; +end; + +procedure TPraButtonStyle.CreateButtonPrint; +begin + LoadingTemplateInfo; + FPraButtonStyleTemplateType := TPraButtonStylePrint.New; + + Height := FPraButtonStyleTemplateType.GetSizeHeight; + Width := FPraButtonStyleTemplateType.GetSizeWidth; + + Self.Caption := 'Print'; + Self.Alignment := paLeftJustify; +end; + +procedure TPraButtonStyle.CreateButtonReport; +begin + LoadingTemplatePrimary; + FPraButtonStyleTemplateType := TPraButtonStyleReport.New; + + Height := FPraButtonStyleTemplateType.GetSizeHeight; + Width := FPraButtonStyleTemplateType.GetSizeWidth; + + Self.Caption := 'Report'; + Self.Alignment := paLeftJustify; +end; + +procedure TPraButtonStyle.CreateButtonSave; +begin + LoadingTemplateSuccess; + FPraButtonStyleTemplateType := TPraButtonStyleSave.New; + + Height := FPraButtonStyleTemplateType.GetSizeHeight; + Width := FPraButtonStyleTemplateType.GetSizeWidth; + + Self.Caption := 'Save'; + Self.Alignment := paLeftJustify; +end; + +procedure TPraButtonStyle.CreateButtonSecondary; +begin + LoadingTemplateSecondary; + + Height := FPraButtonStyleTemplate.GetSizeHeight; + Width := FPraButtonStyleTemplate.GetSizeWidth; +end; + +procedure TPraButtonStyle.CreateButtonSuccess; +begin + LoadingTemplateSuccess; + + Height := FPraButtonStyleTemplate.GetSizeHeight; + Width := FPraButtonStyleTemplate.GetSizeWidth; +end; + +procedure TPraButtonStyle.CreateButtonWarning; +begin + LoadingTemplateWarning; + + Height := FPraButtonStyleTemplate.GetSizeHeight; + Width := FPraButtonStyleTemplate.GetSizeWidth; +end; + +procedure TPraButtonStyle.CreateFocusControl(AOwner: TComponent; AParent: TWinControl); +begin + if not Assigned(FFocusControl) then + begin + FFocusControl := TFocusControl.Create(AOwner, Self); + try + FFocusControl.TabStop := true; + FFocusControl.SetBounds(0, 0, 0, 0); + except + raise; + end; + end; +end; + +destructor TPraButtonStyle.Destroy; +begin + FPen.Free; + FPenDown.Free; + FPenFocused.Free; + FPenDisabled.Free; + + FBrush.Free; + FBrushDown.Free; + FBrushFocused.Free; + FBrushDisabled.Free; + + FPicture.Free; + FPictureFocused.Free; + FPictureDisabled.Free; + + FFontDown.Free; + FFontFocused.Free; + FFontDisabled.Free; + + DestroyFocusControl; + + inherited Destroy; +end; + +procedure TPraButtonStyle.DestroyFocusControl; +begin + if Assigned(FFocusControl) then + begin + if Assigned(FFocusControl.Parent) then + FreeAndNil(FFocusControl); + end; +end; + +procedure TPraButtonStyle.DoKeyDown(var Key: Word; Shift: TShiftState); +begin + if ClickOnEnter and (Key = 13) then + begin + FState := bsDown; + invalidate; + + Self.Click; + end; +end; + +procedure TPraButtonStyle.DoKeyUp; +begin + FState := bsUp; + + invalidate; +end; + +procedure TPraButtonStyle.DoMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + FState := bsDown; + + invalidate; +end; + +procedure TPraButtonStyle.DoMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + FState := bsUp; + + invalidate; +end; + +function TPraButtonStyle.GetCanFocus: Boolean; +begin + if Assigned(FFocusControl) then + result := FFocusControl.CanFocus + else + result := false; +end; + +function TPraButtonStyle.GetFocused: Boolean; +begin + if Assigned(FFocusControl) then + result := FFocusControl.Focused + else + result := false; +end; + +function TPraButtonStyle.GetPictureHeight: SmallInt; +begin + result := 0; + if informedPicture then + result := MaxIntValue([FPicture.Height, FPictureFocused.Height, FPictureDisabled.Height]); +end; + +function TPraButtonStyle.GetPictureMarginLeft: SmallInt; +begin + result := 0; + if informedPicture then + result := FPictureMarginLeft; +end; + +function TPraButtonStyle.GetPictureWidth: SmallInt; +begin + result := 0; + if informedPicture then + result := MaxIntValue([FPicture.Width, FPictureFocused.Width, FPictureDisabled.Width]); +end; + +function TPraButtonStyle.GetSpacing: SmallInt; +begin + result := 0; + if informedPicture then + result := FSpacing; +end; + +function TPraButtonStyle.GetTabOrder: Integer; +begin + if Assigned(FFocusControl) then + result := FFocusControl.TabOrder + else + result := -1; +end; + +function TPraButtonStyle.GetTabStop: Boolean; +begin + if Assigned(FFocusControl) then + result := FFocusControl.TabStop + else + result := false; +end; + +function TPraButtonStyle.informedPicture: Boolean; +begin + result := Assigned(FPicture.Graphic) or Assigned(FPictureFocused.Graphic) or Assigned(FPictureDisabled.Graphic); +end; + +function TPraButtonStyle.IsClickOnEnter: Boolean; +begin + result := FClickOnEnter <> true; +end; + +function TPraButtonStyle.IsImageIndexPicture: Boolean; +begin + result := ImageIndexPicture <> -1; +end; + +function TPraButtonStyle.IsImageIndexPictureDisabled: Boolean; +begin + result := ImageIndexPictureDisabled <> -1; +end; + +function TPraButtonStyle.IsImageIndexPictureFocused: Boolean; +begin + result := ImageIndexPictureFocused <> -1; +end; + +function TPraButtonStyle.IsStyleOutline: Boolean; +begin + result := StyleOutline <> false; +end; + +function TPraButtonStyle.isPictureCenter: Boolean; +begin + result := PictureCenter <> false; +end; + +function TPraButtonStyle.IsPictureLayout: Boolean; +begin + result := PictureLayout <> plGraphicCenter; +end; + +function TPraButtonStyle.IsPictureMarginLeft: Boolean; +begin + result := PictureMarginLeft <> 3; +end; + +function TPraButtonStyle.IsRadius: Boolean; +begin + result := Radius <> 3; +end; + +function TPraButtonStyle.IsShowCaption: Boolean; +begin + result := ShowCaption <> true; +end; + +function TPraButtonStyle.IsSpacing: Boolean; +begin + result := Spacing <> 3; +end; + +function TPraButtonStyle.IsStoredAlignment: Boolean; +begin + result := Alignment <> paCenter; +end; + +function TPraButtonStyle.IsStoredStyle: Boolean; +begin + result := Style <> bsCustom; +end; + +function TPraButtonStyle.IsStoredTemplateStyle: Boolean; +begin + result := TemplateStyle <> tsNone; +end; + +procedure TPraButtonStyle.Paint; +var + ClientSize, X, Y, w, h: Integer; +begin + inherited; + + with Canvas do + begin + if not(Enabled) then + begin + Pen := FPenDisabled; + Brush := FBrushDisabled; + Font := FFontDisabled; + end + else if FState = bsDown then + begin + Pen := FPenDown; + Brush := FBrushDown; + Font := FFontDown; + end + else if FMouseEnter or Focused then + begin + Pen := FPenFocused; + Brush := FBrushFocused; + Font := FFontFocused; + end + else + begin + Pen := FPen; + Brush := FBrush; + Font := Self.Font; + end; + + if (FShape = stRoundRect) and (Pen.Width = 2) then + Pen.Width := 1; + + X := Pen.Width div 2; + + Y := X; + w := Width - Pen.Width + 1; + h := Height - Pen.Width + 1; + + if Pen.Width = 0 then + begin + Dec(w); + Dec(h); + end; + + case FShape of + stRectangle: + Rectangle(X, Y, X + w, Y + h); + stRoundRect: + RoundRect(X, Y, X + w, Y + h, Radius, Radius); + end; + + X := GetPictureMarginLeft; + if (FPictureCenter and (Caption = '') or (FPictureLayout <> plGraphicCenter)) then + X := (ClientWidth - GetPictureWidth) div 2; + + ClientSize := ClientHeight - GetPictureHeight; + case PictureLayout of + plGraphicCenter: + h := ClientSize div 2; + plGraphicBottom: + h := (ClientSize + Canvas.TextHeight(Caption)) div 2; + plGraphicTop: + h := (ClientSize - Canvas.TextHeight(Caption)) div 2; + end; + + if not(Enabled) then + begin + if Assigned(PictureDisabled.Graphic) then + Draw(X, h, PictureDisabled.Graphic) + else + Draw(X, h, Picture.Graphic); + end + else if FMouseEnter or Focused then + begin + if Assigned(PictureFocused.Graphic) then + Draw(X, h, PictureFocused.Graphic) + else + Draw(X, h, Picture.Graphic); + end + else + Draw(X, h, Picture.Graphic); + + if FShowCaption and (Trim(Caption) <> '') then + begin + if Alignment = paCenter then + begin + if (Assigned(Picture.Graphic) or (Assigned(PictureFocused.Graphic) and (FMouseEnter or Focused))) and (FPictureLayout = plGraphicCenter) then + X := (ClientWidth - (GetPictureWidth + PictureMarginLeft)) div 2 + else + X := (ClientWidth - Canvas.TextWidth(Caption)) div 2 + end + else + X := GetPictureWidth + PictureMarginLeft + GetSpacing; + + ClientSize := ClientHeight - Canvas.TextHeight(Caption); + case PictureLayout of + plGraphicCenter: + Y := ClientSize div 2; + plGraphicBottom: + Y := ((ClientSize - GetPictureHeight) div 2) - 2 + Spacing; + plGraphicTop: + Y := ((ClientSize + GetPictureHeight) div 2) - 2 + Spacing; + end; + + TextOut(X, Y, Caption); + end; + end; +end; + +procedure TPraButtonStyle.SetAlignment(const Value: TPraAlignment); +begin + if FAlignment <> Value then + begin + FAlignment := Value; + invalidate; + end; +end; + +procedure TPraButtonStyle.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); +begin + inherited; + Repaint; +end; + +procedure TPraButtonStyle.SetBrush(Value: TBrush); +begin + FBrush.Assign(Value); +end; + +procedure TPraButtonStyle.SetBrushDisabled(const Value: TBrush); +begin + FBrushDisabled.Assign(Value); +end; + +procedure TPraButtonStyle.SetBrushDown(const Value: TBrush); +begin + FBrushDown.Assign(Value); +end; + +procedure TPraButtonStyle.SetBrushFocused(const Value: TBrush); +begin + FBrushFocused.Assign(Value); +end; + +procedure TPraButtonStyle.SetCaption(const Value: TCaption); +begin + FCaption := Value; + invalidate; +end; + +procedure TPraButtonStyle.SetClickOnEnter(const Value: Boolean); +begin + if FClickOnEnter <> Value then + begin + FClickOnEnter := Value; + invalidate; + end; +end; + +procedure TPraButtonStyle.SetFocus; +begin + if Assigned(FFocusControl) then + if FFocusControl.CanFocus then + FFocusControl.SetFocus; +end; + +procedure TPraButtonStyle.SetFontDisabled(const Value: TPraButtonFont); +begin + FFontDisabled.Assign(Value); +end; + +procedure TPraButtonStyle.SetFontDown(const Value: TPraButtonFont); +begin + FFontDown.Assign(Value); +end; + +procedure TPraButtonStyle.SetFontFocused(const Value: TPraButtonFont); +begin + FFontFocused.Assign(Value); +end; + +procedure TPraButtonStyle.SetImageIndexPicture(const Value: Integer); +begin + if FImageIndexPicture <> Value then + begin + FImageIndexPicture := Value; + + if Assigned(ImageList) then + begin + FPicture.Graphic := nil; + ImageList.GetBitmap(Value, FPicture.bitmap); + + invalidate; + end; + end; +end; + +procedure TPraButtonStyle.SetImageIndexPictureDisabled(const Value: Integer); +begin + if FImageIndexPictureDisabled <> Value then + begin + FImageIndexPictureDisabled := Value; + + if Assigned(ImageList) then + begin + FPictureDisabled.Graphic := nil; + ImageList.GetBitmap(Value, FPictureDisabled.bitmap); + + invalidate; + end; + end; +end; + +procedure TPraButtonStyle.SetImageIndexPictureFocused(const Value: Integer); +begin + if FImageIndexPictureFocused <> Value then + begin + FImageIndexPictureFocused := Value; + + if Assigned(ImageList) then + begin + FPictureFocused.Graphic := nil; + ImageList.GetBitmap(Value, FPictureFocused.bitmap); + + invalidate; + end; + end; +end; + +procedure TPraButtonStyle.SetImageList(const Value: TImageList); +begin + if FImageList <> Value then + begin + FImageList := Value; + + invalidate; + end; +end; + +procedure TPraButtonStyle.SetStyleOutline(const Value: Boolean); +begin + if FStyleOutline <> Value then + begin + FStyleOutline := Value; + + if Style <> bsCustom then + SetStyle(FStyle) + else if isTemplateStyle then + SetTemplateStyle(FTemplateStyle); + end; +end; + +procedure TPraButtonStyle.SetParent(AParent: TWinControl); +begin + inherited; + if Assigned(Self.Parent) then + begin + FFocusControl.Parent := Self.Parent; + FFocusControl.Show; + end; +end; + +procedure TPraButtonStyle.SetPen(Value: TPen); +begin + FPen.Assign(Value); +end; + +procedure TPraButtonStyle.SetPenDisabled(const Value: TPen); +begin + FPenDisabled.Assign(Value); +end; + +procedure TPraButtonStyle.SetPenDown(const Value: TPen); +begin + FPenDown.Assign(Value); +end; + +procedure TPraButtonStyle.SetPenFocused(const Value: TPen); +begin + FPenFocused.Assign(Value); +end; + +procedure TPraButtonStyle.SetPicture(const Value: TPicture); +begin + FPicture.Assign(Value); +end; + +procedure TPraButtonStyle.SetPictureCenter(const Value: Boolean); +begin + if FPictureCenter <> Value then + begin + FPictureCenter := Value; + invalidate; + end; +end; + +procedure TPraButtonStyle.SetPictureDisabled(const Value: TPicture); +begin + FPictureDisabled.Assign(Value); +end; + +procedure TPraButtonStyle.SetPictureTemplate; +begin + if not Assigned((FPraButtonStyleTemplateType)) then + Exit; + + if StyleOutline then + begin + Picture.Assign(FPraButtonStyleTemplateType.GetPictureStyleOutline); + PictureFocused.Assign(FPraButtonStyleTemplateType.GetPictureFocusedStyleOutline); + end + else + begin + Picture.Assign(FPraButtonStyleTemplateType.GetPicture); + PictureFocused.Assign(FPraButtonStyleTemplateType.GetPictureFocused); + end; + + PictureDisabled.Assign(FPraButtonStyleTemplateType.GetPictureDisabled); +end; + +procedure TPraButtonStyle.SetPictureMarginLeft(const Value: SmallInt); +begin + if (FPictureMarginLeft >= 0) and (FPictureMarginLeft <> Value) then + begin + FPictureMarginLeft := Value; + invalidate; + end; +end; + +procedure TPraButtonStyle.SetPictureFocused(const Value: TPicture); +begin + FPictureFocused.Assign(Value); +end; + +procedure TPraButtonStyle.SetPictureLayout(const Value: TPictureLayout); +begin + if FPictureLayout <> Value then + begin + FPictureLayout := Value; + invalidate; + end; +end; + +procedure TPraButtonStyle.SetRadius(const Value: SmallInt); +begin + if FRadius <> Value then + begin + FRadius := Value; + invalidate; + end; +end; + +procedure TPraButtonStyle.SetShape(Value: TPraButtonStyleType); +begin + if FShape <> Value then + begin + FShape := Value; + invalidate; + end; +end; + +procedure TPraButtonStyle.SetShowCaption(const Value: Boolean); +begin + if FShowCaption <> Value then + begin + FShowCaption := Value; + invalidate; + end; +end; + +procedure TPraButtonStyle.SetSize(const AHeight, AWidth: Integer); +begin + Height := AHeight; + Width := AWidth; +end; + +procedure TPraButtonStyle.SetSpacing(const Value: SmallInt); +begin + if FSpacing <> Value then + begin + FSpacing := Value; + invalidate; + end; +end; + +procedure TPraButtonStyle.SetStyle(const Value: TPraButtonStyleStyle); +begin + if isTemplateStyle then + begin + FControllerStyleTemplate := true; + TemplateStyle := tsNone; + end; + + if FControllerStyleTemplate then + begin + CreateButtonDefault; + FControllerStyleTemplate := false; + Exit; + end; + + Self.FStyle := Value; + + case Self.FStyle of + bsPrimary: + CreateButtonPrimary; + bsSecondary: + CreateButtonSecondary; + bsSuccess: + CreateButtonSuccess; + bsDanger: + CreateButtonDanger; + bsWarning: + CreateButtonWarning; + bsInfo: + CreateButtonInfo; + bsLight: + CreateButtonLight; + bsDark: + CreateButtonDark; + end; + + if Value <> bsCustom then + begin + SetSize(32, 90); + + if StyleOutline then + StyleOutlineConfig; + end; +end; + +procedure TPraButtonStyle.SetTabOrder(const Value: Integer); +begin + if Assigned(FFocusControl) then + FFocusControl.TabOrder := Value; +end; + +procedure TPraButtonStyle.SetTabStop(const Value: Boolean); +begin + if Assigned(FFocusControl) then + FFocusControl.TabStop := Value; +end; + +procedure TPraButtonStyle.SetTemplateStyle(const Value: TTemplateStyle); +begin + if FControllerStyleTemplate then + begin + CreateButtonDefault; + FControllerStyleTemplate := false; + Exit; + end; + + if Style <> bsCustom then + begin + FControllerStyleTemplate := true; + Style := bsCustom; + end; + + Self.FTemplateStyle := Value; + + if not(csReading in ComponentState) then + begin + case Value of + tsSave: + CreateButtonSave; + tsEdit: + CreateButtonEdit; + tsCancel: + CreateButtonCancel; + tsDelete: + CreateButtonDelete; + tsPrint: + CreateButtonPrint; + tsGear: + CreateButtonGear; + tsMenu: + CreateButtonMenu; + tsHeart: + CreateButtonHeart; + tsEmail: + CreateButtonEmail; + tsInsert: + CreateButtonInsert; + tsBack: + CreateButtonBack; + tsClose: + CreateButtonClose; + tsReport: + CreateButtonReport; + end; + + SetPictureTemplate; + + if Value <> tsNone then + begin + if StyleOutline then + StyleOutlineConfig; + end; + end; +end; + +procedure TPraButtonStyle.StyleChanged(Sender: TObject); +begin + invalidate; +end; + +procedure TPraButtonStyle.StyleOutlineConfig; +var + lBrushColor: TColor; +begin + lBrushColor := Brush.Color; + Brush.Color := Font.Color; + + Font.Color := lBrushColor; + + Pen.Style := psSolid; + Pen.Color := lBrushColor; + Pen.Width := 1; +end; + +function TPraButtonStyle.isTemplateStyle: Boolean; +begin + result := TemplateStyle <> tsNone; +end; + +procedure TPraButtonStyle.LoadingTemplateDanger; +begin + FPraButtonStyleTemplate := TPraButtonStyleTemplateDanger.New; + + ApplyTemplate; +end; + +procedure TPraButtonStyle.LoadingTemplateDark; +begin + FPraButtonStyleTemplate := TPraButtonStyleTemplateDark.New; + + ApplyTemplate; +end; + +procedure TPraButtonStyle.LoadingTemplateHeart; +begin + FPraButtonStyleTemplate := TPraButtonStyleTemplateHeart.New; + + ApplyTemplate; +end; + +procedure TPraButtonStyle.LoadingTemplateInfo; +begin + FPraButtonStyleTemplate := TPraButtonStyleTemplateInfo.New; + + ApplyTemplate; +end; + +procedure TPraButtonStyle.LoadingTemplateLight; +begin + FPraButtonStyleTemplate := TPraButtonStyleTemplateLight.New; + + ApplyTemplate; +end; + +procedure TPraButtonStyle.LoadingTemplatePrimary; +begin + FPraButtonStyleTemplate := TPraButtonStyleTemplatePrimary.New; + + ApplyTemplate; +end; + +procedure TPraButtonStyle.LoadingTemplateSecondary; +begin + FPraButtonStyleTemplate := TPraButtonStyleTemplateSecondary.New; + + ApplyTemplate; +end; + +procedure TPraButtonStyle.LoadingTemplateSuccess; +begin + FPraButtonStyleTemplate := TPraButtonStyleTemplateSuccess.New; + + ApplyTemplate; +end; + +procedure TPraButtonStyle.LoadingTemplateWarning; +begin + FPraButtonStyleTemplate := TPraButtonStyleTemplateWarning.New; + + ApplyTemplate; +end; + +procedure TPraButtonStyle.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited Notification(AComponent, Operation); + + if Operation = opRemove then + begin + if AComponent = ImageList then + ImageList := nil; + end; +end; + +procedure TPraButtonStyle.WMEraseBkgnd(var Message: TWMEraseBkGnd); +begin + message.result := 1; +end; + +constructor TFocusControl.Create(AOwner: TComponent; AGraphicControl: TPraButtonStyle); +begin + inherited Create(AOwner); + + Assert(Assigned(AGraphicControl), 'Não é possível criar um FocusControl com GraphicControl não atribuído.'); + + FGraphicControl := AGraphicControl; + Self.TabStop := false; +end; + +procedure TFocusControl.WMKeyDown(var Message: TWMKeyDown); +var + Shift: TShiftState; +begin + if Assigned(FGraphicControl) then + begin + Shift := KeyDataToShiftState(Message.KeyData); + FGraphicControl.DoKeyDown(Message.CharCode, Shift); + end; + + inherited; +end; + +procedure TFocusControl.WMKeyUp(var Message: TWMKeyDown); +begin + if Assigned(FGraphicControl) then + FGraphicControl.DoKeyUp; + + inherited; +end; + +procedure TFocusControl.WndProc(var Message: TMessage); +begin + inherited; + + case Message.Msg of + WM_SETFOCUS, WM_KILLFOCUS: + begin + if Assigned(FGraphicControl) then + FGraphicControl.Repaint; + end; + end; +end; + +function TPraButtonFont.IsCopyOfFont: Boolean; +begin + result := CopyOfFont <> false; +end; + +procedure TPraButtonFont.SetCopyOfFont(const Value: Boolean); +begin + if FCopyOfFont <> Value then + begin + FCopyOfFont := Value; + onChange(Value); + end; +end; + +end. diff --git a/source/backup/PraButtonStyleBack.pas.bak b/source/backup/PraButtonStyleBack.pas.bak new file mode 100644 index 0000000..fb59796 --- /dev/null +++ b/source/backup/PraButtonStyleBack.pas.bak @@ -0,0 +1,161 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleBack; + +interface + +uses + PraInterfaces, +{$IF DEFINED(FPC)} + Graphics +{$ELSE} // DEFINE DELPHI + Vcl.Graphics +{$ENDIF} ; +type + TPraButtonStyleBack = class(TInterfacedObject, iPraButtonStyleTemplateType) + private + FPicture: TPicture; + FPictureFocused: TPicture; + FPictureStyleOutline: TPicture; + FPictureFocusedStyleOutline: TPicture; + + FPictureDisabled: TPicture; + + function GetPicture: TPicture; + function GetPictureFocused: TPicture; + function GetPictureStyleOutline: TPicture; + function GetPictureFocusedStyleOutline: TPicture; + function GetPictureDisabled: TPicture; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + public + constructor Create; + destructor Destroy; override; + + property Picture: TPicture read GetPicture; + property PictureFocused: TPicture read GetPictureFocused; + property PictureStyleOutline: TPicture read GetPictureStyleOutline; + property PictureFocusedStyleOutline: TPicture read GetPictureFocusedStyleOutline; + property PictureDisabled: TPicture read GetPictureDisabled; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplateType; + end; + +implementation + +uses + +{$IF DEFINED(FPC)} + PraUtils, + SysUtils, + PraConsts; +{$ELSE} // DEFINE DELPHI + PraUtils, + System.SysUtils, + PraConsts; +{$ENDIF} ; + + +constructor TPraButtonStyleBack.Create; +begin + FPicture := TPicture.Create; + FPictureFocused := TPicture.Create; + FPictureStyleOutline := TPicture.Create; + FPictureFocusedStyleOutline := TPicture.Create; + FPictureDisabled := TPicture.Create; +end; + +destructor TPraButtonStyleBack.Destroy; +begin + freeandNil(FPicture); + freeandNil(FPictureFocused); + freeandNil(FPictureStyleOutline); + freeandNil(FPictureFocusedStyleOutline); + freeandNil(FPictureDisabled); + + inherited; +end; + +function TPraButtonStyleBack.GetPicture: TPicture; +begin + FPicture.Assign(GetPictureOfResource('PICTURE_BACK_BLACK')); + + result := FPicture; +end; + +function TPraButtonStyleBack.GetPictureDisabled: TPicture; +begin + FPictureDisabled.Assign(GetPictureOfResource('PICTURE_BACK_BLACK')); + + result := FPictureDisabled; +end; + +function TPraButtonStyleBack.GetPictureFocused: TPicture; +begin + FPictureFocused.Assign(GetPictureOfResource('PICTURE_BACK_BLACK')); + + result := FPictureFocused; +end; + +function TPraButtonStyleBack.GetPictureFocusedStyleOutline: TPicture; +begin + FPictureFocusedStyleOutline.Assign(GetPictureOfResource('PICTURE_BACK_WHITE')); + + result := FPictureFocusedStyleOutline; +end; + +function TPraButtonStyleBack.GetPictureStyleOutline: TPicture; +begin + FPictureStyleOutline.Assign(GetPictureOfResource('PICTURE_BACK_WHITE')); + + result := FPictureStyleOutline; +end; + +function TPraButtonStyleBack.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleBack.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleBack.New: iPraButtonStyleTemplateType; +begin + result := self.Create; +end; + +end. diff --git a/source/backup/PraButtonStyleCancel.pas.bak b/source/backup/PraButtonStyleCancel.pas.bak new file mode 100644 index 0000000..baab5f0 --- /dev/null +++ b/source/backup/PraButtonStyleCancel.pas.bak @@ -0,0 +1,156 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleCancel; + +interface + +uses + +{$IF DEFINED(FPC)} + PraInterfaces, + Graphics +{$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics; +{$ENDIF} ; + +type + TPraButtonStyleCancel = class(TInterfacedObject, iPraButtonStyleTemplateType) + private + FPicture: TPicture; + FPictureFocused: TPicture; + FPictureStyleOutline: TPicture; + FPictureFocusedStyleOutline: TPicture; + + FPictureDisabled: TPicture; + + function GetPicture: TPicture; + function GetPictureFocused: TPicture; + function GetPictureStyleOutline: TPicture; + function GetPictureFocusedStyleOutline: TPicture; + function GetPictureDisabled: TPicture; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + public + constructor Create; + destructor Destroy; override; + + property Picture: TPicture read GetPicture; + property PictureFocused: TPicture read GetPictureFocused; + property PictureStyleOutline: TPicture read GetPictureStyleOutline; + property PictureFocusedStyleOutline: TPicture read GetPictureFocusedStyleOutline; + property PictureDisabled: TPicture read GetPictureDisabled; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplateType; + end; + +implementation + +uses + PraUtils, + System.SysUtils, + PraConsts; + +constructor TPraButtonStyleCancel.Create; +begin + FPicture := TPicture.Create; + FPictureFocused := TPicture.Create; + FPictureStyleOutline := TPicture.Create; + FPictureFocusedStyleOutline := TPicture.Create; + FPictureDisabled := TPicture.Create; +end; + +destructor TPraButtonStyleCancel.Destroy; +begin + freeandNil(FPicture); + freeandNil(FPictureFocused); + freeandNil(FPictureStyleOutline); + freeandNil(FPictureFocusedStyleOutline); + freeandNil(FPictureDisabled); + + inherited; +end; + +function TPraButtonStyleCancel.GetPicture: TPicture; +begin + FPicture.Assign(GetPictureOfResource('PICTURE_CANCEL_WHITE')); + + result := FPicture; +end; + +function TPraButtonStyleCancel.GetPictureDisabled: TPicture; +begin + FPictureDisabled.Assign(GetPictureOfResource('PICTURE_CANCEL_WHITE')); + + result := FPictureDisabled; +end; + +function TPraButtonStyleCancel.GetPictureFocused: TPicture; +begin + FPictureFocused.Assign(GetPictureOfResource('PICTURE_CANCEL_WHITE')); + + result := FPictureFocused; +end; + +function TPraButtonStyleCancel.GetPictureFocusedStyleOutline: TPicture; +begin + FPictureFocusedStyleOutline.Assign(GetPictureOfResource('PICTURE_CANCEL_WHITE')); + + result := FPictureFocusedStyleOutline; +end; + +function TPraButtonStyleCancel.GetPictureStyleOutline: TPicture; +begin + FPictureStyleOutline.Assign(GetPictureOfResource('PICTURE_CANCEL_GRAY')); + + result := FPictureStyleOutline; +end; + +function TPraButtonStyleCancel.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleCancel.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleCancel.New: iPraButtonStyleTemplateType; +begin + result := self.Create; +end; + +end. diff --git a/source/backup/PraButtonStyleClose.pas.bak b/source/backup/PraButtonStyleClose.pas.bak new file mode 100644 index 0000000..910112e --- /dev/null +++ b/source/backup/PraButtonStyleClose.pas.bak @@ -0,0 +1,156 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleClose; + +interface + +uses + +{$IF DEFINED(FPC)} + PraInterfaces, + Graphics +{$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics +{$ENDIF} ; + +type + TPraButtonStyleClose = class(TInterfacedObject, iPraButtonStyleTemplateType) + private + FPicture: TPicture; + FPictureFocused: TPicture; + FPictureStyleOutline: TPicture; + FPictureFocusedStyleOutline: TPicture; + + FPictureDisabled: TPicture; + + function GetPicture: TPicture; + function GetPictureFocused: TPicture; + function GetPictureStyleOutline: TPicture; + function GetPictureFocusedStyleOutline: TPicture; + function GetPictureDisabled: TPicture; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + public + constructor Create; + destructor Destroy; override; + + property Picture: TPicture read GetPicture; + property PictureFocused: TPicture read GetPictureFocused; + property PictureStyleOutline: TPicture read GetPictureStyleOutline; + property PictureFocusedStyleOutline: TPicture read GetPictureFocusedStyleOutline; + property PictureDisabled: TPicture read GetPictureDisabled; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplateType; + end; + +implementation + +uses + PraUtils, + System.SysUtils, + PraConsts; + +constructor TPraButtonStyleClose.Create; +begin + FPicture := TPicture.Create; + FPictureFocused := TPicture.Create; + FPictureStyleOutline := TPicture.Create; + FPictureFocusedStyleOutline := TPicture.Create; + FPictureDisabled := TPicture.Create; +end; + +destructor TPraButtonStyleClose.Destroy; +begin + freeandNil(FPicture); + freeandNil(FPictureFocused); + freeandNil(FPictureStyleOutline); + freeandNil(FPictureFocusedStyleOutline); + freeandNil(FPictureDisabled); + + inherited; +end; + +function TPraButtonStyleClose.GetPicture: TPicture; +begin + FPicture.Assign(GetPictureOfResource('PICTURE_CLOSE_WHITE')); + + result := FPicture; +end; + +function TPraButtonStyleClose.GetPictureDisabled: TPicture; +begin + FPictureDisabled.Assign(GetPictureOfResource('PICTURE_CLOSE_WHITE')); + + result := FPictureDisabled; +end; + +function TPraButtonStyleClose.GetPictureFocused: TPicture; +begin + FPictureFocused.Assign(GetPictureOfResource('PICTURE_CLOSE_WHITE')); + + result := FPictureFocused; +end; + +function TPraButtonStyleClose.GetPictureFocusedStyleOutline: TPicture; +begin + FPictureFocusedStyleOutline.Assign(GetPictureOfResource('PICTURE_CLOSE_WHITE')); + + result := FPictureFocusedStyleOutline; +end; + +function TPraButtonStyleClose.GetPictureStyleOutline: TPicture; +begin + FPictureStyleOutline.Assign(GetPictureOfResource('PICTURE_CLOSE_RED')); + + result := FPictureStyleOutline; +end; + +function TPraButtonStyleClose.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleClose.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleClose.New: iPraButtonStyleTemplateType; +begin + result := self.Create; +end; + +end. diff --git a/source/backup/PraButtonStyleDelete.pas.bak b/source/backup/PraButtonStyleDelete.pas.bak new file mode 100644 index 0000000..48fa839 --- /dev/null +++ b/source/backup/PraButtonStyleDelete.pas.bak @@ -0,0 +1,155 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleDelete; + +interface + +uses +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; + +type + TPraButtonStyleDelete = class(TInterfacedObject, iPraButtonStyleTemplateType) + private + FPicture: TPicture; + FPictureFocused: TPicture; + FPictureStyleOutline: TPicture; + FPictureFocusedStyleOutline: TPicture; + + FPictureDisabled: TPicture; + + function GetPicture: TPicture; + function GetPictureFocused: TPicture; + function GetPictureStyleOutline: TPicture; + function GetPictureFocusedStyleOutline: TPicture; + function GetPictureDisabled: TPicture; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + public + constructor Create; + destructor Destroy; override; + + property Picture: TPicture read GetPicture; + property PictureFocused: TPicture read GetPictureFocused; + property PictureStyleOutline: TPicture read GetPictureStyleOutline; + property PictureFocusedStyleOutline: TPicture read GetPictureFocusedStyleOutline; + property PictureDisabled: TPicture read GetPictureDisabled; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplateType; + end; + +implementation + +uses + PraUtils, + System.SysUtils, + PraConsts; + +constructor TPraButtonStyleDelete.Create; +begin + FPicture := TPicture.Create; + FPictureFocused := TPicture.Create; + FPictureStyleOutline := TPicture.Create; + FPictureFocusedStyleOutline := TPicture.Create; + FPictureDisabled := TPicture.Create; +end; + +destructor TPraButtonStyleDelete.Destroy; +begin + freeandNil(FPicture); + freeandNil(FPictureFocused); + freeandNil(FPictureStyleOutline); + freeandNil(FPictureFocusedStyleOutline); + freeandNil(FPictureDisabled); + + inherited; +end; + +function TPraButtonStyleDelete.GetPicture: TPicture; +begin + FPicture.Assign(GetPictureOfResource('PICTURE_DELETE_WHITE')); + + result := FPicture; +end; + +function TPraButtonStyleDelete.GetPictureDisabled: TPicture; +begin + FPictureDisabled.Assign(GetPictureOfResource('PICTURE_DELETE_WHITE')); + + result := FPictureDisabled; +end; + +function TPraButtonStyleDelete.GetPictureFocused: TPicture; +begin + FPictureFocused.Assign(GetPictureOfResource('PICTURE_DELETE_WHITE')); + + result := FPictureFocused; +end; + +function TPraButtonStyleDelete.GetPictureFocusedStyleOutline: TPicture; +begin + FPictureFocusedStyleOutline.Assign(GetPictureOfResource('PICTURE_DELETE_WHITE')); + + result := FPictureFocusedStyleOutline; +end; + +function TPraButtonStyleDelete.GetPictureStyleOutline: TPicture; +begin + FPictureStyleOutline.Assign(GetPictureOfResource('PICTURE_DELETE_RED')); + + result := FPictureStyleOutline; +end; + +function TPraButtonStyleDelete.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleDelete.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleDelete.New: iPraButtonStyleTemplateType; +begin + result := self.Create; +end; + +end. diff --git a/source/backup/PraButtonStyleEdit.pas.bak b/source/backup/PraButtonStyleEdit.pas.bak new file mode 100644 index 0000000..4aecb7c --- /dev/null +++ b/source/backup/PraButtonStyleEdit.pas.bak @@ -0,0 +1,156 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleEdit; + +interface + +uses + +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; + +type + TPraButtonStyleEdit = class(TInterfacedObject, iPraButtonStyleTemplateType) + private + FPicture: TPicture; + FPictureFocused: TPicture; + FPictureStyleOutline: TPicture; + FPictureFocusedStyleOutline: TPicture; + + FPictureDisabled: TPicture; + + function GetPicture: TPicture; + function GetPictureFocused: TPicture; + function GetPictureStyleOutline: TPicture; + function GetPictureFocusedStyleOutline: TPicture; + function GetPictureDisabled: TPicture; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + public + constructor Create; + destructor Destroy; override; + + property Picture: TPicture read GetPicture; + property PictureFocused: TPicture read GetPictureFocused; + property PictureStyleOutline: TPicture read GetPictureStyleOutline; + property PictureFocusedStyleOutline: TPicture read GetPictureFocusedStyleOutline; + property PictureDisabled: TPicture read GetPictureDisabled; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplateType; + end; + +implementation + +uses + PraUtils, + System.SysUtils, + PraConsts; + +constructor TPraButtonStyleEdit.Create; +begin + FPicture := TPicture.Create; + FPictureFocused := TPicture.Create; + FPictureStyleOutline := TPicture.Create; + FPictureFocusedStyleOutline := TPicture.Create; + FPictureDisabled := TPicture.Create; +end; + +destructor TPraButtonStyleEdit.Destroy; +begin + freeandNil(FPicture); + freeandNil(FPictureFocused); + freeandNil(FPictureStyleOutline); + freeandNil(FPictureFocusedStyleOutline); + freeandNil(FPictureDisabled); + + inherited; +end; + +function TPraButtonStyleEdit.GetPicture: TPicture; +begin + FPicture.Assign(GetPictureOfResource('PICTURE_EDIT_WHITE')); + + result := FPicture; +end; + +function TPraButtonStyleEdit.GetPictureDisabled: TPicture; +begin + FPictureDisabled.Assign(GetPictureOfResource('PICTURE_EDIT_DISABLED')); + + result := FPictureDisabled; +end; + +function TPraButtonStyleEdit.GetPictureFocused: TPicture; +begin + FPictureFocused.Assign(GetPictureOfResource('PICTURE_EDIT_WHITE')); + + result := FPictureFocused; +end; + +function TPraButtonStyleEdit.GetPictureFocusedStyleOutline: TPicture; +begin + FPictureFocusedStyleOutline.Assign(GetPictureOfResource('PICTURE_EDIT_WHITE')); + + result := FPictureFocusedStyleOutline; +end; + +function TPraButtonStyleEdit.GetPictureStyleOutline: TPicture; +begin + FPictureStyleOutline.Assign(GetPictureOfResource('PICTURE_EDIT_YELOOW')); + + result := FPictureStyleOutline; +end; + +function TPraButtonStyleEdit.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleEdit.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleEdit.New: iPraButtonStyleTemplateType; +begin + result := self.Create; +end; + +end. diff --git a/source/backup/PraButtonStyleEmail.pas.bak b/source/backup/PraButtonStyleEmail.pas.bak new file mode 100644 index 0000000..55513b3 --- /dev/null +++ b/source/backup/PraButtonStyleEmail.pas.bak @@ -0,0 +1,156 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleEmail; + +interface + +uses + +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; + +type + TPraButtonStyleEmail = class(TInterfacedObject, iPraButtonStyleTemplateType) + private + FPicture: TPicture; + FPictureFocused: TPicture; + FPictureStyleOutline: TPicture; + FPictureFocusedStyleOutline: TPicture; + + FPictureDisabled: TPicture; + + function GetPicture: TPicture; + function GetPictureFocused: TPicture; + function GetPictureStyleOutline: TPicture; + function GetPictureFocusedStyleOutline: TPicture; + function GetPictureDisabled: TPicture; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + public + constructor Create; + destructor Destroy; override; + + property Picture: TPicture read GetPicture; + property PictureFocused: TPicture read GetPictureFocused; + property PictureStyleOutline: TPicture read GetPictureStyleOutline; + property PictureFocusedStyleOutline: TPicture read GetPictureFocusedStyleOutline; + property PictureDisabled: TPicture read GetPictureDisabled; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplateType; + end; + +implementation + +uses + PraUtils, + System.SysUtils, + PraConsts; + +constructor TPraButtonStyleEmail.Create; +begin + FPicture := TPicture.Create; + FPictureFocused := TPicture.Create; + FPictureStyleOutline := TPicture.Create; + FPictureFocusedStyleOutline := TPicture.Create; + FPictureDisabled := TPicture.Create; +end; + +destructor TPraButtonStyleEmail.Destroy; +begin + freeandNil(FPicture); + freeandNil(FPictureFocused); + freeandNil(FPictureStyleOutline); + freeandNil(FPictureFocusedStyleOutline); + freeandNil(FPictureDisabled); + + inherited; +end; + +function TPraButtonStyleEmail.GetPicture: TPicture; +begin + FPicture.Assign(GetPictureOfResource('PICTURE_EMAIL_GRAY')); + + result := FPicture; +end; + +function TPraButtonStyleEmail.GetPictureDisabled: TPicture; +begin + FPictureDisabled.Assign(GetPictureOfResource('PICTURE_EMAIL_GRAY')); + + result := FPictureDisabled; +end; + +function TPraButtonStyleEmail.GetPictureFocused: TPicture; +begin + FPictureFocused.Assign(GetPictureOfResource('PICTURE_EMAIL_GRAY')); + + result := FPictureFocused; +end; + +function TPraButtonStyleEmail.GetPictureFocusedStyleOutline: TPicture; +begin + FPictureFocusedStyleOutline.Assign(GetPictureOfResource('PICTURE_EMAIL_WHITE')); + + result := FPictureFocusedStyleOutline; +end; + +function TPraButtonStyleEmail.GetPictureStyleOutline: TPicture; +begin + FPictureStyleOutline.Assign(GetPictureOfResource('PICTURE_EMAIL_WHITE')); + + result := FPictureStyleOutline; +end; + +function TPraButtonStyleEmail.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleEmail.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleEmail.New: iPraButtonStyleTemplateType; +begin + result := self.Create; +end; + +end. diff --git a/source/backup/PraButtonStyleGear.pas.bak b/source/backup/PraButtonStyleGear.pas.bak new file mode 100644 index 0000000..49fd319 --- /dev/null +++ b/source/backup/PraButtonStyleGear.pas.bak @@ -0,0 +1,156 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleGear; + +interface + +uses + +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; + +type + TPraButtonStyleGear = class(TInterfacedObject, iPraButtonStyleTemplateType) + private + FPicture: TPicture; + FPictureFocused: TPicture; + FPictureStyleOutline: TPicture; + FPictureFocusedStyleOutline: TPicture; + + FPictureDisabled: TPicture; + + function GetPicture: TPicture; + function GetPictureFocused: TPicture; + function GetPictureStyleOutline: TPicture; + function GetPictureFocusedStyleOutline: TPicture; + function GetPictureDisabled: TPicture; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + public + constructor Create; + destructor Destroy; override; + + property Picture: TPicture read GetPicture; + property PictureFocused: TPicture read GetPictureFocused; + property PictureStyleOutline: TPicture read GetPictureStyleOutline; + property PictureFocusedStyleOutline: TPicture read GetPictureFocusedStyleOutline; + property PictureDisabled: TPicture read GetPictureDisabled; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplateType; + end; + +implementation + +uses + PraUtils, + System.SysUtils, + PraConsts; + +constructor TPraButtonStyleGear.Create; +begin + FPicture := TPicture.Create; + FPictureFocused := TPicture.Create; + FPictureStyleOutline := TPicture.Create; + FPictureFocusedStyleOutline := TPicture.Create; + FPictureDisabled := TPicture.Create; +end; + +destructor TPraButtonStyleGear.Destroy; +begin + freeandNil(FPicture); + freeandNil(FPictureFocused); + freeandNil(FPictureStyleOutline); + freeandNil(FPictureFocusedStyleOutline); + freeandNil(FPictureDisabled); + + inherited; +end; + +function TPraButtonStyleGear.GetPicture: TPicture; +begin + FPicture.Assign(GetPictureOfResource('PICTURE_GEAR_WHITE')); + + result := FPicture; +end; + +function TPraButtonStyleGear.GetPictureDisabled: TPicture; +begin + FPictureDisabled.Assign(GetPictureOfResource('PICTURE_GEAR_WHITE')); + + result := FPictureDisabled; +end; + +function TPraButtonStyleGear.GetPictureFocused: TPicture; +begin + FPictureFocused.Assign(GetPictureOfResource('PICTURE_GEAR_WHITE')); + + result := FPictureFocused; +end; + +function TPraButtonStyleGear.GetPictureFocusedStyleOutline: TPicture; +begin + FPictureFocusedStyleOutline.Assign(GetPictureOfResource('PICTURE_GEAR_WHITE')); + + result := FPictureFocusedStyleOutline; +end; + +function TPraButtonStyleGear.GetPictureStyleOutline: TPicture; +begin + FPictureStyleOutline.Assign(GetPictureOfResource('PICTURE_GEAR_BLUE')); + + result := FPictureStyleOutline; +end; + +function TPraButtonStyleGear.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleGear.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleGear.New: iPraButtonStyleTemplateType; +begin + result := self.Create; +end; + +end. diff --git a/source/backup/PraButtonStyleHeart.pas.bak b/source/backup/PraButtonStyleHeart.pas.bak new file mode 100644 index 0000000..4d3dff4 --- /dev/null +++ b/source/backup/PraButtonStyleHeart.pas.bak @@ -0,0 +1,156 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleHeart; + +interface + +uses + +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +vcl.Graphics +{$ENDIF} ; + +type + TPraButtonStyleHeart = class(TInterfacedObject, iPraButtonStyleTemplateType) + private + FPicture: TPicture; + FPictureFocused: TPicture; + FPictureStyleOutline: TPicture; + FPictureFocusedStyleOutline: TPicture; + + FPictureDisabled: TPicture; + + function GetPicture: TPicture; + function GetPictureFocused: TPicture; + function GetPictureStyleOutline: TPicture; + function GetPictureFocusedStyleOutline: TPicture; + function GetPictureDisabled: TPicture; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + public + constructor Create; + destructor Destroy; override; + + property Picture: TPicture read GetPicture; + property PictureFocused: TPicture read GetPictureFocused; + property PictureStyleOutline: TPicture read GetPictureStyleOutline; + property PictureFocusedStyleOutline: TPicture read GetPictureFocusedStyleOutline; + property PictureDisabled: TPicture read GetPictureDisabled; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplateType; + end; + +implementation + +uses + PraUtils, + System.SysUtils, + PraConsts; + +constructor TPraButtonStyleHeart.Create; +begin + FPicture := TPicture.Create; + FPictureFocused := TPicture.Create; + FPictureStyleOutline := TPicture.Create; + FPictureFocusedStyleOutline := TPicture.Create; + FPictureDisabled := TPicture.Create; +end; + +destructor TPraButtonStyleHeart.Destroy; +begin + freeandNil(FPicture); + freeandNil(FPictureFocused); + freeandNil(FPictureStyleOutline); + freeandNil(FPictureFocusedStyleOutline); + freeandNil(FPictureDisabled); + + inherited; +end; + +function TPraButtonStyleHeart.GetPicture: TPicture; +begin + FPicture.Assign(GetPictureOfResource('PICTURE_HEART_WHITE')); + + result := FPicture; +end; + +function TPraButtonStyleHeart.GetPictureDisabled: TPicture; +begin + FPictureDisabled.Assign(GetPictureOfResource('PICTURE_HEART_WHITE')); + + result := FPictureDisabled; +end; + +function TPraButtonStyleHeart.GetPictureFocused: TPicture; +begin + FPictureFocused.Assign(GetPictureOfResource('PICTURE_HEART_WHITE')); + + result := FPictureFocused; +end; + +function TPraButtonStyleHeart.GetPictureFocusedStyleOutline: TPicture; +begin + FPictureFocusedStyleOutline.Assign(GetPictureOfResource('PICTURE_HEART_WHITE')); + + result := FPictureFocusedStyleOutline; +end; + +function TPraButtonStyleHeart.GetPictureStyleOutline: TPicture; +begin + FPictureStyleOutline.Assign(GetPictureOfResource('PICTURE_HEART_OUTLINE')); + + result := FPictureStyleOutline; +end; + +function TPraButtonStyleHeart.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleHeart.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleHeart.New: iPraButtonStyleTemplateType; +begin + result := self.Create; +end; + +end. diff --git a/source/backup/PraButtonStyleInsert.pas.bak b/source/backup/PraButtonStyleInsert.pas.bak new file mode 100644 index 0000000..9b7155a --- /dev/null +++ b/source/backup/PraButtonStyleInsert.pas.bak @@ -0,0 +1,156 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleInsert; + +interface + +uses + +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; + +type + TPraButtonStyleInsert = class(TInterfacedObject, iPraButtonStyleTemplateType) + private + FPicture: TPicture; + FPictureFocused: TPicture; + FPictureStyleOutline: TPicture; + FPictureFocusedStyleOutline: TPicture; + + FPictureDisabled: TPicture; + + function GetPicture: TPicture; + function GetPictureFocused: TPicture; + function GetPictureStyleOutline: TPicture; + function GetPictureFocusedStyleOutline: TPicture; + function GetPictureDisabled: TPicture; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + public + constructor Create; + destructor Destroy; override; + + property Picture: TPicture read GetPicture; + property PictureFocused: TPicture read GetPictureFocused; + property PictureStyleOutline: TPicture read GetPictureStyleOutline; + property PictureFocusedStyleOutline: TPicture read GetPictureFocusedStyleOutline; + property PictureDisabled: TPicture read GetPictureDisabled; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplateType; + end; + +implementation + +uses + PraUtils, + System.SysUtils, + PraConsts; + +constructor TPraButtonStyleInsert.Create; +begin + FPicture := TPicture.Create; + FPictureFocused := TPicture.Create; + FPictureStyleOutline := TPicture.Create; + FPictureFocusedStyleOutline := TPicture.Create; + FPictureDisabled := TPicture.Create; +end; + +destructor TPraButtonStyleInsert.Destroy; +begin + freeandNil(FPicture); + freeandNil(FPictureFocused); + freeandNil(FPictureStyleOutline); + freeandNil(FPictureFocusedStyleOutline); + freeandNil(FPictureDisabled); + + inherited; +end; + +function TPraButtonStyleInsert.GetPicture: TPicture; +begin + FPicture.Assign(GetPictureOfResource('PICTURE_INSERT_WHITE')); + + result := FPicture; +end; + +function TPraButtonStyleInsert.GetPictureDisabled: TPicture; +begin + FPictureDisabled.Assign(GetPictureOfResource('PICTURE_INSERT_WHITE')); + + result := FPictureDisabled; +end; + +function TPraButtonStyleInsert.GetPictureFocused: TPicture; +begin + FPictureFocused.Assign(GetPictureOfResource('PICTURE_INSERT_WHITE')); + + result := FPictureFocused; +end; + +function TPraButtonStyleInsert.GetPictureFocusedStyleOutline: TPicture; +begin + FPictureFocusedStyleOutline.Assign(GetPictureOfResource('PICTURE_INSERT_WHITE')); + + result := FPictureFocusedStyleOutline; +end; + +function TPraButtonStyleInsert.GetPictureStyleOutline: TPicture; +begin + FPictureStyleOutline.Assign(GetPictureOfResource('PICTURE_INSERT_GREEN')); + + result := FPictureStyleOutline; +end; + +function TPraButtonStyleInsert.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleInsert.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleInsert.New: iPraButtonStyleTemplateType; +begin + result := self.Create; +end; + +end. diff --git a/source/backup/PraButtonStyleMenu.pas.bak b/source/backup/PraButtonStyleMenu.pas.bak new file mode 100644 index 0000000..270f054 --- /dev/null +++ b/source/backup/PraButtonStyleMenu.pas.bak @@ -0,0 +1,155 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleMenu; + +interface + +uses + +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; +type + TPraButtonStyleMenu = class(TInterfacedObject, iPraButtonStyleTemplateType) + private + FPicture: TPicture; + FPictureFocused: TPicture; + FPictureStyleOutline: TPicture; + FPictureFocusedStyleOutline: TPicture; + + FPictureDisabled: TPicture; + + function GetPicture: TPicture; + function GetPictureFocused: TPicture; + function GetPictureStyleOutline: TPicture; + function GetPictureFocusedStyleOutline: TPicture; + function GetPictureDisabled: TPicture; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + public + constructor Create; + destructor Destroy; override; + + property Picture: TPicture read GetPicture; + property PictureFocused: TPicture read GetPictureFocused; + property PictureStyleOutline: TPicture read GetPictureStyleOutline; + property PictureFocusedStyleOutline: TPicture read GetPictureFocusedStyleOutline; + property PictureDisabled: TPicture read GetPictureDisabled; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplateType; + end; + +implementation + +uses + PraUtils, + System.SysUtils, + PraConsts; + +constructor TPraButtonStyleMenu.Create; +begin + FPicture := TPicture.Create; + FPictureFocused := TPicture.Create; + FPictureStyleOutline := TPicture.Create; + FPictureFocusedStyleOutline := TPicture.Create; + FPictureDisabled := TPicture.Create; +end; + +destructor TPraButtonStyleMenu.Destroy; +begin + freeandNil(FPicture); + freeandNil(FPictureFocused); + freeandNil(FPictureStyleOutline); + freeandNil(FPictureFocusedStyleOutline); + freeandNil(FPictureDisabled); + + inherited; +end; + +function TPraButtonStyleMenu.GetPicture: TPicture; +begin + FPicture.Assign(GetPictureOfResource('PICTURE_MENU_WHITE')); + + result := FPicture; +end; + +function TPraButtonStyleMenu.GetPictureDisabled: TPicture; +begin + FPictureDisabled.Assign(GetPictureOfResource('PICTURE_MENU_WHITE')); + + result := FPictureDisabled; +end; + +function TPraButtonStyleMenu.GetPictureFocused: TPicture; +begin + FPictureFocused.Assign(GetPictureOfResource('PICTURE_MENU_WHITE')); + + result := FPictureFocused; +end; + +function TPraButtonStyleMenu.GetPictureFocusedStyleOutline: TPicture; +begin + FPictureFocusedStyleOutline.Assign(GetPictureOfResource('PICTURE_MENU_WHITE')); + + result := FPictureFocusedStyleOutline; +end; + +function TPraButtonStyleMenu.GetPictureStyleOutline: TPicture; +begin + FPictureStyleOutline.Assign(GetPictureOfResource('PICTURE_MENU_BLUE')); + + result := FPictureStyleOutline; +end; + +function TPraButtonStyleMenu.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleMenu.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleMenu.New: iPraButtonStyleTemplateType; +begin + result := self.Create; +end; + +end. diff --git a/source/backup/PraButtonStylePrint.pas.bak b/source/backup/PraButtonStylePrint.pas.bak new file mode 100644 index 0000000..46ae972 --- /dev/null +++ b/source/backup/PraButtonStylePrint.pas.bak @@ -0,0 +1,155 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStylePrint; + +interface + +uses + +{$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; +type + TPraButtonStylePrint = class(TInterfacedObject, iPraButtonStyleTemplateType) + private + FPicture: TPicture; + FPictureFocused: TPicture; + FPictureStyleOutline: TPicture; + FPictureFocusedStyleOutline: TPicture; + + FPictureDisabled: TPicture; + + function GetPicture: TPicture; + function GetPictureFocused: TPicture; + function GetPictureStyleOutline: TPicture; + function GetPictureFocusedStyleOutline: TPicture; + function GetPictureDisabled: TPicture; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + public + constructor Create; + destructor Destroy; override; + + property Picture: TPicture read GetPicture; + property PictureFocused: TPicture read GetPictureFocused; + property PictureStyleOutline: TPicture read GetPictureStyleOutline; + property PictureFocusedStyleOutline: TPicture read GetPictureFocusedStyleOutline; + property PictureDisabled: TPicture read GetPictureDisabled; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplateType; + end; + +implementation + +uses + PraUtils, + System.SysUtils, + PraConsts; + +constructor TPraButtonStylePrint.Create; +begin + FPicture := TPicture.Create; + FPictureFocused := TPicture.Create; + FPictureStyleOutline := TPicture.Create; + FPictureFocusedStyleOutline := TPicture.Create; + FPictureDisabled := TPicture.Create; +end; + +destructor TPraButtonStylePrint.Destroy; +begin + freeandNil(FPicture); + freeandNil(FPictureFocused); + freeandNil(FPictureStyleOutline); + freeandNil(FPictureFocusedStyleOutline); + freeandNil(FPictureDisabled); + + inherited; +end; + +function TPraButtonStylePrint.GetPicture: TPicture; +begin + FPicture.Assign(GetPictureOfResource('PICTURE_PRINT_WHITE')); + + result := FPicture; +end; + +function TPraButtonStylePrint.GetPictureDisabled: TPicture; +begin + FPictureDisabled.Assign(GetPictureOfResource('PICTURE_PRINT_WHITE')); + + result := FPictureDisabled; +end; + +function TPraButtonStylePrint.GetPictureFocused: TPicture; +begin + FPictureFocused.Assign(GetPictureOfResource('PICTURE_PRINT_WHITE')); + + result := FPictureFocused; +end; + +function TPraButtonStylePrint.GetPictureFocusedStyleOutline: TPicture; +begin + FPictureFocusedStyleOutline.Assign(GetPictureOfResource('PICTURE_PRINT_WHITE')); + + result := FPictureFocusedStyleOutline; +end; + +function TPraButtonStylePrint.GetPictureStyleOutline: TPicture; +begin + FPictureStyleOutline.Assign(GetPictureOfResource('PICTURE_PRINT_BLUE')); + + result := FPictureStyleOutline; +end; + +function TPraButtonStylePrint.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStylePrint.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStylePrint.New: iPraButtonStyleTemplateType; +begin + result := self.Create; +end; + +end. diff --git a/source/backup/PraButtonStyleReport.pas.bak b/source/backup/PraButtonStyleReport.pas.bak new file mode 100644 index 0000000..1c790be --- /dev/null +++ b/source/backup/PraButtonStyleReport.pas.bak @@ -0,0 +1,155 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleReport; + +interface + +uses + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; + +type + TPraButtonStyleReport = class(TInterfacedObject, iPraButtonStyleTemplateType) + private + FPicture: TPicture; + FPictureFocused: TPicture; + FPictureStyleOutline: TPicture; + FPictureFocusedStyleOutline: TPicture; + + FPictureDisabled: TPicture; + + function GetPicture: TPicture; + function GetPictureFocused: TPicture; + function GetPictureStyleOutline: TPicture; + function GetPictureFocusedStyleOutline: TPicture; + function GetPictureDisabled: TPicture; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + public + constructor Create; + destructor Destroy; override; + + property Picture: TPicture read GetPicture; + property PictureFocused: TPicture read GetPictureFocused; + property PictureStyleOutline: TPicture read GetPictureStyleOutline; + property PictureFocusedStyleOutline: TPicture read GetPictureFocusedStyleOutline; + property PictureDisabled: TPicture read GetPictureDisabled; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplateType; + end; + +implementation + +uses + PraUtils, + System.SysUtils, + PraConsts; + +constructor TPraButtonStyleReport.Create; +begin + FPicture := TPicture.Create; + FPictureFocused := TPicture.Create; + FPictureStyleOutline := TPicture.Create; + FPictureFocusedStyleOutline := TPicture.Create; + FPictureDisabled := TPicture.Create; +end; + +destructor TPraButtonStyleReport.Destroy; +begin + freeandNil(FPicture); + freeandNil(FPictureFocused); + freeandNil(FPictureStyleOutline); + freeandNil(FPictureFocusedStyleOutline); + freeandNil(FPictureDisabled); + + inherited; +end; + +function TPraButtonStyleReport.GetPicture: TPicture; +begin + FPicture.Assign(GetPictureOfResource('PICTURE_REPORT_WHITE')); + + result := FPicture; +end; + +function TPraButtonStyleReport.GetPictureDisabled: TPicture; +begin + FPictureDisabled.Assign(GetPictureOfResource('PICTURE_REPORT_WHITE')); + + result := FPictureDisabled; +end; + +function TPraButtonStyleReport.GetPictureFocused: TPicture; +begin + FPictureFocused.Assign(GetPictureOfResource('PICTURE_REPORT_WHITE')); + + result := FPictureFocused; +end; + +function TPraButtonStyleReport.GetPictureFocusedStyleOutline: TPicture; +begin + FPictureFocusedStyleOutline.Assign(GetPictureOfResource('PICTURE_REPORT_WHITE')); + + result := FPictureFocusedStyleOutline; +end; + +function TPraButtonStyleReport.GetPictureStyleOutline: TPicture; +begin + FPictureStyleOutline.Assign(GetPictureOfResource('PICTURE_REPORT_BLUE')); + + result := FPictureStyleOutline; +end; + +function TPraButtonStyleReport.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleReport.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleReport.New: iPraButtonStyleTemplateType; +begin + result := self.Create; +end; + +end. diff --git a/source/backup/PraButtonStyleSave.pas.bak b/source/backup/PraButtonStyleSave.pas.bak new file mode 100644 index 0000000..872adb5 --- /dev/null +++ b/source/backup/PraButtonStyleSave.pas.bak @@ -0,0 +1,155 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleSave; + +interface + +uses + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; + +type + TPraButtonStyleSave = class(TInterfacedObject, iPraButtonStyleTemplateType) + private + FPicture: TPicture; + FPictureFocused: TPicture; + FPictureStyleOutline: TPicture; + FPictureFocusedStyleOutline: TPicture; + + FPictureDisabled: TPicture; + + function GetPicture: TPicture; + function GetPictureFocused: TPicture; + function GetPictureStyleOutline: TPicture; + function GetPictureFocusedStyleOutline: TPicture; + function GetPictureDisabled: TPicture; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + public + constructor Create; + destructor Destroy; override; + + property Picture: TPicture read GetPicture; + property PictureFocused: TPicture read GetPictureFocused; + property PictureStyleOutline: TPicture read GetPictureStyleOutline; + property PictureFocusedStyleOutline: TPicture read GetPictureFocusedStyleOutline; + property PictureDisabled: TPicture read GetPictureDisabled; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplateType; + end; + +implementation + +uses + PraUtils, + System.SysUtils, + PraConsts; + +constructor TPraButtonStyleSave.Create; +begin + FPicture := TPicture.Create; + FPictureFocused := TPicture.Create; + FPictureStyleOutline := TPicture.Create; + FPictureFocusedStyleOutline := TPicture.Create; + FPictureDisabled := TPicture.Create; +end; + +destructor TPraButtonStyleSave.Destroy; +begin + freeandNil(FPicture); + freeandNil(FPictureFocused); + freeandNil(FPictureStyleOutline); + freeandNil(FPictureFocusedStyleOutline); + freeandNil(FPictureDisabled); + + inherited; +end; + +function TPraButtonStyleSave.GetPicture: TPicture; +begin + FPicture.Assign(GetPictureOfResource('PICTURE_SAVE_WHITE')); + + result := FPicture; +end; + +function TPraButtonStyleSave.GetPictureDisabled: TPicture; +begin + FPictureDisabled.Assign(GetPictureOfResource('PICTURE_SAVE_WHITE')); + + result := FPictureDisabled; +end; + +function TPraButtonStyleSave.GetPictureFocused: TPicture; +begin + FPictureFocused.Assign(GetPictureOfResource('PICTURE_SAVE_WHITE')); + + result := FPictureFocused; +end; + +function TPraButtonStyleSave.GetPictureFocusedStyleOutline: TPicture; +begin + FPictureFocusedStyleOutline.Assign(GetPictureOfResource('PICTURE_SAVE_WHITE')); + + result := FPictureFocusedStyleOutline; +end; + +function TPraButtonStyleSave.GetPictureStyleOutline: TPicture; +begin + FPictureStyleOutline.Assign(GetPictureOfResource('PICTURE_SAVE_GREEN')); + + result := FPictureStyleOutline; +end; + +function TPraButtonStyleSave.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleSave.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleSave.New: iPraButtonStyleTemplateType; +begin + result := self.Create; +end; + +end. diff --git a/source/backup/PraButtonStyleTemplateDanger.pas.bak b/source/backup/PraButtonStyleTemplateDanger.pas.bak new file mode 100644 index 0000000..0abfd1f --- /dev/null +++ b/source/backup/PraButtonStyleTemplateDanger.pas.bak @@ -0,0 +1,269 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleTemplateDanger; + +interface + +uses + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; + +type + TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) + private + FFont: TFont; + FFontDisabled: TFont; + FFontFocused: TFont; + FFontDown: TFont; + + function GetFont: TFont; + function GetFontDown: TFont; + function GetFontFocused: TFont; + function GetFontDisabled: TFont; + public + constructor Create; + destructor Destroy; override; + + property Font: TFont read GetFont; + property FontDown: TFont read GetFontDown; + property FontFocused: TFont read GetFontFocused; + property FontDisabled: TFont read GetFontDisabled; + + class function New: iPraFontConfigurationCommon; + end; + + TPraPenConfiguration = class(TInterfacedObject, iPraPenConfigurationCommon) + function GetPenStyle: TPenStyle; + function GetPenFocusedStyle: TPenStyle; + function GetPenDisabledStyle: TPenStyle; + function GetPenDownStyle: TPenStyle; + function GetPenDownWidth: Smallint; + + public + class function New: iPraPenConfigurationCommon; + end; + + TPraButtonStyleTemplateDanger = class(TInterfacedObject, iPraButtonStyleTemplate) + private + FPenConfigurationCommon: iPraPenConfigurationCommon; + FFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushColor: TColor; + function GetBrushFocusedColor: TColor; + function GetBrushDownColor: TColor; + + function GetPenDownColor: TColor; + + function GetPenConfigurationCommon: iPraPenConfigurationCommon; + function GetFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushDisabledColor: TColor; + + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + + constructor Create; + public + property BrushColor: TColor read GetBrushColor; + property BrushFocusedColor: TColor read GetBrushFocusedColor; + property BrushDownColor: TColor read GetBrushDownColor; + property PenDownColor: TColor read GetPenDownColor; + property PenConfigurationCommon: iPraPenConfigurationCommon read GetPenConfigurationCommon; + property FontConfigurationCommon: iPraFontConfigurationCommon read GetFontConfigurationCommon; + property BrushDisabledColor: TColor read GetBrushDisabledColor; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplate; + end; + +implementation + +uses + System.SysUtils, + PraConsts; + +constructor TPraFontConfiguration.Create; +begin + FFont := TFont.Create; + Font.Color := clWhite; + Font.Name := 'Tahoma'; + Font.Style := [fsBold]; + Font.Size := 10; + + FFontDisabled := TFont.Create; + FontDisabled.Color := $00FFF0E2; + FontDisabled.Name := 'Tahoma'; + FontDisabled.Style := [fsBold]; + FontDisabled.Size := 10; + + FFontFocused := TFont.Create; + FontFocused.Color := clWhite; + FontFocused.Name := 'Tahoma'; + FontFocused.Style := [fsBold]; + FontFocused.Size := 10; + + FFontDown := TFont.Create; + FontDown.Color := clWhite; + FontDown.Name := 'Tahoma'; + FontDown.Style := [fsBold]; + FontDown.Size := 10; +end; + +destructor TPraFontConfiguration.Destroy; +begin + freeandNil(FFont); + freeandNil(FFontDisabled); + freeandNil(FFontFocused); + freeandNil(FFontDown); + + inherited Destroy; +end; + +function TPraFontConfiguration.GetFont: TFont; +begin + result := FFont; +end; + +function TPraFontConfiguration.GetFontDisabled: TFont; +begin + result := FFontDisabled; +end; + +function TPraFontConfiguration.GetFontDown: TFont; +begin + result := FFontDown; +end; + +function TPraFontConfiguration.GetFontFocused: TFont; +begin + result := FFontFocused; +end; + +class function TPraFontConfiguration.New: iPraFontConfigurationCommon; +begin + result := self.Create; +end; + +function TPraPenConfiguration.GetPenDisabledStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenDownStyle: TPenStyle; +begin + result := psSolid; +end; + +function TPraPenConfiguration.GetPenDownWidth: Smallint; +begin + result := 3; +end; + +function TPraPenConfiguration.GetPenFocusedStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenStyle: TPenStyle; +begin + result := psClear; +end; + +class function TPraPenConfiguration.New: iPraPenConfigurationCommon; +begin + result := self.Create; +end; + +constructor TPraButtonStyleTemplateDanger.Create; +begin + FPenConfigurationCommon := TPraPenConfiguration.New; + FFontConfigurationCommon := TPraFontConfiguration.New; +end; + +function TPraButtonStyleTemplateDanger.GetBrushColor: TColor; +begin + result := $004737DA; +end; + +function TPraButtonStyleTemplateDanger.GetBrushDisabledColor: TColor; +begin + result := $00A9A2EE; +end; + +function TPraButtonStyleTemplateDanger.GetBrushDownColor: TColor; +begin + result := $003626C6; +end; + +function TPraButtonStyleTemplateDanger.GetBrushFocusedColor: TColor; +begin + result := $003626C6; +end; + +function TPraButtonStyleTemplateDanger.GetFontConfigurationCommon: iPraFontConfigurationCommon; +begin + result := FFontConfigurationCommon; +end; + +function TPraButtonStyleTemplateDanger.GetPenDownColor: TColor; +begin + result := $00A39BEC; +end; + +function TPraButtonStyleTemplateDanger.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleTemplateDanger.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleTemplateDanger.New: iPraButtonStyleTemplate; +begin + result := self.Create; +end; + +function TPraButtonStyleTemplateDanger.GetPenConfigurationCommon: iPraPenConfigurationCommon; +begin + result := FPenConfigurationCommon; +end; + +end. diff --git a/source/backup/PraButtonStyleTemplateDark.pas.bak b/source/backup/PraButtonStyleTemplateDark.pas.bak new file mode 100644 index 0000000..bb5900b --- /dev/null +++ b/source/backup/PraButtonStyleTemplateDark.pas.bak @@ -0,0 +1,269 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleTemplateDark; + +interface + +uses + {$IF DEFINED(FPC)} +PraInterfaces, +Graphics +{$ELSE} // DEFINE DELPHI +PraInterfaces, +Vcl.Graphics +{$ENDIF} ; + +type + TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) + private + FFont: TFont; + FFontDisabled: TFont; + FFontFocused: TFont; + FFontDown: TFont; + + function GetFont: TFont; + function GetFontDown: TFont; + function GetFontFocused: TFont; + function GetFontDisabled: TFont; + public + constructor Create; + destructor Destroy; override; + + property Font: TFont read GetFont; + property FontDown: TFont read GetFontDown; + property FontFocused: TFont read GetFontFocused; + property FontDisabled: TFont read GetFontDisabled; + + class function New: iPraFontConfigurationCommon; + end; + + TPraPenConfiguration = class(TInterfacedObject, iPraPenConfigurationCommon) + function GetPenStyle: TPenStyle; + function GetPenFocusedStyle: TPenStyle; + function GetPenDisabledStyle: TPenStyle; + function GetPenDownStyle: TPenStyle; + function GetPenDownWidth: Smallint; + + public + class function New: iPraPenConfigurationCommon; + end; + + TPraButtonStyleTemplateDark = class(TInterfacedObject, iPraButtonStyleTemplate) + private + FPenConfigurationCommon: iPraPenConfigurationCommon; + FFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushColor: TColor; + function GetBrushFocusedColor: TColor; + function GetBrushDownColor: TColor; + + function GetPenDownColor: TColor; + + function GetPenConfigurationCommon: iPraPenConfigurationCommon; + function GetFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushDisabledColor: TColor; + + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + + constructor Create; + public + property BrushColor: TColor read GetBrushColor; + property BrushFocusedColor: TColor read GetBrushFocusedColor; + property BrushDownColor: TColor read GetBrushDownColor; + property PenDownColor: TColor read GetPenDownColor; + property PenConfigurationCommon: iPraPenConfigurationCommon read GetPenConfigurationCommon; + property FontConfigurationCommon: iPraFontConfigurationCommon read GetFontConfigurationCommon; + property BrushDisabledColor: TColor read GetBrushDisabledColor; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplate; + end; + +implementation + +uses + System.SysUtils, + PraConsts; + +constructor TPraFontConfiguration.Create; +begin + FFont := TFont.Create; + Font.Color := clWhite; + Font.Name := 'Tahoma'; + Font.Style := [fsBold]; + Font.Size := 10; + + FFontDisabled := TFont.Create; + FontDisabled.Color := $00FFF0E2; + FontDisabled.Name := 'Tahoma'; + FontDisabled.Style := [fsBold]; + FontDisabled.Size := 10; + + FFontFocused := TFont.Create; + FontFocused.Color := clWhite; + FontFocused.Name := 'Tahoma'; + FontFocused.Style := [fsBold]; + FontFocused.Size := 10; + + FFontDown := TFont.Create; + FontDown.Color := clWhite; + FontDown.Name := 'Tahoma'; + FontDown.Style := [fsBold]; + FontDown.Size := 10; +end; + +destructor TPraFontConfiguration.Destroy; +begin + freeandNil(FFont); + freeandNil(FFontDisabled); + freeandNil(FFontFocused); + freeandNil(FFontDown); + + inherited Destroy; +end; + +function TPraFontConfiguration.GetFont: TFont; +begin + result := FFont; +end; + +function TPraFontConfiguration.GetFontDisabled: TFont; +begin + result := FFontDisabled; +end; + +function TPraFontConfiguration.GetFontDown: TFont; +begin + result := FFontDown; +end; + +function TPraFontConfiguration.GetFontFocused: TFont; +begin + result := FFontFocused; +end; + +class function TPraFontConfiguration.New: iPraFontConfigurationCommon; +begin + result := self.Create; +end; + +function TPraPenConfiguration.GetPenDisabledStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenDownStyle: TPenStyle; +begin + result := psSolid; +end; + +function TPraPenConfiguration.GetPenDownWidth: Smallint; +begin + result := 3; +end; + +function TPraPenConfiguration.GetPenFocusedStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenStyle: TPenStyle; +begin + result := psClear; +end; + +class function TPraPenConfiguration.New: iPraPenConfigurationCommon; +begin + result := self.Create; +end; + +constructor TPraButtonStyleTemplateDark.Create; +begin + FPenConfigurationCommon := TPraPenConfiguration.New; + FFontConfigurationCommon := TPraFontConfiguration.New; +end; + +function TPraButtonStyleTemplateDark.GetBrushColor: TColor; +begin + result := $00403A34; +end; + +function TPraButtonStyleTemplateDark.GetBrushDisabledColor: TColor; +begin + result := $0094877A; +end; + +function TPraButtonStyleTemplateDark.GetBrushDownColor: TColor; +begin + result := $002B2723; +end; + +function TPraButtonStyleTemplateDark.GetBrushFocusedColor: TColor; +begin + result := $002B2723; +end; + +function TPraButtonStyleTemplateDark.GetFontConfigurationCommon: iPraFontConfigurationCommon; +begin + result := FFontConfigurationCommon; +end; + +function TPraButtonStyleTemplateDark.GetPenDownColor: TColor; +begin + result := $009F9C99; +end; + +function TPraButtonStyleTemplateDark.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleTemplateDark.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleTemplateDark.New: iPraButtonStyleTemplate; +begin + result := self.Create; +end; + +function TPraButtonStyleTemplateDark.GetPenConfigurationCommon: iPraPenConfigurationCommon; +begin + result := FPenConfigurationCommon; +end; + +end. diff --git a/source/backup/PraButtonStyleTemplateGear.pas.bak b/source/backup/PraButtonStyleTemplateGear.pas.bak new file mode 100644 index 0000000..509ef90 --- /dev/null +++ b/source/backup/PraButtonStyleTemplateGear.pas.bak @@ -0,0 +1,268 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleTemplateGear; + +interface + +uses + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; +type + TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) + private + FFont: TFont; + FFontDisabled: TFont; + FFontFocused: TFont; + FFontDown: TFont; + + function GetFont: TFont; + function GetFontDown: TFont; + function GetFontFocused: TFont; + function GetFontDisabled: TFont; + public + constructor Create; + destructor Destroy; override; + + property Font: TFont read GetFont; + property FontDown: TFont read GetFontDown; + property FontFocused: TFont read GetFontFocused; + property FontDisabled: TFont read GetFontDisabled; + + class function New: iPraFontConfigurationCommon; + end; + + TPraPenConfiguration = class(TInterfacedObject, iPraPenConfigurationCommon) + function GetPenStyle: TPenStyle; + function GetPenFocusedStyle: TPenStyle; + function GetPenDisabledStyle: TPenStyle; + function GetPenDownStyle: TPenStyle; + function GetPenDownWidth: Smallint; + + public + class function New: iPraPenConfigurationCommon; + end; + + TPraButtonStyleTemplateGear = class(TInterfacedObject, iPraButtonStyleTemplate) + private + FPenConfigurationCommon: iPraPenConfigurationCommon; + FFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushColor: TColor; + function GetBrushFocusedColor: TColor; + function GetBrushDownColor: TColor; + + function GetPenDownColor: TColor; + + function GetPenConfigurationCommon: iPraPenConfigurationCommon; + function GetFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushDisabledColor: TColor; + + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + + constructor Create; + public + property BrushColor: TColor read GetBrushColor; + property BrushFocusedColor: TColor read GetBrushFocusedColor; + property BrushDownColor: TColor read GetBrushDownColor; + property PenDownColor: TColor read GetPenDownColor; + property PenConfigurationCommon: iPraPenConfigurationCommon read GetPenConfigurationCommon; + property FontConfigurationCommon: iPraFontConfigurationCommon read GetFontConfigurationCommon; + property BrushDisabledColor: TColor read GetBrushDisabledColor; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplate; + end; + +implementation + +uses + System.SysUtils, + PraConsts; + +constructor TPraFontConfiguration.Create; +begin + FFont := TFont.Create; + Font.Color := clWhite; + Font.Name := 'Tahoma'; + Font.Style := [fsBold]; + Font.Size := 10; + + FFontDisabled := TFont.Create; + FontDisabled.Color := $00FFF0E2; + FontDisabled.Name := 'Tahoma'; + FontDisabled.Style := [fsBold]; + FontDisabled.Size := 10; + + FFontFocused := TFont.Create; + FontFocused.Color := clWhite; + FontFocused.Name := 'Tahoma'; + FontFocused.Style := [fsBold]; + FontFocused.Size := 10; + + FFontDown := TFont.Create; + FontDown.Color := clWhite; + FontDown.Name := 'Tahoma'; + FontDown.Style := [fsBold]; + FontDown.Size := 10; +end; + +destructor TPraFontConfiguration.Destroy; +begin + freeandNil(FFont); + freeandNil(FFontDisabled); + freeandNil(FFontFocused); + freeandNil(FFontDown); + + inherited Destroy; +end; + +function TPraFontConfiguration.GetFont: TFont; +begin + result := FFont; +end; + +function TPraFontConfiguration.GetFontDisabled: TFont; +begin + result := FFontDisabled; +end; + +function TPraFontConfiguration.GetFontDown: TFont; +begin + result := FFontDown; +end; + +function TPraFontConfiguration.GetFontFocused: TFont; +begin + result := FFontFocused; +end; + +class function TPraFontConfiguration.New: iPraFontConfigurationCommon; +begin + result := self.Create; +end; + +function TPraPenConfiguration.GetPenDisabledStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenDownStyle: TPenStyle; +begin + result := psSolid; +end; + +function TPraPenConfiguration.GetPenDownWidth: Smallint; +begin + result := 3; +end; + +function TPraPenConfiguration.GetPenFocusedStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenStyle: TPenStyle; +begin + result := psClear; +end; + +class function TPraPenConfiguration.New: iPraPenConfigurationCommon; +begin + result := self.Create; +end; + +constructor TPraButtonStyleTemplateGear.Create; +begin + FPenConfigurationCommon := TPraPenConfiguration.New; + FFontConfigurationCommon := TPraFontConfiguration.New; +end; + +function TPraButtonStyleTemplateGear.GetBrushColor: TColor; +begin + result := $00B8A027; +end; + +function TPraButtonStyleTemplateGear.GetBrushDisabledColor: TColor; +begin + result := $00E2D07A; +end; + +function TPraButtonStyleTemplateGear.GetBrushDownColor: TColor; +begin + result := $00978420; +end; + +function TPraButtonStyleTemplateGear.GetBrushFocusedColor: TColor; +begin + result := $00978420; +end; + +function TPraButtonStyleTemplateGear.GetFontConfigurationCommon: iPraFontConfigurationCommon; +begin + result := FFontConfigurationCommon; +end; + +function TPraButtonStyleTemplateGear.GetPenDownColor: TColor; +begin + result := $00DBD093; +end; + +function TPraButtonStyleTemplateGear.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleTemplateGear.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleTemplateGear.New: iPraButtonStyleTemplate; +begin + result := self.Create; +end; + +function TPraButtonStyleTemplateGear.GetPenConfigurationCommon: iPraPenConfigurationCommon; +begin + result := FPenConfigurationCommon; +end; + +end. diff --git a/source/backup/PraButtonStyleTemplateHeart.pas.bak b/source/backup/PraButtonStyleTemplateHeart.pas.bak new file mode 100644 index 0000000..cc34896 --- /dev/null +++ b/source/backup/PraButtonStyleTemplateHeart.pas.bak @@ -0,0 +1,269 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleTemplateHeart; + +interface + +uses + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; + +type + TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) + private + FFont: TFont; + FFontDisabled: TFont; + FFontFocused: TFont; + FFontDown: TFont; + + function GetFont: TFont; + function GetFontDown: TFont; + function GetFontFocused: TFont; + function GetFontDisabled: TFont; + public + constructor Create; + destructor Destroy; override; + + property Font: TFont read GetFont; + property FontDown: TFont read GetFontDown; + property FontFocused: TFont read GetFontFocused; + property FontDisabled: TFont read GetFontDisabled; + + class function New: iPraFontConfigurationCommon; + end; + + TPraPenConfiguration = class(TInterfacedObject, iPraPenConfigurationCommon) + function GetPenStyle: TPenStyle; + function GetPenFocusedStyle: TPenStyle; + function GetPenDisabledStyle: TPenStyle; + function GetPenDownStyle: TPenStyle; + function GetPenDownWidth: Smallint; + + public + class function New: iPraPenConfigurationCommon; + end; + + TPraButtonStyleTemplateHeart = class(TInterfacedObject, iPraButtonStyleTemplate) + private + FPenConfigurationCommon: iPraPenConfigurationCommon; + FFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushColor: TColor; + function GetBrushFocusedColor: TColor; + function GetBrushDownColor: TColor; + + function GetPenDownColor: TColor; + + function GetPenConfigurationCommon: iPraPenConfigurationCommon; + function GetFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushDisabledColor: TColor; + + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + + constructor Create; + public + property BrushColor: TColor read GetBrushColor; + property BrushFocusedColor: TColor read GetBrushFocusedColor; + property BrushDownColor: TColor read GetBrushDownColor; + property PenDownColor: TColor read GetPenDownColor; + property PenConfigurationCommon: iPraPenConfigurationCommon read GetPenConfigurationCommon; + property FontConfigurationCommon: iPraFontConfigurationCommon read GetFontConfigurationCommon; + property BrushDisabledColor: TColor read GetBrushDisabledColor; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplate; + end; + +implementation + +uses + System.SysUtils, + PraConsts; + +constructor TPraFontConfiguration.Create; +begin + FFont := TFont.Create; + Font.Color := clWhite; + Font.Name := 'Tahoma'; + Font.Style := [fsBold]; + Font.Size := 10; + + FFontDisabled := TFont.Create; + FontDisabled.Color := $00FFF0E2; + FontDisabled.Name := 'Tahoma'; + FontDisabled.Style := [fsBold]; + FontDisabled.Size := 10; + + FFontFocused := TFont.Create; + FontFocused.Color := clWhite; + FontFocused.Name := 'Tahoma'; + FontFocused.Style := [fsBold]; + FontFocused.Size := 10; + + FFontDown := TFont.Create; + FontDown.Color := clWhite; + FontDown.Name := 'Tahoma'; + FontDown.Style := [fsBold]; + FontDown.Size := 10; +end; + +destructor TPraFontConfiguration.Destroy; +begin + freeandNil(FFont); + freeandNil(FFontDisabled); + freeandNil(FFontFocused); + freeandNil(FFontDown); + + inherited Destroy; +end; + +function TPraFontConfiguration.GetFont: TFont; +begin + result := FFont; +end; + +function TPraFontConfiguration.GetFontDisabled: TFont; +begin + result := FFontDisabled; +end; + +function TPraFontConfiguration.GetFontDown: TFont; +begin + result := FFontDown; +end; + +function TPraFontConfiguration.GetFontFocused: TFont; +begin + result := FFontFocused; +end; + +class function TPraFontConfiguration.New: iPraFontConfigurationCommon; +begin + result := self.Create; +end; + +function TPraPenConfiguration.GetPenDisabledStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenDownStyle: TPenStyle; +begin + result := psSolid; +end; + +function TPraPenConfiguration.GetPenDownWidth: Smallint; +begin + result := 3; +end; + +function TPraPenConfiguration.GetPenFocusedStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenStyle: TPenStyle; +begin + result := psClear; +end; + +class function TPraPenConfiguration.New: iPraPenConfigurationCommon; +begin + result := self.Create; +end; + +constructor TPraButtonStyleTemplateHeart.Create; +begin + FPenConfigurationCommon := TPraPenConfiguration.New; + FFontConfigurationCommon := TPraFontConfiguration.New; +end; + +function TPraButtonStyleTemplateHeart.GetBrushColor: TColor; +begin + result := $00B8A027; +end; + +function TPraButtonStyleTemplateHeart.GetBrushDisabledColor: TColor; +begin + result := $00E2D07A; +end; + +function TPraButtonStyleTemplateHeart.GetBrushDownColor: TColor; +begin + result := $00978420; +end; + +function TPraButtonStyleTemplateHeart.GetBrushFocusedColor: TColor; +begin + result := $00978420; +end; + +function TPraButtonStyleTemplateHeart.GetFontConfigurationCommon: iPraFontConfigurationCommon; +begin + result := FFontConfigurationCommon; +end; + +function TPraButtonStyleTemplateHeart.GetPenDownColor: TColor; +begin + result := $00DBD093; +end; + +function TPraButtonStyleTemplateHeart.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleTemplateHeart.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleTemplateHeart.New: iPraButtonStyleTemplate; +begin + result := self.Create; +end; + +function TPraButtonStyleTemplateHeart.GetPenConfigurationCommon: iPraPenConfigurationCommon; +begin + result := FPenConfigurationCommon; +end; + +end. diff --git a/source/backup/PraButtonStyleTemplateInfo.pas.bak b/source/backup/PraButtonStyleTemplateInfo.pas.bak new file mode 100644 index 0000000..27d327c --- /dev/null +++ b/source/backup/PraButtonStyleTemplateInfo.pas.bak @@ -0,0 +1,269 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleTemplateInfo; + +interface + +uses + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; + +type + TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) + private + FFont: TFont; + FFontDisabled: TFont; + FFontFocused: TFont; + FFontDown: TFont; + + function GetFont: TFont; + function GetFontDown: TFont; + function GetFontFocused: TFont; + function GetFontDisabled: TFont; + public + constructor Create; + destructor Destroy; override; + + property Font: TFont read GetFont; + property FontDown: TFont read GetFontDown; + property FontFocused: TFont read GetFontFocused; + property FontDisabled: TFont read GetFontDisabled; + + class function New: iPraFontConfigurationCommon; + end; + + TPraPenConfiguration = class(TInterfacedObject, iPraPenConfigurationCommon) + function GetPenStyle: TPenStyle; + function GetPenFocusedStyle: TPenStyle; + function GetPenDisabledStyle: TPenStyle; + function GetPenDownStyle: TPenStyle; + function GetPenDownWidth: Smallint; + + public + class function New: iPraPenConfigurationCommon; + end; + + TPraButtonStyleTemplateInfo = class(TInterfacedObject, iPraButtonStyleTemplate) + private + FPenConfigurationCommon: iPraPenConfigurationCommon; + FFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushColor: TColor; + function GetBrushFocusedColor: TColor; + function GetBrushDownColor: TColor; + + function GetPenDownColor: TColor; + + function GetPenConfigurationCommon: iPraPenConfigurationCommon; + function GetFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushDisabledColor: TColor; + + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + + constructor Create; + public + property BrushColor: TColor read GetBrushColor; + property BrushFocusedColor: TColor read GetBrushFocusedColor; + property BrushDownColor: TColor read GetBrushDownColor; + property PenDownColor: TColor read GetPenDownColor; + property PenConfigurationCommon: iPraPenConfigurationCommon read GetPenConfigurationCommon; + property FontConfigurationCommon: iPraFontConfigurationCommon read GetFontConfigurationCommon; + property BrushDisabledColor: TColor read GetBrushDisabledColor; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplate; + end; + +implementation + +uses + System.SysUtils, + PraConsts; + +constructor TPraFontConfiguration.Create; +begin + FFont := TFont.Create; + Font.Color := clWhite; + Font.Name := 'Tahoma'; + Font.Style := [fsBold]; + Font.Size := 10; + + FFontDisabled := TFont.Create; + FontDisabled.Color := $00FFF0E2; + FontDisabled.Name := 'Tahoma'; + FontDisabled.Style := [fsBold]; + FontDisabled.Size := 10; + + FFontFocused := TFont.Create; + FontFocused.Color := clWhite; + FontFocused.Name := 'Tahoma'; + FontFocused.Style := [fsBold]; + FontFocused.Size := 10; + + FFontDown := TFont.Create; + FontDown.Color := clWhite; + FontDown.Name := 'Tahoma'; + FontDown.Style := [fsBold]; + FontDown.Size := 10; +end; + +destructor TPraFontConfiguration.Destroy; +begin + freeandNil(FFont); + freeandNil(FFontDisabled); + freeandNil(FFontFocused); + freeandNil(FFontDown); + + inherited Destroy; +end; + +function TPraFontConfiguration.GetFont: TFont; +begin + result := FFont; +end; + +function TPraFontConfiguration.GetFontDisabled: TFont; +begin + result := FFontDisabled; +end; + +function TPraFontConfiguration.GetFontDown: TFont; +begin + result := FFontDown; +end; + +function TPraFontConfiguration.GetFontFocused: TFont; +begin + result := FFontFocused; +end; + +class function TPraFontConfiguration.New: iPraFontConfigurationCommon; +begin + result := self.Create; +end; + +function TPraPenConfiguration.GetPenDisabledStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenDownStyle: TPenStyle; +begin + result := psSolid; +end; + +function TPraPenConfiguration.GetPenDownWidth: Smallint; +begin + result := 3; +end; + +function TPraPenConfiguration.GetPenFocusedStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenStyle: TPenStyle; +begin + result := psClear; +end; + +class function TPraPenConfiguration.New: iPraPenConfigurationCommon; +begin + result := self.Create; +end; + +constructor TPraButtonStyleTemplateInfo.Create; +begin + FPenConfigurationCommon := TPraPenConfiguration.New; + FFontConfigurationCommon := TPraFontConfiguration.New; +end; + +function TPraButtonStyleTemplateInfo.GetBrushColor: TColor; +begin + result := $00B8A027; +end; + +function TPraButtonStyleTemplateInfo.GetBrushDisabledColor: TColor; +begin + result := $00E2D07A; +end; + +function TPraButtonStyleTemplateInfo.GetBrushDownColor: TColor; +begin + result := $00978420; +end; + +function TPraButtonStyleTemplateInfo.GetBrushFocusedColor: TColor; +begin + result := $00978420; +end; + +function TPraButtonStyleTemplateInfo.GetFontConfigurationCommon: iPraFontConfigurationCommon; +begin + result := FFontConfigurationCommon; +end; + +function TPraButtonStyleTemplateInfo.GetPenDownColor: TColor; +begin + result := $00DBD093; +end; + +function TPraButtonStyleTemplateInfo.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleTemplateInfo.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleTemplateInfo.New: iPraButtonStyleTemplate; +begin + result := self.Create; +end; + +function TPraButtonStyleTemplateInfo.GetPenConfigurationCommon: iPraPenConfigurationCommon; +begin + result := FPenConfigurationCommon; +end; + +end. diff --git a/source/backup/PraButtonStyleTemplateLight.pas.bak b/source/backup/PraButtonStyleTemplateLight.pas.bak new file mode 100644 index 0000000..8eec3d4 --- /dev/null +++ b/source/backup/PraButtonStyleTemplateLight.pas.bak @@ -0,0 +1,269 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleTemplateLight; + +interface + +uses + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; + +type + TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) + private + FFont: TFont; + FFontDisabled: TFont; + FFontFocused: TFont; + FFontDown: TFont; + + function GetFont: TFont; + function GetFontDown: TFont; + function GetFontFocused: TFont; + function GetFontDisabled: TFont; + public + constructor Create; + destructor Destroy; override; + + property Font: TFont read GetFont; + property FontDown: TFont read GetFontDown; + property FontFocused: TFont read GetFontFocused; + property FontDisabled: TFont read GetFontDisabled; + + class function New: iPraFontConfigurationCommon; + end; + + TPraPenConfiguration = class(TInterfacedObject, iPraPenConfigurationCommon) + function GetPenStyle: TPenStyle; + function GetPenFocusedStyle: TPenStyle; + function GetPenDisabledStyle: TPenStyle; + function GetPenDownStyle: TPenStyle; + function GetPenDownWidth: Smallint; + + public + class function New: iPraPenConfigurationCommon; + end; + + TPraButtonStyleTemplateLight = class(TInterfacedObject, iPraButtonStyleTemplate) + private + FPenConfigurationCommon: iPraPenConfigurationCommon; + FFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushColor: TColor; + function GetBrushFocusedColor: TColor; + function GetBrushDownColor: TColor; + + function GetPenDownColor: TColor; + + function GetPenConfigurationCommon: iPraPenConfigurationCommon; + function GetFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushDisabledColor: TColor; + + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + + constructor Create; + public + property BrushColor: TColor read GetBrushColor; + property BrushFocusedColor: TColor read GetBrushFocusedColor; + property BrushDownColor: TColor read GetBrushDownColor; + property PenDownColor: TColor read GetPenDownColor; + property PenConfigurationCommon: iPraPenConfigurationCommon read GetPenConfigurationCommon; + property FontConfigurationCommon: iPraFontConfigurationCommon read GetFontConfigurationCommon; + property BrushDisabledColor: TColor read GetBrushDisabledColor; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplate; + end; + +implementation + +uses + System.SysUtils, + PraConsts; + +constructor TPraFontConfiguration.Create; +begin + FFont := TFont.Create; + Font.Color := clBlack; + Font.Name := 'Tahoma'; + Font.Style := [fsBold]; + Font.Size := 10; + + FFontDisabled := TFont.Create; + FontDisabled.Color := $00FFF0E2; + FontDisabled.Name := 'Tahoma'; + FontDisabled.Style := [fsBold]; + FontDisabled.Size := 10; + + FFontFocused := TFont.Create; + FontFocused.Color := clBlack; + FontFocused.Name := 'Tahoma'; + FontFocused.Style := [fsBold]; + FontFocused.Size := 10; + + FFontDown := TFont.Create; + FontDown.Color := clBlack; + FontDown.Name := 'Tahoma'; + FontDown.Style := [fsBold]; + FontDown.Size := 10; +end; + +destructor TPraFontConfiguration.Destroy; +begin + freeandNil(FFont); + freeandNil(FFontDisabled); + freeandNil(FFontFocused); + freeandNil(FFontDown); + + inherited Destroy; +end; + +function TPraFontConfiguration.GetFont: TFont; +begin + result := FFont; +end; + +function TPraFontConfiguration.GetFontDisabled: TFont; +begin + result := FFontDisabled; +end; + +function TPraFontConfiguration.GetFontDown: TFont; +begin + result := FFontDown; +end; + +function TPraFontConfiguration.GetFontFocused: TFont; +begin + result := FFontFocused; +end; + +class function TPraFontConfiguration.New: iPraFontConfigurationCommon; +begin + result := self.Create; +end; + +function TPraPenConfiguration.GetPenDisabledStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenDownStyle: TPenStyle; +begin + result := psSolid; +end; + +function TPraPenConfiguration.GetPenDownWidth: Smallint; +begin + result := 3; +end; + +function TPraPenConfiguration.GetPenFocusedStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenStyle: TPenStyle; +begin + result := psClear; +end; + +class function TPraPenConfiguration.New: iPraPenConfigurationCommon; +begin + result := self.Create; +end; + +constructor TPraButtonStyleTemplateLight.Create; +begin + FPenConfigurationCommon := TPraPenConfiguration.New; + FFontConfigurationCommon := TPraFontConfiguration.New; +end; + +function TPraButtonStyleTemplateLight.GetBrushColor: TColor; +begin + result := $00FAF9F8; +end; + +function TPraButtonStyleTemplateLight.GetBrushDisabledColor: TColor; +begin + result := $00CEC5BB; +end; + +function TPraButtonStyleTemplateLight.GetBrushDownColor: TColor; +begin + result := $00E5E0DA; +end; + +function TPraButtonStyleTemplateLight.GetBrushFocusedColor: TColor; +begin + result := $00EAE6E2; +end; + +function TPraButtonStyleTemplateLight.GetFontConfigurationCommon: iPraFontConfigurationCommon; +begin + result := FFontConfigurationCommon; +end; + +function TPraButtonStyleTemplateLight.GetPenDownColor: TColor; +begin + result := $00E5E0DA; +end; + +function TPraButtonStyleTemplateLight.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleTemplateLight.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleTemplateLight.New: iPraButtonStyleTemplate; +begin + result := self.Create; +end; + +function TPraButtonStyleTemplateLight.GetPenConfigurationCommon: iPraPenConfigurationCommon; +begin + result := FPenConfigurationCommon; +end; + +end. diff --git a/source/backup/PraButtonStyleTemplatePrimary.pas.bak b/source/backup/PraButtonStyleTemplatePrimary.pas.bak new file mode 100644 index 0000000..f860c31 --- /dev/null +++ b/source/backup/PraButtonStyleTemplatePrimary.pas.bak @@ -0,0 +1,269 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleTemplatePrimary; + +interface + +uses + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; + +type + TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) + private + FFont: TFont; + FFontDisabled: TFont; + FFontFocused: TFont; + FFontDown: TFont; + + function GetFont: TFont; + function GetFontDown: TFont; + function GetFontFocused: TFont; + function GetFontDisabled: TFont; + public + constructor Create; + destructor Destroy; override; + + property Font: TFont read GetFont; + property FontDown: TFont read GetFontDown; + property FontFocused: TFont read GetFontFocused; + property FontDisabled: TFont read GetFontDisabled; + + class function New: iPraFontConfigurationCommon; + end; + + TPraPenConfiguration = class(TInterfacedObject, iPraPenConfigurationCommon) + function GetPenStyle: TPenStyle; + function GetPenFocusedStyle: TPenStyle; + function GetPenDisabledStyle: TPenStyle; + function GetPenDownStyle: TPenStyle; + function GetPenDownWidth: Smallint; + + public + class function New: iPraPenConfigurationCommon; + end; + + TPraButtonStyleTemplatePrimary = class(TInterfacedObject, iPraButtonStyleTemplate) + private + FPenConfigurationCommon: iPraPenConfigurationCommon; + FFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushColor: TColor; + function GetBrushFocusedColor: TColor; + function GetBrushDownColor: TColor; + + function GetPenDownColor: TColor; + + function GetPenConfigurationCommon: iPraPenConfigurationCommon; + function GetFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushDisabledColor: TColor; + + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + + constructor Create; + public + property BrushColor: TColor read GetBrushColor; + property BrushFocusedColor: TColor read GetBrushFocusedColor; + property BrushDownColor: TColor read GetBrushDownColor; + property PenDownColor: TColor read GetPenDownColor; + property PenConfigurationCommon: iPraPenConfigurationCommon read GetPenConfigurationCommon; + property FontConfigurationCommon: iPraFontConfigurationCommon read GetFontConfigurationCommon; + property BrushDisabledColor: TColor read GetBrushDisabledColor; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplate; + end; + +implementation + +uses + System.SysUtils, + PraConsts; + +constructor TPraFontConfiguration.Create; +begin + FFont := TFont.Create; + Font.Color := clWhite; + Font.Name := 'Tahoma'; + Font.Style := [fsBold]; + Font.Size := 10; + + FFontDisabled := TFont.Create; + FontDisabled.Color := $00FFF0E2; + FontDisabled.Name := 'Tahoma'; + FontDisabled.Style := [fsBold]; + FontDisabled.Size := 10; + + FFontFocused := TFont.Create; + FontFocused.Color := clWhite; + FontFocused.Name := 'Tahoma'; + FontFocused.Style := [fsBold]; + FontFocused.Size := 10; + + FFontDown := TFont.Create; + FontDown.Color := clWhite; + FontDown.Name := 'Tahoma'; + FontDown.Style := [fsBold]; + FontDown.Size := 10; +end; + +destructor TPraFontConfiguration.Destroy; +begin + freeandNil(FFont); + freeandNil(FFontDisabled); + freeandNil(FFontFocused); + freeandNil(FFontDown); + + inherited Destroy; +end; + +function TPraFontConfiguration.GetFont: TFont; +begin + result := FFont; +end; + +function TPraFontConfiguration.GetFontDisabled: TFont; +begin + result := FFontDisabled; +end; + +function TPraFontConfiguration.GetFontDown: TFont; +begin + result := FFontDown; +end; + +function TPraFontConfiguration.GetFontFocused: TFont; +begin + result := FFontFocused; +end; + +class function TPraFontConfiguration.New: iPraFontConfigurationCommon; +begin + result := self.Create; +end; + +function TPraPenConfiguration.GetPenDisabledStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenDownStyle: TPenStyle; +begin + result := psSolid; +end; + +function TPraPenConfiguration.GetPenDownWidth: Smallint; +begin + result := 3; +end; + +function TPraPenConfiguration.GetPenFocusedStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenStyle: TPenStyle; +begin + result := psClear; +end; + +class function TPraPenConfiguration.New: iPraPenConfigurationCommon; +begin + result := self.Create; +end; + +constructor TPraButtonStyleTemplatePrimary.Create; +begin + FPenConfigurationCommon := TPraPenConfiguration.New; + FFontConfigurationCommon := TPraFontConfiguration.New; +end; + +function TPraButtonStyleTemplatePrimary.GetBrushColor: TColor; +begin + result := $00FE6F2C; +end; + +function TPraButtonStyleTemplatePrimary.GetBrushDisabledColor: TColor; +begin + result := $00FFA95A; +end; + +function TPraButtonStyleTemplatePrimary.GetBrushDownColor: TColor; +begin + result := $00D85F24; +end; + +function TPraButtonStyleTemplatePrimary.GetBrushFocusedColor: TColor; +begin + result := $00D85F24; +end; + +function TPraButtonStyleTemplatePrimary.GetFontConfigurationCommon: iPraFontConfigurationCommon; +begin + result := FFontConfigurationCommon; +end; + +function TPraButtonStyleTemplatePrimary.GetPenDownColor: TColor; +begin + result := $00FFB795; +end; + +function TPraButtonStyleTemplatePrimary.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleTemplatePrimary.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleTemplatePrimary.New: iPraButtonStyleTemplate; +begin + result := self.Create; +end; + +function TPraButtonStyleTemplatePrimary.GetPenConfigurationCommon: iPraPenConfigurationCommon; +begin + result := FPenConfigurationCommon; +end; + +end. diff --git a/source/backup/PraButtonStyleTemplateSecondary.pas.bak b/source/backup/PraButtonStyleTemplateSecondary.pas.bak new file mode 100644 index 0000000..f26c0bb --- /dev/null +++ b/source/backup/PraButtonStyleTemplateSecondary.pas.bak @@ -0,0 +1,269 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleTemplateSecondary; + +interface + +uses + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; + +type + TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) + private + FFont: TFont; + FFontDisabled: TFont; + FFontFocused: TFont; + FFontDown: TFont; + + function GetFont: TFont; + function GetFontDown: TFont; + function GetFontFocused: TFont; + function GetFontDisabled: TFont; + public + constructor Create; + destructor Destroy; override; + + property Font: TFont read GetFont; + property FontDown: TFont read GetFontDown; + property FontFocused: TFont read GetFontFocused; + property FontDisabled: TFont read GetFontDisabled; + + class function New: iPraFontConfigurationCommon; + end; + + TPraPenConfiguration = class(TInterfacedObject, iPraPenConfigurationCommon) + function GetPenStyle: TPenStyle; + function GetPenFocusedStyle: TPenStyle; + function GetPenDisabledStyle: TPenStyle; + function GetPenDownStyle: TPenStyle; + function GetPenDownWidth: Smallint; + + public + class function New: iPraPenConfigurationCommon; + end; + + TPraButtonStyleTemplateSecondary = class(TInterfacedObject, iPraButtonStyleTemplate) + private + FPenConfigurationCommon: iPraPenConfigurationCommon; + FFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushColor: TColor; + function GetBrushFocusedColor: TColor; + function GetBrushDownColor: TColor; + + function GetPenDownColor: TColor; + + function GetPenConfigurationCommon: iPraPenConfigurationCommon; + function GetFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushDisabledColor: TColor; + + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + + constructor Create; + public + property BrushColor: TColor read GetBrushColor; + property BrushFocusedColor: TColor read GetBrushFocusedColor; + property BrushDownColor: TColor read GetBrushDownColor; + property PenDownColor: TColor read GetPenDownColor; + property PenConfigurationCommon: iPraPenConfigurationCommon read GetPenConfigurationCommon; + property FontConfigurationCommon: iPraFontConfigurationCommon read GetFontConfigurationCommon; + property BrushDisabledColor: TColor read GetBrushDisabledColor; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplate; + end; + +implementation + +uses + System.SysUtils, + PraConsts; + +constructor TPraFontConfiguration.Create; +begin + FFont := TFont.Create; + Font.Color := clWhite; + Font.Name := 'Tahoma'; + Font.Style := [fsBold]; + Font.Size := 10; + + FFontDisabled := TFont.Create; + FontDisabled.Color := $00FFF0E2; + FontDisabled.Name := 'Tahoma'; + FontDisabled.Style := [fsBold]; + FontDisabled.Size := 10; + + FFontFocused := TFont.Create; + FontFocused.Color := clWhite; + FontFocused.Name := 'Tahoma'; + FontFocused.Style := [fsBold]; + FontFocused.Size := 10; + + FFontDown := TFont.Create; + FontDown.Color := clWhite; + FontDown.Name := 'Tahoma'; + FontDown.Style := [fsBold]; + FontDown.Size := 10; +end; + +destructor TPraFontConfiguration.Destroy; +begin + freeandNil(FFont); + freeandNil(FFontDisabled); + freeandNil(FFontFocused); + freeandNil(FFontDown); + + inherited Destroy; +end; + +function TPraFontConfiguration.GetFont: TFont; +begin + result := FFont; +end; + +function TPraFontConfiguration.GetFontDisabled: TFont; +begin + result := FFontDisabled; +end; + +function TPraFontConfiguration.GetFontDown: TFont; +begin + result := FFontDown; +end; + +function TPraFontConfiguration.GetFontFocused: TFont; +begin + result := FFontFocused; +end; + +class function TPraFontConfiguration.New: iPraFontConfigurationCommon; +begin + result := self.Create; +end; + +function TPraPenConfiguration.GetPenDisabledStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenDownStyle: TPenStyle; +begin + result := psSolid; +end; + +function TPraPenConfiguration.GetPenDownWidth: Smallint; +begin + result := 3; +end; + +function TPraPenConfiguration.GetPenFocusedStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenStyle: TPenStyle; +begin + result := psClear; +end; + +class function TPraPenConfiguration.New: iPraPenConfigurationCommon; +begin + result := self.Create; +end; + +constructor TPraButtonStyleTemplateSecondary.Create; +begin + FPenConfigurationCommon := TPraPenConfiguration.New; + FFontConfigurationCommon := TPraFontConfiguration.New; +end; + +function TPraButtonStyleTemplateSecondary.GetBrushColor: TColor; +begin + result := $007D756C; +end; + +function TPraButtonStyleTemplateSecondary.GetBrushDisabledColor: TColor; +begin + result := $00AEA8A2; +end; + +function TPraButtonStyleTemplateSecondary.GetBrushDownColor: TColor; +begin + result := $0068625A; +end; + +function TPraButtonStyleTemplateSecondary.GetBrushFocusedColor: TColor; +begin + result := $0068625A; +end; + +function TPraButtonStyleTemplateSecondary.GetFontConfigurationCommon: iPraFontConfigurationCommon; +begin + result := FFontConfigurationCommon; +end; + +function TPraButtonStyleTemplateSecondary.GetPenDownColor: TColor; +begin + result := $00BEB9B5; +end; + +function TPraButtonStyleTemplateSecondary.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleTemplateSecondary.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleTemplateSecondary.New: iPraButtonStyleTemplate; +begin + result := self.Create; +end; + +function TPraButtonStyleTemplateSecondary.GetPenConfigurationCommon: iPraPenConfigurationCommon; +begin + result := FPenConfigurationCommon; +end; + +end. diff --git a/source/backup/PraButtonStyleTemplateSuccess.pas.bak b/source/backup/PraButtonStyleTemplateSuccess.pas.bak new file mode 100644 index 0000000..56cd640 --- /dev/null +++ b/source/backup/PraButtonStyleTemplateSuccess.pas.bak @@ -0,0 +1,268 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleTemplateSuccess; + +interface + +uses + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; +type + TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) + private + FFont: TFont; + FFontDisabled: TFont; + FFontFocused: TFont; + FFontDown: TFont; + + function GetFont: TFont; + function GetFontDown: TFont; + function GetFontFocused: TFont; + function GetFontDisabled: TFont; + public + constructor Create; + destructor Destroy; override; + + property Font: TFont read GetFont; + property FontDown: TFont read GetFontDown; + property FontFocused: TFont read GetFontFocused; + property FontDisabled: TFont read GetFontDisabled; + + class function New: iPraFontConfigurationCommon; + end; + + TPraPenConfiguration = class(TInterfacedObject, iPraPenConfigurationCommon) + function GetPenStyle: TPenStyle; + function GetPenFocusedStyle: TPenStyle; + function GetPenDisabledStyle: TPenStyle; + function GetPenDownStyle: TPenStyle; + function GetPenDownWidth: Smallint; + + public + class function New: iPraPenConfigurationCommon; + end; + + TPraButtonStyleTemplateSuccess = class(TInterfacedObject, iPraButtonStyleTemplate) + private + FPenConfigurationCommon: iPraPenConfigurationCommon; + FFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushColor: TColor; + function GetBrushFocusedColor: TColor; + function GetBrushDownColor: TColor; + + function GetPenDownColor: TColor; + + function GetPenConfigurationCommon: iPraPenConfigurationCommon; + function GetFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushDisabledColor: TColor; + + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + + constructor Create; + public + property BrushColor: TColor read GetBrushColor; + property BrushFocusedColor: TColor read GetBrushFocusedColor; + property BrushDownColor: TColor read GetBrushDownColor; + property PenDownColor: TColor read GetPenDownColor; + property PenConfigurationCommon: iPraPenConfigurationCommon read GetPenConfigurationCommon; + property FontConfigurationCommon: iPraFontConfigurationCommon read GetFontConfigurationCommon; + property BrushDisabledColor: TColor read GetBrushDisabledColor; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplate; + end; + +implementation + +uses + System.SysUtils, + PraConsts; + +constructor TPraFontConfiguration.Create; +begin + FFont := TFont.Create; + Font.Color := clWhite; + Font.Name := 'Tahoma'; + Font.Style := [fsBold]; + Font.Size := 10; + + FFontDisabled := TFont.Create; + FontDisabled.Color := $00FFF0E2; + FontDisabled.Name := 'Tahoma'; + FontDisabled.Style := [fsBold]; + FontDisabled.Size := 10; + + FFontFocused := TFont.Create; + FontFocused.Color := clWhite; + FontFocused.Name := 'Tahoma'; + FontFocused.Style := [fsBold]; + FontFocused.Size := 10; + + FFontDown := TFont.Create; + FontDown.Color := clWhite; + FontDown.Name := 'Tahoma'; + FontDown.Style := [fsBold]; + FontDown.Size := 10; +end; + +destructor TPraFontConfiguration.Destroy; +begin + freeandNil(FFont); + freeandNil(FFontDisabled); + freeandNil(FFontFocused); + freeandNil(FFontDown); + + inherited Destroy; +end; + +function TPraFontConfiguration.GetFont: TFont; +begin + result := FFont; +end; + +function TPraFontConfiguration.GetFontDisabled: TFont; +begin + result := FFontDisabled; +end; + +function TPraFontConfiguration.GetFontDown: TFont; +begin + result := FFontDown; +end; + +function TPraFontConfiguration.GetFontFocused: TFont; +begin + result := FFontFocused; +end; + +class function TPraFontConfiguration.New: iPraFontConfigurationCommon; +begin + result := self.Create; +end; + +function TPraPenConfiguration.GetPenDisabledStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenDownStyle: TPenStyle; +begin + result := psSolid; +end; + +function TPraPenConfiguration.GetPenDownWidth: Smallint; +begin + result := 3; +end; + +function TPraPenConfiguration.GetPenFocusedStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenStyle: TPenStyle; +begin + result := psClear; +end; + +class function TPraPenConfiguration.New: iPraPenConfigurationCommon; +begin + result := self.Create; +end; + +constructor TPraButtonStyleTemplateSuccess.Create; +begin + FPenConfigurationCommon := TPraPenConfiguration.New; + FFontConfigurationCommon := TPraFontConfiguration.New; +end; + +function TPraButtonStyleTemplateSuccess.GetBrushColor: TColor; +begin + result := $0045AA29; +end; + +function TPraButtonStyleTemplateSuccess.GetBrushDisabledColor: TColor; +begin + result := $00FFF0E2; +end; + +function TPraButtonStyleTemplateSuccess.GetBrushDownColor: TColor; +begin + result := $00388A22; +end; + +function TPraButtonStyleTemplateSuccess.GetBrushFocusedColor: TColor; +begin + result := $00388A22; +end; + +function TPraButtonStyleTemplateSuccess.GetFontConfigurationCommon: iPraFontConfigurationCommon; +begin + result := FFontConfigurationCommon; +end; + +function TPraButtonStyleTemplateSuccess.GetPenDownColor: TColor; +begin + result := $00A2D494; +end; + +function TPraButtonStyleTemplateSuccess.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleTemplateSuccess.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleTemplateSuccess.New: iPraButtonStyleTemplate; +begin + result := self.Create; +end; + +function TPraButtonStyleTemplateSuccess.GetPenConfigurationCommon: iPraPenConfigurationCommon; +begin + result := FPenConfigurationCommon; +end; + +end. diff --git a/source/backup/PraButtonStyleTemplateWarning.pas.bak b/source/backup/PraButtonStyleTemplateWarning.pas.bak new file mode 100644 index 0000000..a8eeaaa --- /dev/null +++ b/source/backup/PraButtonStyleTemplateWarning.pas.bak @@ -0,0 +1,269 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraButtonStyleTemplateWarning; + +interface + +uses + {$IF DEFINED(FPC)} + PraInterfaces, + Graphics + {$ELSE} // DEFINE DELPHI + PraInterfaces, + Vcl.Graphics + {$ENDIF} ; + +type + TPraFontConfiguration = class(TInterfacedObject, iPraFontConfigurationCommon) + private + FFont: TFont; + FFontDisabled: TFont; + FFontFocused: TFont; + FFontDown: TFont; + + function GetFont: TFont; + function GetFontDown: TFont; + function GetFontFocused: TFont; + function GetFontDisabled: TFont; + public + constructor Create; + destructor Destroy; override; + + property Font: TFont read GetFont; + property FontDown: TFont read GetFontDown; + property FontFocused: TFont read GetFontFocused; + property FontDisabled: TFont read GetFontDisabled; + + class function New: iPraFontConfigurationCommon; + end; + + TPraPenConfiguration = class(TInterfacedObject, iPraPenConfigurationCommon) + function GetPenStyle: TPenStyle; + function GetPenFocusedStyle: TPenStyle; + function GetPenDisabledStyle: TPenStyle; + function GetPenDownStyle: TPenStyle; + function GetPenDownWidth: Smallint; + + public + class function New: iPraPenConfigurationCommon; + end; + + TPraButtonStyleTemplateWarning = class(TInterfacedObject, iPraButtonStyleTemplate) + private + FPenConfigurationCommon: iPraPenConfigurationCommon; + FFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushColor: TColor; + function GetBrushFocusedColor: TColor; + function GetBrushDownColor: TColor; + + function GetPenDownColor: TColor; + + function GetPenConfigurationCommon: iPraPenConfigurationCommon; + function GetFontConfigurationCommon: iPraFontConfigurationCommon; + + function GetBrushDisabledColor: TColor; + + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + + constructor Create; + public + property BrushColor: TColor read GetBrushColor; + property BrushFocusedColor: TColor read GetBrushFocusedColor; + property BrushDownColor: TColor read GetBrushDownColor; + property PenDownColor: TColor read GetPenDownColor; + property PenConfigurationCommon: iPraPenConfigurationCommon read GetPenConfigurationCommon; + property FontConfigurationCommon: iPraFontConfigurationCommon read GetFontConfigurationCommon; + property BrushDisabledColor: TColor read GetBrushDisabledColor; + property SizeWidth: Smallint read GetSizeWidth; + property SizeHeight: Smallint read GetSizeHeight; + + class function New: iPraButtonStyleTemplate; + end; + +implementation + +uses + System.SysUtils, + PraConsts; + +constructor TPraFontConfiguration.Create; +begin + FFont := TFont.Create; + Font.Color := clWhite; + Font.Name := 'Tahoma'; + Font.Style := [fsBold]; + Font.Size := 10; + + FFontDisabled := TFont.Create; + FontDisabled.Color := $00949494; + FontDisabled.Name := 'Tahoma'; + FontDisabled.Style := [fsBold]; + FontDisabled.Size := 10; + + FFontFocused := TFont.Create; + FontFocused.Color := clWhite; + FontFocused.Name := 'Tahoma'; + FontFocused.Style := [fsBold]; + FontFocused.Size := 10; + + FFontDown := TFont.Create; + FontDown.Color := clWhite; + FontDown.Name := 'Tahoma'; + FontDown.Style := [fsBold]; + FontDown.Size := 10; +end; + +destructor TPraFontConfiguration.Destroy; +begin + freeandNil(FFont); + freeandNil(FFontDisabled); + freeandNil(FFontFocused); + freeandNil(FFontDown); + + inherited Destroy; +end; + +function TPraFontConfiguration.GetFont: TFont; +begin + result := FFont; +end; + +function TPraFontConfiguration.GetFontDisabled: TFont; +begin + result := FFontDisabled; +end; + +function TPraFontConfiguration.GetFontDown: TFont; +begin + result := FFontDown; +end; + +function TPraFontConfiguration.GetFontFocused: TFont; +begin + result := FFontFocused; +end; + +class function TPraFontConfiguration.New: iPraFontConfigurationCommon; +begin + result := self.Create; +end; + +function TPraPenConfiguration.GetPenDisabledStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenDownStyle: TPenStyle; +begin + result := psSolid; +end; + +function TPraPenConfiguration.GetPenDownWidth: Smallint; +begin + result := 3; +end; + +function TPraPenConfiguration.GetPenFocusedStyle: TPenStyle; +begin + result := psClear; +end; + +function TPraPenConfiguration.GetPenStyle: TPenStyle; +begin + result := psClear; +end; + +class function TPraPenConfiguration.New: iPraPenConfigurationCommon; +begin + result := self.Create; +end; + +constructor TPraButtonStyleTemplateWarning.Create; +begin + FPenConfigurationCommon := TPraPenConfiguration.New; + FFontConfigurationCommon := TPraFontConfiguration.New; +end; + +function TPraButtonStyleTemplateWarning.GetBrushColor: TColor; +begin + result := $0016C5FC; +end; + +function TPraButtonStyleTemplateWarning.GetBrushDisabledColor: TColor; +begin + result := $0085E0FE; +end; + +function TPraButtonStyleTemplateWarning.GetBrushDownColor: TColor; +begin + result := $000FACDE; +end; + +function TPraButtonStyleTemplateWarning.GetBrushFocusedColor: TColor; +begin + result := $000FACDE; +end; + +function TPraButtonStyleTemplateWarning.GetFontConfigurationCommon: iPraFontConfigurationCommon; +begin + result := FFontConfigurationCommon; +end; + +function TPraButtonStyleTemplateWarning.GetPenDownColor: TColor; +begin + result := $008AE2FE; +end; + +function TPraButtonStyleTemplateWarning.GetSizeHeight: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_HEIGHT; +end; + +function TPraButtonStyleTemplateWarning.GetSizeWidth: Smallint; +begin + result := BUTTON_STYLE_TEMPLATE_SIZE_WIDTH; +end; + +class function TPraButtonStyleTemplateWarning.New: iPraButtonStyleTemplate; +begin + result := self.Create; +end; + +function TPraButtonStyleTemplateWarning.GetPenConfigurationCommon: iPraPenConfigurationCommon; +begin + result := FPenConfigurationCommon; +end; + +end. diff --git a/source/backup/PraInterfaces.pas.bak b/source/backup/PraInterfaces.pas.bak new file mode 100644 index 0000000..57810d9 --- /dev/null +++ b/source/backup/PraInterfaces.pas.bak @@ -0,0 +1,96 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraInterfaces; + +interface + +uses + {$IF DEFINED(FPC)} + Graphics, + Classes, + SysUtils, + RegExpr, + Generics.Collections, + {$ELSE} //DEFINE DELPHI + Vcl.Graphics + {$ENDIF} ; + + +type + iPraPenConfigurationCommon = interface + ['{445BF2CB-24A2-47FE-98CD-EB06D9844CEC}'] + + function GetPenStyle: TPenStyle; + function GetPenFocusedStyle: TPenStyle; + function GetPenDisabledStyle: TPenStyle; + function GetPenDownStyle: TPenStyle; + function GetPenDownWidth: Smallint; + end; + + iPraFontConfigurationCommon = interface + ['{BC383558-1635-48C5-80FF-F12C16D3A22B}'] + + function GetFont: TFont; + function GetFontDown: TFont; + function GetFontFocused: TFont; + function GetFontDisabled: TFont; + end; + + iPraButtonStyleTemplate = interface + ['{031E5FF4-2134-4E99-B3E1-7108533DC890}'] + + function GetBrushColor: TColor; + function GetBrushFocusedColor: TColor; + function GetBrushDownColor: TColor; + function GetPenDownColor: TColor; + function GetPenConfigurationCommon: iPraPenConfigurationCommon; + function GetFontConfigurationCommon: iPraFontConfigurationCommon; + function GetBrushDisabledColor: TColor; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + end; + + iPraButtonStyleTemplateType = interface + ['{97B300BD-3362-49C1-AE07-CC3A37C4987A}'] + function GetPicture: TPicture; + function GetPictureFocused: TPicture; + function GetPictureStyleOutline: TPicture; + function GetPictureFocusedStyleOutline: TPicture; + function GetPictureDisabled: TPicture; + function GetSizeWidth: Smallint; + function GetSizeHeight: Smallint; + end; + +implementation + +end. diff --git a/source/backup/newpackage.lpk.bak b/source/backup/newpackage.lpk.bak new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/source/backup/newpackage.lpk.bak @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/commom/PraRegister.pas b/source/commom/PraRegister.pas index fea85d7..45d60f5 100644 --- a/source/commom/PraRegister.pas +++ b/source/commom/PraRegister.pas @@ -35,6 +35,15 @@ interface uses + +{$IF DEFINED(FPC)} + ShellApi, + // ToolsAPI, + // DesignIntf, + // DesignEditors, + //Graphics, + Classes +{$ELSE} // DEFINE DELPHI ShellApi, ToolsAPI, DesignIntf, @@ -42,6 +51,8 @@ interface Vcl.Graphics, System.Classes; +{$ENDIF} + type TPraComponentProperty = class(TStringProperty) public diff --git a/source/commom/PraUtils.pas b/source/commom/PraUtils.pas index 1de3224..d4c3267 100644 --- a/source/commom/PraUtils.pas +++ b/source/commom/PraUtils.pas @@ -35,18 +35,35 @@ interface uses - Vcl.Imaging.pngimage; -function GetPictureOfResource(const AValue: String): TPngImage; + {$IF DEFINED(FPC)} + Graphics, + Classes, + SysUtils, + RegExpr, + Generics.Collections + + {$ELSE} // DEFINE DELPHI + Vcl.Imaging.pngimage + {$ENDIF} ; + + + +function GetPictureOfResource(const AValue: String): {$IF DEFINED(FPC)} TPortableNetworkGraphic {$ELSE} TPngImage {$ENDIF} ; implementation -function GetPictureOfResource(const AValue: String): TPngImage; +function GetPictureOfResource(const AValue: String): {$IF DEFINED(FPC)} TPortableNetworkGraphic {$ELSE} TPngImage {$ENDIF} ; var - lPNG: TPngImage; + lPNG: {$IF DEFINED(FPC)} TPortableNetworkGraphic {$ELSE} TPngImage {$ENDIF} ; begin - lPNG := TPngImage.Create; - lPNG.LoadFromResourceName(SysInit.HInstance, AValue); + lPNG := {$IF DEFINED(FPC)} TPortableNetworkGraphic.Create {$ELSE} TPngImage.Create {$ENDIF} ; + {$IF DEFINED(FPC)} + // lPNG.LoadFromResourceName(HInstance, avalue) + {$ELSE} + lPNG.LoadFromResourceName(SysInit.HInstance, AValue); + {$ENDIF} ; + result := lPNG; end; diff --git a/source/commom/backup/PraRegister.pas.bak b/source/commom/backup/PraRegister.pas.bak new file mode 100644 index 0000000..e2a268e --- /dev/null +++ b/source/commom/backup/PraRegister.pas.bak @@ -0,0 +1,121 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraRegister; + +interface + +uses + +{$IF DEFINED(FPC)} + ShellApi, + // ToolsAPI, + // DesignIntf, + // DesignEditors, + //Graphics, + Classes +{$ELSE} // DEFINE DELPHI + ShellApi, + ToolsAPI, + DesignIntf, + DesignEditors, + Vcl.Graphics, + System.Classes +{$ENDIF} ; + +{$IF DEFINED(FPC)} +{$ELSE} +type + TPraComponentProperty = class(TStringProperty) + public + function GetValue: string; override; + function GetAttributes: TPropertyAttributes; override; + procedure Edit; override; + end; +{$ENDIF} + + +procedure Register; + +implementation + +uses + PraConsts, + PraButtonStyle, + PraAbout; + +procedure Register; +begin + RegisterComponents('Pra Components', [TPraButtonStyle]); + RegisterPropertyEditor(TypeInfo(String), TPraButtonStyle, 'AboutInfo', TPraComponentProperty); +end; + +procedure AddSplash; +Var + bmp: TBitmap; +Begin + bmp := TBitmap.Create; + try + bmp.LoadFromResourceName(HInstance, 'TPraLogo'); + SplashScreenServices.AddPluginBitmap(PraTitleDialog, bmp.Handle, false, PraAboutlicenseStatus + ' ' + 'v' + Version, ''); + finally + bmp.Free; + end; +End; + +procedure TPraComponentProperty.Edit; +begin + with TFPraViewAbout.Create(nil) do + begin + try + ShowModal; + finally + Free; + end; + end; +end; + +function TPraComponentProperty.GetAttributes: TPropertyAttributes; +begin + Result := [paReadOnly, paDialog]; +end; + +function TPraComponentProperty.GetValue: string; +begin + Result := Version; +end; + +initialization + +AddSplash; + +end. diff --git a/source/commom/backup/PraUtils.pas.bak b/source/commom/backup/PraUtils.pas.bak new file mode 100644 index 0000000..39eafd5 --- /dev/null +++ b/source/commom/backup/PraUtils.pas.bak @@ -0,0 +1,70 @@ +// *************************************************************************** } +// +// Delphi PraButtonStyle +// +// Copyright (c) 2020-2020 Paulo Roberto Alves +// +// https://github.com/pauloalvis/Delphi-PraButtonStyle +// +// *************************************************************************** +// +// MIT License +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// *************************************************************************** + +unit PraUtils; + +interface + +uses + + {$IF DEFINED(FPC)} + Graphics, + Classes, + SysUtils, + RegExpr, + Generics.Collections + + {$ELSE} // DEFINE DELPHI + Vcl.Imaging.pngimage + {$ENDIF} ; + + + +function GetPictureOfResource(const AValue: String): {$IF DEFINED(FPC)} TPortableNetworkGraphic {$ELSE} TPngImage; {$ENDIF} ; + +implementation + +function GetPictureOfResource(const AValue: String): {$IF DEFINED(FPC)} TPortableNetworkGraphic {$ELSE} TPngImage; {$ENDIF} ; +var + lPNG: {$IF DEFINED(FPC)} TPortableNetworkGraphic {$ELSE} TPngImage; {$ENDIF} ; +begin + lPNG := {$IF DEFINED(FPC)} TPortableNetworkGraphic.Create; {$ELSE} TPngImage.Create; {$ENDIF} ; + {$IF DEFINED(FPC)} + lPNG.LoadFromResourceName(sysInit.HInstance, avalue) + {$ELSE} + lPNG.LoadFromResourceName(SysInit.HInstance, AValue); + {$ENDIF} ; + + result := lPNG; +end; + +end. diff --git a/source/commom/view/PraAbout.pas b/source/commom/view/PraAbout.pas index eaaf43a..2a80d6d 100644 --- a/source/commom/view/PraAbout.pas +++ b/source/commom/view/PraAbout.pas @@ -3,13 +3,27 @@ interface uses + + +{$IF DEFINED(FPC)} + Windows, + Classes, + Controls, + Forms, + ExtCtrls, + StdCtrls, + Graphics + //TPortableNetworkGraphic +{$ELSE} // DEFINE DELPHI Winapi.Windows, System.Classes, Vcl.Controls, Vcl.Forms, Vcl.ExtCtrls, Vcl.StdCtrls, - Vcl.Imaging.pngimage; + Vcl.Imaging.pngimage +{$ENDIF} ; + type TFPraViewAbout = class(TForm) @@ -35,8 +49,14 @@ TFPraViewAbout = class(TForm) implementation uses + +{$IF DEFINED(FPC)} + ShellAPI, + PraConsts +{$ELSE} // DEFINE DELPHI Winapi.ShellAPI, - PraConsts; + PraConsts +{$ENDIF} ; {$R *.dfm} diff --git a/source/commom/view/backup/PraAbout.pas.bak b/source/commom/view/backup/PraAbout.pas.bak new file mode 100644 index 0000000..80c0599 --- /dev/null +++ b/source/commom/view/backup/PraAbout.pas.bak @@ -0,0 +1,67 @@ +unit PraAbout; + +interface + +uses + + +{$IF DEFINED(FPC)} + Windows, + Classes, + Controls, + Forms, + ExtCtrls, + StdCtrls, + Graphics + //TPortableNetworkGraphic +{$ELSE} // DEFINE DELPHI + Winapi.Windows, + System.Classes, + Vcl.Controls, + Vcl.Forms, + Vcl.ExtCtrls, + Vcl.StdCtrls, + Vcl.Imaging.pngimage +{$ENDIF} ; + + +type + TFPraViewAbout = class(TForm) + Bevel1: TBevel; + lbVersion: TLabel; + Label3: TLabel; + Label5: TLabel; + Shape1: TShape; + Label1: TLabel; + Image1: TImage; + Label4: TLabel; + Label8: TLabel; + Label9: TLabel; + Label10: TLabel; + Button1: TButton; + procedure Label5Click(Sender: TObject); + procedure FormCreate(Sender: TObject); + end; + +var + FPraViewAbout: TFPraViewAbout; + +implementation + +uses + Winapi.ShellAPI, + PraConsts; + +{$R *.dfm} + +procedure TFPraViewAbout.FormCreate(Sender: TObject); +begin + lbVersion.Caption := 'Version ' + version; +end; + +procedure TFPraViewAbout.Label5Click(Sender: TObject); +begin + ShellExecute(0, 'open', PChar('https://github.com/pauloalvis/Delphi-PraButtonStyle'), nil, nil, SW_SHOWNORMAL); +end; + +end. diff --git a/source/newpackage.lpk b/source/newpackage.lpk new file mode 100644 index 0000000..c3d3192 --- /dev/null +++ b/source/newpackage.lpk @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + From 0ec37b52c6dae9d203fcafd7e88ea8fd266e2c4f Mon Sep 17 00:00:00 2001 From: Francisco Aurino Date: Tue, 17 Jan 2023 01:04:29 -0300 Subject: [PATCH 2/4] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e77d2c5..e0d6f6e 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@