Changeset 308 for trunk/Packages/Common


Ignore:
Timestamp:
Aug 18, 2021, 11:50:13 AM (3 years ago)
Author:
chronos
Message:
  • Modified: Updated Common package to newer version.
  • Modified: About dialog is now part of Common package.
  • Modified: CoolTranslator is now part of Common package.
Location:
trunk/Packages/Common
Files:
16 added
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/Packages/Common/Common.lpk

    r192 r308  
    3737      </Other>
    3838    </CompilerOptions>
    39     <Description Value="Various libraries"/>
    40     <License Value="GNU/GPL"/>
    41     <Version Minor="7"/>
    42     <Files Count="22">
     39    <Description Value="Common package with various useful units.
     40
     41Source: https://svn.zdechov.net/PascalClassLibrary/Common/"/>
     42    <License Value="Copy left."/>
     43    <Version Minor="8"/>
     44    <Files Count="29">
    4345      <Item1>
    4446        <Filename Value="StopWatch.pas"/>
     
    6062      <Item5>
    6163        <Filename Value="UPrefixMultiplier.pas"/>
     64        <HasRegisterProc Value="True"/>
    6265        <UnitName Value="UPrefixMultiplier"/>
    6366      </Item5>
     
    138141        <UnitName Value="UStringTable"/>
    139142      </Item22>
     143      <Item23>
     144        <Filename Value="UMetaCanvas.pas"/>
     145        <UnitName Value="UMetaCanvas"/>
     146      </Item23>
     147      <Item24>
     148        <Filename Value="UGeometric.pas"/>
     149        <UnitName Value="UGeometric"/>
     150      </Item24>
     151      <Item25>
     152        <Filename Value="UTranslator.pas"/>
     153        <HasRegisterProc Value="True"/>
     154        <UnitName Value="UTranslator"/>
     155      </Item25>
     156      <Item26>
     157        <Filename Value="ULanguages.pas"/>
     158        <UnitName Value="ULanguages"/>
     159      </Item26>
     160      <Item27>
     161        <Filename Value="UFormAbout.pas"/>
     162        <UnitName Value="UFormAbout"/>
     163      </Item27>
     164      <Item28>
     165        <Filename Value="UAboutDialog.pas"/>
     166        <HasRegisterProc Value="True"/>
     167        <UnitName Value="UAboutDialog"/>
     168      </Item28>
     169      <Item29>
     170        <Filename Value="UPixelPointer.pas"/>
     171        <UnitName Value="UPixelPointer"/>
     172      </Item29>
    140173    </Files>
    141174    <i18n>
     
    144177      <EnableI18NForLFM Value="True"/>
    145178    </i18n>
    146     <RequiredPkgs Count="3">
     179    <RequiredPkgs Count="2">
    147180      <Item1>
    148181        <PackageName Value="LCL"/>
    149182      </Item1>
    150183      <Item2>
    151         <PackageName Value="TemplateGenerics"/>
    152       </Item2>
    153       <Item3>
    154184        <PackageName Value="FCL"/>
    155185        <MinVersion Major="1" Valid="True"/>
    156       </Item3>
     186      </Item2>
    157187    </RequiredPkgs>
    158188    <UsageOptions>
  • trunk/Packages/Common/Common.pas

    r192 r308  
    1212  UMemory, UResetableThread, UPool, ULastOpenedList, URegistry,
    1313  UJobProgressView, UXMLUtils, UApplicationInfo, USyncCounter, UListViewSort,
    14   UPersistentForm, UFindFile, UScaleDPI, UTheme, UStringTable,
    15   LazarusPackageIntf;
     14  UPersistentForm, UFindFile, UScaleDPI, UTheme, UStringTable, UMetaCanvas,
     15  UGeometric, UTranslator, ULanguages, UFormAbout, UAboutDialog,
     16  UPixelPointer, LazarusPackageIntf;
    1617
    1718implementation
     
    2021begin
    2122  RegisterUnit('UDebugLog', @UDebugLog.Register);
     23  RegisterUnit('UPrefixMultiplier', @UPrefixMultiplier.Register);
    2224  RegisterUnit('ULastOpenedList', @ULastOpenedList.Register);
    2325  RegisterUnit('UJobProgressView', @UJobProgressView.Register);
     
    2830  RegisterUnit('UScaleDPI', @UScaleDPI.Register);
    2931  RegisterUnit('UTheme', @UTheme.Register);
     32  RegisterUnit('UTranslator', @UTranslator.Register);
     33  RegisterUnit('UAboutDialog', @UAboutDialog.Register);
    3034end;
    3135
  • trunk/Packages/Common/Demo/ScaleDPI/ScaleDPI.lpi

    r94 r308  
    1717      <StringTable ProductVersion=""/>
    1818    </VersionInfo>
    19     <MacroValues Count="1">
    20       <Macro1 Name="LCLWidgetType" Value="customdrawn"/>
    21     </MacroValues>
    2219    <BuildModes Count="1">
    2320      <Item1 Name="Default" Default="True"/>
    24       <SharedMatrixOptions Count="1">
    25         <Item1 ID="601562014369" Modes="Default" Type="IDEMacro" MacroName="LCLWidgetType" Value="customdrawn"/>
    26       </SharedMatrixOptions>
    2721    </BuildModes>
    2822    <PublishOptions>
     
    4741        <Filename Value="ScaleDPI.lpr"/>
    4842        <IsPartOfProject Value="True"/>
     43        <UnitName Value="ScaleDPI"/>
    4944      </Unit0>
    5045      <Unit1>
     
    5247        <IsPartOfProject Value="True"/>
    5348        <ComponentName Value="Form1"/>
    54         <HasResources Value="True"/>
    5549        <ResourceBaseClass Value="Form"/>
    5650        <UnitName Value="UFormMain"/>
     
    6054        <IsPartOfProject Value="True"/>
    6155        <ComponentName Value="Form2"/>
    62         <HasResources Value="True"/>
    6356        <ResourceBaseClass Value="Form"/>
    6457        <UnitName Value="UFormTest"/>
  • trunk/Packages/Common/Demo/ScaleDPI/UFormTest.lfm

    r94 r308  
    11object Form2: TForm2
    2   Left = 1009
     2  Left = 1062
    33  Height = 754
    4   Top = 351
     4  Top = 360
    55  Width = 1043
    66  Caption = 'Form2'
     
    5050      ClientHeight = 453
    5151      ClientWidth = 690
     52      object ListView1: TListView
     53        Left = 0
     54        Height = 390
     55        Top = 0
     56        Width = 690
     57        Align = alTop
     58        Columns = <       
     59          item
     60            Caption = 'Column'
     61          end       
     62          item
     63            Caption = 'Column'
     64          end       
     65          item
     66            Caption = 'Column'
     67          end       
     68          item
     69            Caption = 'Column'
     70          end       
     71          item
     72            Caption = 'Column'
     73            Width = 473
     74          end>
     75        TabOrder = 0
     76        ViewStyle = vsReport
     77      end
    5278      object Button1: TButton
    5379        Left = 592
     
    5783        Anchors = [akRight, akBottom]
    5884        Caption = 'Ok'
    59         TabOrder = 0
     85        TabOrder = 1
    6086      end
    6187      object Button2: TButton
     
    6692        Anchors = [akRight, akBottom]
    6793        Caption = 'Cancel'
    68         TabOrder = 1
     94        TabOrder = 2
    6995      end
    7096    end
     
    44424468    TabOrder = 3
    44434469  end
     4470  object StatusBar1: TStatusBar
     4471    Left = 0
     4472    Height = 29
     4473    Top = 696
     4474    Width = 1043
     4475    Panels = <   
     4476      item
     4477        Text = 'Panel1'
     4478        Width = 150
     4479      end   
     4480      item
     4481        Text = 'Panel2'
     4482        Width = 150
     4483      end   
     4484      item
     4485        Text = 'Panel3'
     4486        Width = 250
     4487      end>
     4488    SimplePanel = False
     4489  end
     4490  object Calendar1: TCalendar
     4491    Left = 744
     4492    Height = 254
     4493    Top = 48
     4494    Width = 220
     4495    DateTime = 41977
     4496    TabOrder = 5
     4497  end
    44444498  object ImageList1: TImageList
    44454499    left = 736
     
    45534607      object MenuItem3: TMenuItem
    45544608        Caption = 'New Item3'
    4555         Bitmap.Data = {
    4556           36040000424D3604000000000000360000002800000010000000100000000100
    4557           2000000000000004000064000000640000000000000000000000986B37FF976A
    4558           36FF966935FF966734FF956633FF946532FF946531FF936430FF92622FFF9261
    4559           2EFF91602DFF90602CFF905F2BFF8F5D2AFF8E5C29FF8D5B28FF996C38FFF8F7
    4560           F6FFF8F7F5FFF7F6F5FFF6F6F4FFF6F5F3FFF5F5F3FFF5F4F2FFF4F3F1FFF4F3
    4561           F1FFF3F2F0FFF3F2EFFFF2F1EFFFF2F0EEFFF1F0EDFF8E5D29FF996D3AFFF9F8
    4562           F7FF959594FF878787FF9B9A9AFFF7F6F4FFF6F5F3FFF6F5F3FFF5F4F2FFF4F3
    4563           F1FFF4F3F1FFF3F2F0FFF3F2EFFFF2F1EFFFF2F1EEFF8F5E2AFF9A6E3BFFF9F9
    4564           F8FF7C7C7CFFC4C4C4FF878787FFF7F6F5FF7A7A7AFF787878FF747474FF7171
    4565           70FF6D6D6CFF696968FF656565FF616161FFF2F1EFFF905F2BFF9B6F3CFFFAF9
    4566           F8FFBEBEBDFF929292FFBCBCBBFFF8F7F6FFF7F7F5FFF7F6F4FFF6F5F4FFF6F5
    4567           F3FFF5F4F2FFF5F4F2FFF4F3F1FFF4F2F0FFF3F2F0FF91602DFF9C703DFFFAFA
    4568           F9FFFAF9F9FFF9F9F8FFF9F8F7FFF8F8F7FFF8F7F6FFF7F7F5FFF7F6F5FFF6F5
    4569           F4FFF6F5F3FFF5F4F3FFF5F4F2FFF4F3F1FFF4F3F0FF92612EFF9D723EFFFBFB
    4570           FAFF9F9F9EFF7F7F7FFFAEAEADFFF9F8F7FFF8F8F7FFF8F7F6FFF7F7F5FFF7F6
    4571           F5FFF6F6F4FFF6F5F3FFF5F4F3FFF5F4F2FFF4F3F1FF92622FFF9D7340FFFCFB
    4572           FBFF818181FFC4C4C4FF8F8F8FFFFAF9F8FF7B7B7AFF797979FF757574FF7271
    4573           71FF6D6D6DFF696969FF666665FF626261FFF5F4F2FF936430FF9E7441FFFCFC
    4574           FCFFB5B5B5FF848484FFBEBDBDFFFAFAF9FFFAF9F8FFF9F9F7FFF9F8F7FFF8F8
    4575           F6FFF8F7F5FFF7F6F5FFF7F6F4FFF6F5F3FFF6F5F3FF946531FF9F7542FFFDFD
    4576           FCFFFCFCFCFFFCFCFBFFFBFBFAFFFBFAFAFFFAFAF9FFFAF9F8FFF9F9F8FFF9F8
    4577           F7FFF8F8F6FFF8F7F6FFF7F6F5FFF7F6F4FFF6F5F4FF956633FFA07643FFFEFD
    4578           FDFF8C8C8CFF525252FFA4A4A4FFFBFBFAFFFBFBFAFFFAFAF9FFFAF9F8FFF9F9
    4579           F8FFF9F8F7FFF8F8F6FFF8F7F6FFF7F7F5FFF7F6F4FF966734FFA17844FFFEFE
    4580           FEFF5F5F5FFF949494FF535353FFFCFCFBFF7B7B7BFF797979FF757575FF7272
    4581           72FF6E6E6EFF6A6A69FF666666FF626262FFF7F7F5FF966935FFA17946FFFFFF
    4582           FFFF878787FF5D5D5DFFA0A0A0FFFDFCFCFFFCFCFBFFFCFBFBFFFBFBFAFFFBFA
    4583           F9FFFAFAF9FFFAF9F8FFF9F8F7FFF8F8F7FFF8F7F6FF976A36FFA27A47FFFFFF
    4584           FFFFFFFFFFFFFEFEFEFFFEFEFEFFFDFDFDFFFDFDFCFFFCFCFBFFFCFBFBFFFBFB
    4585           FAFFFBFAF9FFFAFAF9FFFAF9F8FFF9F9F7FFF9F8F7FF986B37FFA37B48FFBEA2
    4586           7FFFBEA17EFFBDA17DFFBDA07CFFBD9F7CFFBC9F7BFFBB9E7AFFBB9D7AFFBB9D
    4587           79FFBA9C78FFB99B78FFB99A77FFB89A76FFB89975FF996C39FFA37B48FFA37B
    4588           48FFA27A47FFA27946FFA17845FFA07744FFA07643FF9F7542FF9E7441FF9E73
    4589           40FF9D723FFF9C713EFF9C703DFF9B6F3CFF9A6E3BFF9A6D3AFF
    4590         }
    45914609        ImageIndex = 0
    45924610        OnClick = MenuItem3Click
     
    45944612      object MenuItem8: TMenuItem
    45954613        Caption = 'New Item8'
    4596         Bitmap.Data = {
    4597           36040000424D3604000000000000360000002800000010000000100000000100
    4598           2000000000000004000064000000640000000000000000000000FF00FF00FF00
    4599           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4600           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00634A
    4601           31FF634A31FF634A31FF634A31FF634A31FF634A31FF634A31FF634A31FF634A
    4602           31FF634A31FF634A31FF634A31FF634A31FFFF00FF00FF00FF00C6ADA5FFFFEF
    4603           E7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FFFFE7D6FFFFDE
    4604           D6FFFFDED6FFFFDED6FFFFDED6FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFEF
    4605           E7FFD69484FFE7A584FFF7A584FFF79C73FFF79C73FFE78C63FFE78463FFE784
    4606           52FFE78442FFE77B42FFE78452FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4607           F7FFC69473FFFFC6A5FFF7B594FFF7A584FFF79C73FFF79C73FFE78C63FFE784
    4608           63FFD67B52FFD67352FFE77342FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4609           F7FFC69473FFFFCEB5FFFFEFE7FFFFE7D6FFFFDED6FFFFDED6FFFFDED6FFFFD6
    4610           C6FFFFD6C6FFD67B52FFE77342FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4611           F7FFC69473FFFFCEB5FFFFC6A5FFFFC6A5FFFFB594FFF7A584FFF7A584FFF79C
    4612           73FFE78C63FFE78463FFE77342FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4613           F7FFC69473FFFFD6C6FFFFEFE7FFFFEFE7FFFFEFE7FFFFE7D6FFFFDED6FFFFDE
    4614           D6FFFFDED6FFE78C63FFE77342FFFFE7D6FF634A31FFFF00FF00C6ADA5FFFFF7
    4615           F7FFC69473FFFFD6C6FFFFD6C6FFFFCEB5FFFFC6A5FFFFC6A5FFFFB594FFF7A5
    4616           84FFF79C73FFF79C73FFE77342FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4617           FFFFC69473FFFFDED6FFFFEFE7FFFFEFE7FFFFEFE7FFFFC6A5FFFFC6A5FFFFB5
    4618           94FFFFB594FFF79C73FFE77B42FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4619           FFFFC69473FFFFDED6FFFFDED6FFFFD6C6FFFFCEB5FFFFCEB5FFFFC6A5FFFFC6
    4620           A5FFFFB594FFFFB584FFE77B42FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4621           FFFFD69C84FFD69484FFC69473FFD68C73FFD68C63FFC68463FFC67B52FFC673
    4622           42FFC66B42FFC66B42FFD67B42FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4623           FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFFFF7F7FFFFF7F7FFFFF7F7FFFFF7
    4624           F7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FF634A31FFFF00FF00FF00FF00D6B5
    4625           A5FFD6B5A5FFD6B5A5FFD6B5A5FFC6ADA5FFC6ADA5FFC6ADA5FFC6ADA5FFC6AD
    4626           A5FFC6ADA5FFC6ADA5FFC6ADA5FFC6ADA5FFFF00FF00FF00FF00FF00FF00FF00
    4627           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4628           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4629           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4630           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4631         }
    46324614        ImageIndex = 1
    46334615      end
    46344616      object MenuItem9: TMenuItem
    46354617        Caption = 'New Item9'
    4636         Bitmap.Data = {
    4637           36040000424D3604000000000000360000002800000010000000100000000100
    4638           2000000000000004000064000000640000000000000000000000FF00FF00FF00
    4639           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4640           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00634A
    4641           31FF634A31FF634A31FF634A31FF634A31FF634A31FF634A31FF634A31FF634A
    4642           31FF634A31FF634A31FF634A31FF634A31FFFF00FF00FF00FF00C6ADA5FFFFEF
    4643           E7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FFFFE7D6FFFFDE
    4644           D6FFFFDED6FFFFDED6FFFFDED6FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFEF
    4645           E7FFD69484FFE7A584FFF7A584FFF79C73FFF79C73FFE78C63FFE78463FFE784
    4646           52FFE78442FFE77B42FFE78452FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4647           F7FFC69473FFFFC6A5FFF7B594FFF7A584FFF79C73FFF79C73FFE78C63FFE784
    4648           63FFD67B52FFD67352FFE77342FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4649           F7FFC69473FFFFCEB5FFFFEFE7FFFFE7D6FFFFDED6FFFFDED6FFFFDED6FFFFD6
    4650           C6FFFFD6C6FFD67B52FFE77342FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4651           F7FFC69473FFFFCEB5FFFFC6A5FFFFC6A5FFFFB594FFF7A584FFF7A584FFF79C
    4652           73FFE78C63FFE78463FFE77342FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4653           F7FFC69473FFFFD6C6FFFFEFE7FFFFEFE7FFFFEFE7FFFFE7D6FFFFDED6FFFFDE
    4654           D6FFFFDED6FFE78C63FFE77342FFFFE7D6FF634A31FFFF00FF00C6ADA5FFFFF7
    4655           F7FFC69473FFFFD6C6FFFFD6C6FFFFCEB5FFFFC6A5FFFFC6A5FFFFB594FFF7A5
    4656           84FFF79C73FFF79C73FFE77342FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4657           FFFFC69473FFFFDED6FFFFEFE7FFFFEFE7FFFFEFE7FFFFC6A5FFFFC6A5FFFFB5
    4658           94FFFFB594FFF79C73FFE77B42FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4659           FFFFC69473FFFFDED6FFFFDED6FFFFD6C6FFFFCEB5FFFFCEB5FFFFC6A5FFFFC6
    4660           A5FFFFB594FFFFB584FFE77B42FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4661           FFFFD69C84FFD69484FFC69473FFD68C73FFD68C63FFC68463FFC67B52FFC673
    4662           42FFC66B42FFC66B42FFD67B42FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4663           FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFFFF7F7FFFFF7F7FFFFF7F7FFFFF7
    4664           F7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FF634A31FFFF00FF00FF00FF00D6B5
    4665           A5FFD6B5A5FFD6B5A5FFD6B5A5FFC6ADA5FFC6ADA5FFC6ADA5FFC6ADA5FFC6AD
    4666           A5FFC6ADA5FFC6ADA5FFC6ADA5FFC6ADA5FFFF00FF00FF00FF00FF00FF00FF00
    4667           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4668           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4669           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4670           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4671         }
    46724618        ImageIndex = 1
    46734619      end
    46744620      object MenuItem10: TMenuItem
    46754621        Caption = 'New Item10'
    4676         Bitmap.Data = {
    4677           36040000424D3604000000000000360000002800000010000000100000000100
    4678           2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
    4679           FF00FFFFFF00FFFFFF005049E726342DE374241CE1BF231BE1BF231BE1BF251D
    4680           E19F3730E464FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    4681           FF00FFFFFF002D26E2912B23E2FF3032E7FF3B48EFFF4356F4FF4152F2FF3944
    4682           EEFF2D2BE5FF2C24E2DF352EE354FFFFFF00FFFFFF00FFFFFF00FFFFFF00231B
    4683           E20E2B23E3CF2C29E5FF4153F3FF4E6AFAFF4E6AFAFF4E6AFAFF4E6AFAFF4E6A
    4684           FAFF4D69FAFF3B47EFFF2923E3FF332BE362FFFFFF00FFFFFF00FFFFFF002C24
    4685           E3912A24E5FFE2E6FEFFE6EAFEFFE5E9FEFFE5E9FEFFE5E9FEFFE5E9FEFFE5E9
    4686           FEFFE5E9FEFFE8EBFEFF4051F2FF2820E2FF3730E442FFFFFF00231BE22E2A22
    4687           E3FF3B47EFFF5C76FAFF96A7FCFFA2B1FCFFA3B2FCFF9CACFCFFA5B3FCFFA1B0
    4688           FCFF9EADFCFF778CFBFF4E6AFAFF3134E9FF2B23E2DFFFFFFF00231BE29F271F
    4689           E3FF4961F7FFCFD7FEFFFBFBFFFFE4E8FEFFDCE2FEFFFBFBFFFFD6DDFEFFECF0
    4690           FEFFFAFAFFFFCDD5FEFF4E6AFAFF3E4DF1FF261FE1FF231BE12E231BE2DF261E
    4691           E2FF4D68F9FF6981FBFFF3F4FFFF8598FCFF667EFBFFF3F4FFFF4E6AFAFFA8B5
    4692           FDFFDDE2FEFF4E6AFAFF4E6AFAFF4255F3FF231BE1FF231BE17E241CE2FF261F
    4693           E2FF231BE2FF453EE6FFEFEEFDFF6D68ECFF4841E7FFEFEFFDFF2B23E3FF9793
    4694           F1FFD6D4FAFF231BE2FF231BE1FF231BE1FF231BE1FF231BE17E241CE2FF271F
    4695           E2FF241CE2FF453FE6FFEFEEFDFF6D68ECFF4841E7FFEFEFFDFF2B23E3FF9793
    4696           F1FFD6D4FAFF231BE2FF231BE2FF231BE2FF231BE2FF231BE27E241CE2CF2720
    4697           E2FF241CE2FF3C35E5FFEFEEFDFF645FEBFF3D36E5FFEFEFFDFF231BE2FF908C
    4698           F0FFD4D2F9FF231BE2FF231BE2FF231BE2FF241CE2FF231BE27E241CE29F2921
    4699           E3FF241CE2FFEBEAFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    4700           FFFFFFFFFFFFFFFFFFFF261EE2FF231BE2FF271FE3FF231BE22E241CE22E2C24
    4701           E3FF261EE2FF241CE2FF241CE2FF241CE2FF241CE2FF241CE2FF241CE2FF241C
    4702           E2FF241CE2FF241CE2FF261EE2FF251DE2FF2B23E3DFFFFFFF00FFFFFF002C24
    4703           E3912A22E3FF332BE4FF9995F1FFF5F4FEFFFBFBFEFFF6F6FEFFF8F8FEFFFCFC
    4704           FFFFB6B3F5FF433CE6FF241CE2FF2A22E3FF3028E442FFFFFF00FFFFFF00FFFF
    4705           FF002A22E3BF2A22E3FF2820E2FF635DEAFFCECCF9FFFFFFFFFFE7E6FCFF7C77
    4706           EEFF2D26E3FF271FE2FF2A22E3FF2E27E362FFFFFF00FFFFFF00FFFFFF00FFFF
    4707           FF00FFFFFF002B23E3812C24E3FF2B23E3FF4C46E8FF8D89F0FF615BEAFF2820
    4708           E3FF2B23E3FF2D25E3DF3129E442FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    4709           FF00FFFFFF00FFFFFF00241CE21E241CE26E241CE2AF241CE2BF241CE2BF241C
    4710           E29F241CE25EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
    4711         }
    47124622        ImageIndex = 2
    47134623      end
     
    47174627      object MenuItem4: TMenuItem
    47184628        Caption = 'New Item4'
    4719         Bitmap.Data = {
    4720           36040000424D3604000000000000360000002800000010000000100000000100
    4721           2000000000000004000064000000640000000000000000000000986B37FF976A
    4722           36FF966935FF966734FF956633FF946532FF946531FF936430FF92622FFF9261
    4723           2EFF91602DFF90602CFF905F2BFF8F5D2AFF8E5C29FF8D5B28FF996C38FFF8F7
    4724           F6FFF8F7F5FFF7F6F5FFF6F6F4FFF6F5F3FFF5F5F3FFF5F4F2FFF4F3F1FFF4F3
    4725           F1FFF3F2F0FFF3F2EFFFF2F1EFFFF2F0EEFFF1F0EDFF8E5D29FF996D3AFFF9F8
    4726           F7FF959594FF878787FF9B9A9AFFF7F6F4FFF6F5F3FFF6F5F3FFF5F4F2FFF4F3
    4727           F1FFF4F3F1FFF3F2F0FFF3F2EFFFF2F1EFFFF2F1EEFF8F5E2AFF9A6E3BFFF9F9
    4728           F8FF7C7C7CFFC4C4C4FF878787FFF7F6F5FF7A7A7AFF787878FF747474FF7171
    4729           70FF6D6D6CFF696968FF656565FF616161FFF2F1EFFF905F2BFF9B6F3CFFFAF9
    4730           F8FFBEBEBDFF929292FFBCBCBBFFF8F7F6FFF7F7F5FFF7F6F4FFF6F5F4FFF6F5
    4731           F3FFF5F4F2FFF5F4F2FFF4F3F1FFF4F2F0FFF3F2F0FF91602DFF9C703DFFFAFA
    4732           F9FFFAF9F9FFF9F9F8FFF9F8F7FFF8F8F7FFF8F7F6FFF7F7F5FFF7F6F5FFF6F5
    4733           F4FFF6F5F3FFF5F4F3FFF5F4F2FFF4F3F1FFF4F3F0FF92612EFF9D723EFFFBFB
    4734           FAFF9F9F9EFF7F7F7FFFAEAEADFFF9F8F7FFF8F8F7FFF8F7F6FFF7F7F5FFF7F6
    4735           F5FFF6F6F4FFF6F5F3FFF5F4F3FFF5F4F2FFF4F3F1FF92622FFF9D7340FFFCFB
    4736           FBFF818181FFC4C4C4FF8F8F8FFFFAF9F8FF7B7B7AFF797979FF757574FF7271
    4737           71FF6D6D6DFF696969FF666665FF626261FFF5F4F2FF936430FF9E7441FFFCFC
    4738           FCFFB5B5B5FF848484FFBEBDBDFFFAFAF9FFFAF9F8FFF9F9F7FFF9F8F7FFF8F8
    4739           F6FFF8F7F5FFF7F6F5FFF7F6F4FFF6F5F3FFF6F5F3FF946531FF9F7542FFFDFD
    4740           FCFFFCFCFCFFFCFCFBFFFBFBFAFFFBFAFAFFFAFAF9FFFAF9F8FFF9F9F8FFF9F8
    4741           F7FFF8F8F6FFF8F7F6FFF7F6F5FFF7F6F4FFF6F5F4FF956633FFA07643FFFEFD
    4742           FDFF8C8C8CFF525252FFA4A4A4FFFBFBFAFFFBFBFAFFFAFAF9FFFAF9F8FFF9F9
    4743           F8FFF9F8F7FFF8F8F6FFF8F7F6FFF7F7F5FFF7F6F4FF966734FFA17844FFFEFE
    4744           FEFF5F5F5FFF949494FF535353FFFCFCFBFF7B7B7BFF797979FF757575FF7272
    4745           72FF6E6E6EFF6A6A69FF666666FF626262FFF7F7F5FF966935FFA17946FFFFFF
    4746           FFFF878787FF5D5D5DFFA0A0A0FFFDFCFCFFFCFCFBFFFCFBFBFFFBFBFAFFFBFA
    4747           F9FFFAFAF9FFFAF9F8FFF9F8F7FFF8F8F7FFF8F7F6FF976A36FFA27A47FFFFFF
    4748           FFFFFFFFFFFFFEFEFEFFFEFEFEFFFDFDFDFFFDFDFCFFFCFCFBFFFCFBFBFFFBFB
    4749           FAFFFBFAF9FFFAFAF9FFFAF9F8FFF9F9F7FFF9F8F7FF986B37FFA37B48FFBEA2
    4750           7FFFBEA17EFFBDA17DFFBDA07CFFBD9F7CFFBC9F7BFFBB9E7AFFBB9D7AFFBB9D
    4751           79FFBA9C78FFB99B78FFB99A77FFB89A76FFB89975FF996C39FFA37B48FFA37B
    4752           48FFA27A47FFA27946FFA17845FFA07744FFA07643FF9F7542FF9E7441FF9E73
    4753           40FF9D723FFF9C713EFF9C703DFF9B6F3CFF9A6E3BFF9A6D3AFF
    4754         }
    47554629        ImageIndex = 0
    47564630      end
    47574631      object MenuItem5: TMenuItem
    47584632        Caption = 'New Item5'
    4759         Bitmap.Data = {
    4760           36040000424D3604000000000000360000002800000010000000100000000100
    4761           2000000000000004000064000000640000000000000000000000FF00FF00FF00
    4762           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4763           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00634A
    4764           31FF634A31FF634A31FF634A31FF634A31FF634A31FF634A31FF634A31FF634A
    4765           31FF634A31FF634A31FF634A31FF634A31FFFF00FF00FF00FF00C6ADA5FFFFEF
    4766           E7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FFFFE7D6FFFFDE
    4767           D6FFFFDED6FFFFDED6FFFFDED6FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFEF
    4768           E7FFD69484FFE7A584FFF7A584FFF79C73FFF79C73FFE78C63FFE78463FFE784
    4769           52FFE78442FFE77B42FFE78452FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4770           F7FFC69473FFFFC6A5FFF7B594FFF7A584FFF79C73FFF79C73FFE78C63FFE784
    4771           63FFD67B52FFD67352FFE77342FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4772           F7FFC69473FFFFCEB5FFFFEFE7FFFFE7D6FFFFDED6FFFFDED6FFFFDED6FFFFD6
    4773           C6FFFFD6C6FFD67B52FFE77342FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4774           F7FFC69473FFFFCEB5FFFFC6A5FFFFC6A5FFFFB594FFF7A584FFF7A584FFF79C
    4775           73FFE78C63FFE78463FFE77342FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4776           F7FFC69473FFFFD6C6FFFFEFE7FFFFEFE7FFFFEFE7FFFFE7D6FFFFDED6FFFFDE
    4777           D6FFFFDED6FFE78C63FFE77342FFFFE7D6FF634A31FFFF00FF00C6ADA5FFFFF7
    4778           F7FFC69473FFFFD6C6FFFFD6C6FFFFCEB5FFFFC6A5FFFFC6A5FFFFB594FFF7A5
    4779           84FFF79C73FFF79C73FFE77342FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4780           FFFFC69473FFFFDED6FFFFEFE7FFFFEFE7FFFFEFE7FFFFC6A5FFFFC6A5FFFFB5
    4781           94FFFFB594FFF79C73FFE77B42FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4782           FFFFC69473FFFFDED6FFFFDED6FFFFD6C6FFFFCEB5FFFFCEB5FFFFC6A5FFFFC6
    4783           A5FFFFB594FFFFB584FFE77B42FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4784           FFFFD69C84FFD69484FFC69473FFD68C73FFD68C63FFC68463FFC67B52FFC673
    4785           42FFC66B42FFC66B42FFD67B42FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4786           FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFFFF7F7FFFFF7F7FFFFF7F7FFFFF7
    4787           F7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FF634A31FFFF00FF00FF00FF00D6B5
    4788           A5FFD6B5A5FFD6B5A5FFD6B5A5FFC6ADA5FFC6ADA5FFC6ADA5FFC6ADA5FFC6AD
    4789           A5FFC6ADA5FFC6ADA5FFC6ADA5FFC6ADA5FFFF00FF00FF00FF00FF00FF00FF00
    4790           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4791           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4792           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4793           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4794         }
    47954633        ImageIndex = 1
    47964634      end
    47974635      object MenuItem6: TMenuItem
    47984636        Caption = 'New Item6'
    4799         Bitmap.Data = {
    4800           36040000424D3604000000000000360000002800000010000000100000000100
    4801           2000000000000004000064000000640000000000000000000000986B37FF976A
    4802           36FF966935FF966734FF956633FF946532FF946531FF936430FF92622FFF9261
    4803           2EFF91602DFF90602CFF905F2BFF8F5D2AFF8E5C29FF8D5B28FF996C38FFF8F7
    4804           F6FFF8F7F5FFF7F6F5FFF6F6F4FFF6F5F3FFF5F5F3FFF5F4F2FFF4F3F1FFF4F3
    4805           F1FFF3F2F0FFF3F2EFFFF2F1EFFFF2F0EEFFF1F0EDFF8E5D29FF996D3AFFF9F8
    4806           F7FF959594FF878787FF9B9A9AFFF7F6F4FFF6F5F3FFF6F5F3FFF5F4F2FFF4F3
    4807           F1FFF4F3F1FFF3F2F0FFF3F2EFFFF2F1EFFFF2F1EEFF8F5E2AFF9A6E3BFFF9F9
    4808           F8FF7C7C7CFFC4C4C4FF878787FFF7F6F5FF7A7A7AFF787878FF747474FF7171
    4809           70FF6D6D6CFF696968FF656565FF616161FFF2F1EFFF905F2BFF9B6F3CFFFAF9
    4810           F8FFBEBEBDFF929292FFBCBCBBFFF8F7F6FFF7F7F5FFF7F6F4FFF6F5F4FFF6F5
    4811           F3FFF5F4F2FFF5F4F2FFF4F3F1FFF4F2F0FFF3F2F0FF91602DFF9C703DFFFAFA
    4812           F9FFFAF9F9FFF9F9F8FFF9F8F7FFF8F8F7FFF8F7F6FFF7F7F5FFF7F6F5FFF6F5
    4813           F4FFF6F5F3FFF5F4F3FFF5F4F2FFF4F3F1FFF4F3F0FF92612EFF9D723EFFFBFB
    4814           FAFF9F9F9EFF7F7F7FFFAEAEADFFF9F8F7FFF8F8F7FFF8F7F6FFF7F7F5FFF7F6
    4815           F5FFF6F6F4FFF6F5F3FFF5F4F3FFF5F4F2FFF4F3F1FF92622FFF9D7340FFFCFB
    4816           FBFF818181FFC4C4C4FF8F8F8FFFFAF9F8FF7B7B7AFF797979FF757574FF7271
    4817           71FF6D6D6DFF696969FF666665FF626261FFF5F4F2FF936430FF9E7441FFFCFC
    4818           FCFFB5B5B5FF848484FFBEBDBDFFFAFAF9FFFAF9F8FFF9F9F7FFF9F8F7FFF8F8
    4819           F6FFF8F7F5FFF7F6F5FFF7F6F4FFF6F5F3FFF6F5F3FF946531FF9F7542FFFDFD
    4820           FCFFFCFCFCFFFCFCFBFFFBFBFAFFFBFAFAFFFAFAF9FFFAF9F8FFF9F9F8FFF9F8
    4821           F7FFF8F8F6FFF8F7F6FFF7F6F5FFF7F6F4FFF6F5F4FF956633FFA07643FFFEFD
    4822           FDFF8C8C8CFF525252FFA4A4A4FFFBFBFAFFFBFBFAFFFAFAF9FFFAF9F8FFF9F9
    4823           F8FFF9F8F7FFF8F8F6FFF8F7F6FFF7F7F5FFF7F6F4FF966734FFA17844FFFEFE
    4824           FEFF5F5F5FFF949494FF535353FFFCFCFBFF7B7B7BFF797979FF757575FF7272
    4825           72FF6E6E6EFF6A6A69FF666666FF626262FFF7F7F5FF966935FFA17946FFFFFF
    4826           FFFF878787FF5D5D5DFFA0A0A0FFFDFCFCFFFCFCFBFFFCFBFBFFFBFBFAFFFBFA
    4827           F9FFFAFAF9FFFAF9F8FFF9F8F7FFF8F8F7FFF8F7F6FF976A36FFA27A47FFFFFF
    4828           FFFFFFFFFFFFFEFEFEFFFEFEFEFFFDFDFDFFFDFDFCFFFCFCFBFFFCFBFBFFFBFB
    4829           FAFFFBFAF9FFFAFAF9FFFAF9F8FFF9F9F7FFF9F8F7FF986B37FFA37B48FFBEA2
    4830           7FFFBEA17EFFBDA17DFFBDA07CFFBD9F7CFFBC9F7BFFBB9E7AFFBB9D7AFFBB9D
    4831           79FFBA9C78FFB99B78FFB99A77FFB89A76FFB89975FF996C39FFA37B48FFA37B
    4832           48FFA27A47FFA27946FFA17845FFA07744FFA07643FF9F7542FF9E7441FF9E73
    4833           40FF9D723FFF9C713EFF9C703DFF9B6F3CFF9A6E3BFF9A6D3AFF
    4834         }
    48354637        ImageIndex = 0
    48364638      end
    48374639      object MenuItem7: TMenuItem
    48384640        Caption = 'New Item7'
    4839         Bitmap.Data = {
    4840           36040000424D3604000000000000360000002800000010000000100000000100
    4841           2000000000000004000064000000640000000000000000000000FF00FF00FF00
    4842           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4843           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00634A
    4844           31FF634A31FF634A31FF634A31FF634A31FF634A31FF634A31FF634A31FF634A
    4845           31FF634A31FF634A31FF634A31FF634A31FFFF00FF00FF00FF00C6ADA5FFFFEF
    4846           E7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FFFFE7D6FFFFDE
    4847           D6FFFFDED6FFFFDED6FFFFDED6FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFEF
    4848           E7FFD69484FFE7A584FFF7A584FFF79C73FFF79C73FFE78C63FFE78463FFE784
    4849           52FFE78442FFE77B42FFE78452FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4850           F7FFC69473FFFFC6A5FFF7B594FFF7A584FFF79C73FFF79C73FFE78C63FFE784
    4851           63FFD67B52FFD67352FFE77342FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4852           F7FFC69473FFFFCEB5FFFFEFE7FFFFE7D6FFFFDED6FFFFDED6FFFFDED6FFFFD6
    4853           C6FFFFD6C6FFD67B52FFE77342FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4854           F7FFC69473FFFFCEB5FFFFC6A5FFFFC6A5FFFFB594FFF7A584FFF7A584FFF79C
    4855           73FFE78C63FFE78463FFE77342FFFFDED6FF634A31FFFF00FF00C6ADA5FFFFF7
    4856           F7FFC69473FFFFD6C6FFFFEFE7FFFFEFE7FFFFEFE7FFFFE7D6FFFFDED6FFFFDE
    4857           D6FFFFDED6FFE78C63FFE77342FFFFE7D6FF634A31FFFF00FF00C6ADA5FFFFF7
    4858           F7FFC69473FFFFD6C6FFFFD6C6FFFFCEB5FFFFC6A5FFFFC6A5FFFFB594FFF7A5
    4859           84FFF79C73FFF79C73FFE77342FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4860           FFFFC69473FFFFDED6FFFFEFE7FFFFEFE7FFFFEFE7FFFFC6A5FFFFC6A5FFFFB5
    4861           94FFFFB594FFF79C73FFE77B42FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4862           FFFFC69473FFFFDED6FFFFDED6FFFFD6C6FFFFCEB5FFFFCEB5FFFFC6A5FFFFC6
    4863           A5FFFFB594FFFFB584FFE77B42FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4864           FFFFD69C84FFD69484FFC69473FFD68C73FFD68C63FFC68463FFC67B52FFC673
    4865           42FFC66B42FFC66B42FFD67B42FFFFEFE7FF634A31FFFF00FF00D6B5A5FFFFFF
    4866           FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFFFF7F7FFFFF7F7FFFFF7F7FFFFF7
    4867           F7FFFFEFE7FFFFEFE7FFFFEFE7FFFFEFE7FF634A31FFFF00FF00FF00FF00D6B5
    4868           A5FFD6B5A5FFD6B5A5FFD6B5A5FFC6ADA5FFC6ADA5FFC6ADA5FFC6ADA5FFC6AD
    4869           A5FFC6ADA5FFC6ADA5FFC6ADA5FFC6ADA5FFFF00FF00FF00FF00FF00FF00FF00
    4870           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4871           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4872           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4873           FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    4874         }
    48754641        ImageIndex = 1
    48764642      end
     
    48804646      object MenuItem12: TMenuItem
    48814647        Caption = 'New Item12'
    4882         Bitmap.Data = {
    4883           36040000424D3604000000000000360000002800000010000000100000000100
    4884           2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
    4885           FF00FFFFFF00FFFFFF005049E726342DE374241CE1BF231BE1BF231BE1BF251D
    4886           E19F3730E464FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    4887           FF00FFFFFF002D26E2912B23E2FF3032E7FF3B48EFFF4356F4FF4152F2FF3944
    4888           EEFF2D2BE5FF2C24E2DF352EE354FFFFFF00FFFFFF00FFFFFF00FFFFFF00231B
    4889           E20E2B23E3CF2C29E5FF4153F3FF4E6AFAFF4E6AFAFF4E6AFAFF4E6AFAFF4E6A
    4890           FAFF4D69FAFF3B47EFFF2923E3FF332BE362FFFFFF00FFFFFF00FFFFFF002C24
    4891           E3912A24E5FFE2E6FEFFE6EAFEFFE5E9FEFFE5E9FEFFE5E9FEFFE5E9FEFFE5E9
    4892           FEFFE5E9FEFFE8EBFEFF4051F2FF2820E2FF3730E442FFFFFF00231BE22E2A22
    4893           E3FF3B47EFFF5C76FAFF96A7FCFFA2B1FCFFA3B2FCFF9CACFCFFA5B3FCFFA1B0
    4894           FCFF9EADFCFF778CFBFF4E6AFAFF3134E9FF2B23E2DFFFFFFF00231BE29F271F
    4895           E3FF4961F7FFCFD7FEFFFBFBFFFFE4E8FEFFDCE2FEFFFBFBFFFFD6DDFEFFECF0
    4896           FEFFFAFAFFFFCDD5FEFF4E6AFAFF3E4DF1FF261FE1FF231BE12E231BE2DF261E
    4897           E2FF4D68F9FF6981FBFFF3F4FFFF8598FCFF667EFBFFF3F4FFFF4E6AFAFFA8B5
    4898           FDFFDDE2FEFF4E6AFAFF4E6AFAFF4255F3FF231BE1FF231BE17E241CE2FF261F
    4899           E2FF231BE2FF453EE6FFEFEEFDFF6D68ECFF4841E7FFEFEFFDFF2B23E3FF9793
    4900           F1FFD6D4FAFF231BE2FF231BE1FF231BE1FF231BE1FF231BE17E241CE2FF271F
    4901           E2FF241CE2FF453FE6FFEFEEFDFF6D68ECFF4841E7FFEFEFFDFF2B23E3FF9793
    4902           F1FFD6D4FAFF231BE2FF231BE2FF231BE2FF231BE2FF231BE27E241CE2CF2720
    4903           E2FF241CE2FF3C35E5FFEFEEFDFF645FEBFF3D36E5FFEFEFFDFF231BE2FF908C
    4904           F0FFD4D2F9FF231BE2FF231BE2FF231BE2FF241CE2FF231BE27E241CE29F2921
    4905           E3FF241CE2FFEBEAFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    4906           FFFFFFFFFFFFFFFFFFFF261EE2FF231BE2FF271FE3FF231BE22E241CE22E2C24
    4907           E3FF261EE2FF241CE2FF241CE2FF241CE2FF241CE2FF241CE2FF241CE2FF241C
    4908           E2FF241CE2FF241CE2FF261EE2FF251DE2FF2B23E3DFFFFFFF00FFFFFF002C24
    4909           E3912A22E3FF332BE4FF9995F1FFF5F4FEFFFBFBFEFFF6F6FEFFF8F8FEFFFCFC
    4910           FFFFB6B3F5FF433CE6FF241CE2FF2A22E3FF3028E442FFFFFF00FFFFFF00FFFF
    4911           FF002A22E3BF2A22E3FF2820E2FF635DEAFFCECCF9FFFFFFFFFFE7E6FCFF7C77
    4912           EEFF2D26E3FF271FE2FF2A22E3FF2E27E362FFFFFF00FFFFFF00FFFFFF00FFFF
    4913           FF00FFFFFF002B23E3812C24E3FF2B23E3FF4C46E8FF8D89F0FF615BEAFF2820
    4914           E3FF2B23E3FF2D25E3DF3129E442FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    4915           FF00FFFFFF00FFFFFF00241CE21E241CE26E241CE2AF241CE2BF241CE2BF241C
    4916           E29F241CE25EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
    4917         }
    49184648        ImageIndex = 2
    49194649      end
    49204650      object MenuItem13: TMenuItem
    49214651        Caption = 'New Item13'
    4922         Bitmap.Data = {
    4923           36040000424D3604000000000000360000002800000010000000100000000100
    4924           2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
    4925           FF00FFFFFF00FFFFFF005049E726342DE374241CE1BF231BE1BF231BE1BF251D
    4926           E19F3730E464FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    4927           FF00FFFFFF002D26E2912B23E2FF3032E7FF3B48EFFF4356F4FF4152F2FF3944
    4928           EEFF2D2BE5FF2C24E2DF352EE354FFFFFF00FFFFFF00FFFFFF00FFFFFF00231B
    4929           E20E2B23E3CF2C29E5FF4153F3FF4E6AFAFF4E6AFAFF4E6AFAFF4E6AFAFF4E6A
    4930           FAFF4D69FAFF3B47EFFF2923E3FF332BE362FFFFFF00FFFFFF00FFFFFF002C24
    4931           E3912A24E5FFE2E6FEFFE6EAFEFFE5E9FEFFE5E9FEFFE5E9FEFFE5E9FEFFE5E9
    4932           FEFFE5E9FEFFE8EBFEFF4051F2FF2820E2FF3730E442FFFFFF00231BE22E2A22
    4933           E3FF3B47EFFF5C76FAFF96A7FCFFA2B1FCFFA3B2FCFF9CACFCFFA5B3FCFFA1B0
    4934           FCFF9EADFCFF778CFBFF4E6AFAFF3134E9FF2B23E2DFFFFFFF00231BE29F271F
    4935           E3FF4961F7FFCFD7FEFFFBFBFFFFE4E8FEFFDCE2FEFFFBFBFFFFD6DDFEFFECF0
    4936           FEFFFAFAFFFFCDD5FEFF4E6AFAFF3E4DF1FF261FE1FF231BE12E231BE2DF261E
    4937           E2FF4D68F9FF6981FBFFF3F4FFFF8598FCFF667EFBFFF3F4FFFF4E6AFAFFA8B5
    4938           FDFFDDE2FEFF4E6AFAFF4E6AFAFF4255F3FF231BE1FF231BE17E241CE2FF261F
    4939           E2FF231BE2FF453EE6FFEFEEFDFF6D68ECFF4841E7FFEFEFFDFF2B23E3FF9793
    4940           F1FFD6D4FAFF231BE2FF231BE1FF231BE1FF231BE1FF231BE17E241CE2FF271F
    4941           E2FF241CE2FF453FE6FFEFEEFDFF6D68ECFF4841E7FFEFEFFDFF2B23E3FF9793
    4942           F1FFD6D4FAFF231BE2FF231BE2FF231BE2FF231BE2FF231BE27E241CE2CF2720
    4943           E2FF241CE2FF3C35E5FFEFEEFDFF645FEBFF3D36E5FFEFEFFDFF231BE2FF908C
    4944           F0FFD4D2F9FF231BE2FF231BE2FF231BE2FF241CE2FF231BE27E241CE29F2921
    4945           E3FF241CE2FFEBEAFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    4946           FFFFFFFFFFFFFFFFFFFF261EE2FF231BE2FF271FE3FF231BE22E241CE22E2C24
    4947           E3FF261EE2FF241CE2FF241CE2FF241CE2FF241CE2FF241CE2FF241CE2FF241C
    4948           E2FF241CE2FF241CE2FF261EE2FF251DE2FF2B23E3DFFFFFFF00FFFFFF002C24
    4949           E3912A22E3FF332BE4FF9995F1FFF5F4FEFFFBFBFEFFF6F6FEFFF8F8FEFFFCFC
    4950           FFFFB6B3F5FF433CE6FF241CE2FF2A22E3FF3028E442FFFFFF00FFFFFF00FFFF
    4951           FF002A22E3BF2A22E3FF2820E2FF635DEAFFCECCF9FFFFFFFFFFE7E6FCFF7C77
    4952           EEFF2D26E3FF271FE2FF2A22E3FF2E27E362FFFFFF00FFFFFF00FFFFFF00FFFF
    4953           FF00FFFFFF002B23E3812C24E3FF2B23E3FF4C46E8FF8D89F0FF615BEAFF2820
    4954           E3FF2B23E3FF2D25E3DF3129E442FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    4955           FF00FFFFFF00FFFFFF00241CE21E241CE26E241CE2AF241CE2BF241CE2BF241C
    4956           E29F241CE25EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
    4957         }
    49584652        ImageIndex = 2
    49594653      end
  • trunk/Packages/Common/Demo/ScaleDPI/UFormTest.pas

    r94 r308  
    1616    Button1: TButton;
    1717    Button2: TButton;
     18    Calendar1: TCalendar;
    1819    CheckBox1: TCheckBox;
    1920    Edit1: TEdit;
     
    2122    ImageList1: TImageList;
    2223    ImageList2: TImageList;
     24    ListView1: TListView;
    2325    MainMenu1: TMainMenu;
    2426    Memo1: TMemo;
     
    3941    Panel1: TPanel;
    4042    RadioGroup1: TRadioGroup;
     43    StatusBar1: TStatusBar;
    4144    TabSheet1: TTabSheet;
    4245    TabSheet2: TTabSheet;
  • trunk/Packages/Common/Languages/UJobProgressView.po

    r192 r308  
    1414msgstr ""
    1515
    16 #: ujobprogressview.soperations
    17 msgid "Operations:"
    18 msgstr ""
    19 
    2016#: ujobprogressview.spleasewait
    2117msgid "Please wait..."
  • trunk/Packages/Common/UApplicationInfo.pas

    r192 r308  
    66
    77uses
    8   SysUtils, Classes, Forms, URegistry, Controls;
     8  SysUtils, Classes, Forms, URegistry, Controls, Graphics, LCLType;
    99
    1010type
     
    1414  TApplicationInfo = class(TComponent)
    1515  private
    16     FDescription: TCaption;
     16    FDescription: TTranslateString;
     17    FIcon: TBitmap;
    1718    FIdentification: Byte;
    1819    FLicense: string;
     
    3334  public
    3435    constructor Create(AOwner: TComponent); override;
     36    destructor Destroy; override;
    3537    property Version: string read GetVersion;
    3638    function GetRegistryContext: TRegistryContext;
     
    4749    property EmailContact: string read FEmailContact write FEmailContact;
    4850    property AppName: string read FAppName write FAppName;
    49     property Description: string read FDescription write FDescription;
     51    property Description: TTranslateString read FDescription write FDescription;
    5052    property ReleaseDate: TDateTime read FReleaseDate write FReleaseDate;
    5153    property RegistryKey: string read FRegistryKey write FRegistryKey;
    5254    property RegistryRoot: TRegistryRoot read FRegistryRoot write FRegistryRoot;
    5355    property License: string read FLicense write FLicense;
     56    property Icon: TBitmap read FIcon write FIcon;
    5457  end;
    5558
     
    7477constructor TApplicationInfo.Create(AOwner: TComponent);
    7578begin
    76   inherited Create(AOwner);
     79  inherited;
    7780  FVersionMajor := 1;
    7881  FIdentification := 1;
     
    8083  FRegistryKey := '\Software\' + FAppName;
    8184  FRegistryRoot := rrKeyCurrentUser;
     85  FIcon := TBitmap.Create;
     86end;
     87
     88destructor TApplicationInfo.Destroy;
     89begin
     90  FreeAndNil(FIcon);
     91  inherited;
    8292end;
    8393
  • trunk/Packages/Common/UCommon.pas

    r192 r308  
    2828    unfDNSDomainName = 11);
    2929
    30   TFilterMethodMethod = function (FileName: string): Boolean of object;
     30  TFilterMethod = function (FileName: string): Boolean of object;
     31  TFileNameMethod = procedure (FileName: string) of object;
     32
    3133var
    3234  ExceptionHandler: TExceptionEvent;
     
    7274function MergeArray(A, B: array of string): TArrayOfString;
    7375function LoadFileToStr(const FileName: TFileName): AnsiString;
     76procedure SaveStringToFile(S, FileName: string);
    7477procedure SearchFiles(AList: TStrings; Dir: string;
    75   FilterMethod: TFilterMethodMethod);
     78  FilterMethod: TFilterMethod = nil; FileNameMethod: TFileNameMethod = nil);
    7679function GetStringPart(var Text: string; Separator: string): string;
     80function StripTags(const S: string): string;
     81function PosFromIndex(SubStr: string; Text: string;
     82  StartIndex: Integer): Integer;
     83function PosFromIndexReverse(SubStr: string; Text: string;
     84  StartIndex: Integer): Integer;
     85procedure CopyStringArray(Dest: TStringArray; Source: array of string);
    7786
    7887
     
    102111  I: Integer;
    103112begin
     113  Result := '';
    104114  for I := 1 to Length(Source) do begin
    105115    Result := Result + LowerCase(IntToHex(Ord(Source[I]), 2));
     
    523533end;
    524534
     535procedure SaveStringToFile(S, FileName: string);
     536var
     537  F: TextFile;
     538begin
     539  AssignFile(F, FileName);
     540  try
     541    ReWrite(F);
     542    Write(F, S);
     543  finally
     544    CloseFile(F);
     545  end;
     546end;
     547
    525548procedure SearchFiles(AList: TStrings; Dir: string;
    526   FilterMethod: TFilterMethodMethod);
     549  FilterMethod: TFilterMethod = nil; FileNameMethod: TFileNameMethod = nil);
    527550var
    528551  SR: TSearchRec;
     
    532555    try
    533556      repeat
    534         if (SR.Name = '.') or (SR.Name = '..') or not FilterMethod(SR.Name) or
    535           not FilterMethod(Copy(Dir, 3, Length(Dir)) + SR.Name) then Continue;
     557        if (SR.Name = '.') or (SR.Name = '..') or (Assigned(FilterMethod) and (not FilterMethod(SR.Name) or
     558          not FilterMethod(Copy(Dir, 3, Length(Dir)) + SR.Name))) then Continue;
     559        if Assigned(FileNameMethod) then
     560          FileNameMethod(Dir + SR.Name);
    536561        AList.Add(Dir + SR.Name);
    537562        if (SR.Attr and faDirectory) <> 0 then
     
    559584end;
    560585
     586function StripTags(const S: string): string;
     587var
     588  Len: Integer;
     589
     590  function ReadUntil(const ReadFrom: Integer; const C: Char): Integer;
     591  var
     592    J: Integer;
     593  begin
     594    for J := ReadFrom to Len do
     595      if (S[j] = C) then
     596      begin
     597        Result := J;
     598        Exit;
     599      end;
     600    Result := Len + 1;
     601  end;
     602
     603var
     604  I, APos: Integer;
     605begin
     606  Len := Length(S);
     607  I := 0;
     608  Result := '';
     609  while (I <= Len) do begin
     610    Inc(I);
     611    APos := ReadUntil(I, '<');
     612    Result := Result + Copy(S, I, APos - i);
     613    I := ReadUntil(APos + 1, '>');
     614  end;
     615end;
     616
     617function PosFromIndex(SubStr: string; Text: string;
     618  StartIndex: Integer): Integer;
     619var
     620  I, MaxLen: SizeInt;
     621  Ptr: PAnsiChar;
     622begin
     623  Result := 0;
     624  if (StartIndex < 1) or (StartIndex > Length(Text) - Length(SubStr)) then Exit;
     625  if Length(SubStr) > 0 then begin
     626    MaxLen := Length(Text) - Length(SubStr) + 1;
     627    I := StartIndex;
     628    Ptr := @Text[StartIndex];
     629    while (I <= MaxLen) do begin
     630      if (SubStr[1] = Ptr^) and (CompareByte(Substr[1], Ptr^, Length(SubStr)) = 0) then begin
     631        Result := I;
     632        Exit;
     633      end;
     634      Inc(I);
     635      Inc(Ptr);
     636    end;
     637  end;
     638end;
     639
     640function PosFromIndexReverse(SubStr: string; Text: string;
     641  StartIndex: Integer): Integer;
     642var
     643  I: SizeInt;
     644  Ptr: PAnsiChar;
     645begin
     646  Result := 0;
     647  if (StartIndex < 1) or (StartIndex > Length(Text)) then Exit;
     648  if Length(SubStr) > 0 then begin
     649    I := StartIndex;
     650    Ptr := @Text[StartIndex];
     651    while (I > 0) do begin
     652      if (SubStr[1] = Ptr^) and (CompareByte(Substr[1], Ptr^, Length(SubStr)) = 0) then begin
     653        Result := I;
     654        Exit;
     655      end;
     656      Dec(I);
     657      Dec(Ptr);
     658    end;
     659  end;
     660end;
     661
     662procedure CopyStringArray(Dest: TStringArray; Source: array of string);
     663var
     664  I: Integer;
     665begin
     666  SetLength(Dest, Length(Source));
     667  for I := 0 to Length(Dest) - 1 do
     668    Dest[I] := Source[I];
     669end;
    561670
    562671
  • trunk/Packages/Common/UDebugLog.pas

    r192 r308  
    66
    77uses
    8   Classes, SysUtils, FileUtil, SpecializedList, SyncObjs;
     8  Classes, SysUtils, FileUtil, fgl, SyncObjs;
    99
    1010type
     
    2929    procedure SetMaxCount(const AValue: Integer);
    3030  public
    31     Items: TListObject;
     31    Items: TFPGObjectList<TDebugLogItem>;
    3232    Lock: TCriticalSection;
    3333    procedure Add(Text: string; Group: string = '');
     
    117117begin
    118118  inherited;
    119   Items := TListObject.Create;
     119  Items := TFPGObjectList<TDebugLogItem>.Create;
    120120  Lock := TCriticalSection.Create;
    121121  MaxCount := 100;
  • trunk/Packages/Common/UJobProgressView.lfm

    r295 r308  
    1515  OnShow = FormShow
    1616  Position = poScreenCenter
    17   LCLVersion = '2.0.0.4'
     17  LCLVersion = '2.0.2.0'
    1818  object PanelOperationsTitle: TPanel
    1919    Left = 0
     
    241241    Interval = 100
    242242    OnTimer = TimerUpdateTimer
    243     left = 264
     243    left = 320
    244244    top = 8
    245245  end
  • trunk/Packages/Common/UJobProgressView.pas

    r192 r308  
    66
    77uses
    8   LCLType, SysUtils, Variants, Classes, Graphics, Controls, Forms, Syncobjs,
     8  SysUtils, Variants, Classes, Graphics, Controls, Forms, Syncobjs,
    99  Dialogs, ComCtrls, StdCtrls, ExtCtrls, Contnrs, UThreading, Math,
    1010  DateUtils;
     
    175175  STotalEstimatedTime = 'Total estimated time: %s';
    176176  SFinished = 'Finished';
    177   SOperations = 'Operations:';
    178177
    179178procedure Register;
     
    199198    Terminate;
    200199  end;
    201 end;
    202 
    203 function Scale96ToScreen(const ASize: Integer): Integer;
    204 begin
    205   Result := MulDiv(ASize, Screen.PixelsPerInch, 96);
    206200end;
    207201
  • trunk/Packages/Common/ULastOpenedList.pas

    r192 r308  
    3030    procedure SaveToXMLConfig(XMLConfig: TXMLConfig; Path: string);
    3131    procedure AddItem(FileName: string);
     32    function GetFirstFileName: string;
    3233  published
    3334    property MaxCount: Integer read FMaxCount write SetMaxCount;
     
    185186end;
    186187
     188function TLastOpenedList.GetFirstFileName: string;
     189begin
     190  if Items.Count > 0 then Result := Items[0]
     191    else Result := '';
     192end;
     193
    187194end.
    188195
  • trunk/Packages/Common/UListViewSort.pas

    r217 r308  
    11unit UListViewSort;
    22
    3 // Date: 2010-11-03
     3// Date: 2019-05-17
    44
    55{$mode delphi}
     
    88
    99uses
    10   {$IFDEF Windows}Windows, CommCtrl, {$ENDIF}Classes, Graphics, ComCtrls, SysUtils,
    11   Controls, DateUtils, Dialogs, SpecializedList, Forms, Grids, StdCtrls, ExtCtrls,
    12   LclIntf, LMessages, LclType, LResources;
     10  {$IFDEF Windows}Windows, CommCtrl, LMessages, {$ENDIF}Classes, Graphics, ComCtrls, SysUtils,
     11  Controls, DateUtils, Dialogs, fgl, Forms, Grids, StdCtrls, ExtCtrls,
     12  LclIntf, LclType, LResources;
    1313
    1414type
     
    5252    {$ENDIF}
    5353  public
    54     List: TListObject;
    55     Source: TListObject;
     54    List: TFPGObjectList<TObject>;
     55    Source: TFPGObjectList<TObject>;
    5656    constructor Create(AOwner: TComponent); override;
    5757    destructor Destroy; override;
     
    9898  end;
    9999
     100  { TListViewEx }
     101
     102  TListViewEx = class(TWinControl)
     103  private
     104    FFilter: TListViewFilter;
     105    FListView: TListView;
     106    FListViewSort: TListViewSort;
     107    procedure ResizeHanlder;
     108  public
     109    constructor Create(TheOwner: TComponent); override;
     110    destructor Destroy; override;
     111  published
     112    property ListView: TListView read FListView write FListView;
     113    property ListViewSort: TListViewSort read FListViewSort write FListViewSort;
     114    property Filter: TListViewFilter read FFilter write FFilter;
     115    property Visible;
     116  end;
     117
    100118procedure Register;
    101119
     
    105123procedure Register;
    106124begin
    107   RegisterComponents('Common', [TListViewSort, TListViewFilter]);
     125  RegisterComponents('Common', [TListViewSort, TListViewFilter, TListViewEx]);
     126end;
     127
     128{ TListViewEx }
     129
     130procedure TListViewEx.ResizeHanlder;
     131begin
     132end;
     133
     134constructor TListViewEx.Create(TheOwner: TComponent);
     135begin
     136  inherited Create(TheOwner);
     137  Filter := TListViewFilter.Create(Self);
     138  Filter.Parent := Self;
     139  Filter.Align := alBottom;
     140  ListView := TListView.Create(Self);
     141  ListView.Parent := Self;
     142  ListView.Align := alClient;
     143  ListViewSort := TListViewSort.Create(Self);
     144  ListViewSort.ListView := ListView;
     145end;
     146
     147destructor TListViewEx.Destroy;
     148begin
     149  inherited Destroy;
    108150end;
    109151
     
    152194        R := CellRect(I, 0);
    153195        Editor.Left := R.Left + 2;
    154         Editor.Width := (R.Right - R.Left) - 4;
     196        Editor.Width := R.Width - 4;
    155197      end;
    156198    end;
     
    277319end;
    278320
     321var
     322  ListViewSortCompare: TCompareEvent;
     323
     324function ListViewCompare(const Item1, Item2: TObject): Integer;
     325begin
     326  Result := ListViewSortCompare(Item1, Item2);
     327end;
     328
    279329procedure TListViewSort.Sort(Compare: TCompareEvent);
    280330begin
     331  // TODO: Because TFLGObjectList compare handler is not class method,
     332  // it is necessary to use simple function compare handler with local variable
     333  ListViewSortCompare := Compare;
    281334  if (List.Count > 0) then
    282     List.Sort(Compare);
     335    List.Sort(ListViewCompare);
    283336end;
    284337
     
    343396begin
    344397  inherited;
    345   List := TListObject.Create;
    346   List.OwnsObjects := False;
     398  List := TFPGObjectList<TObject>.Create;
     399  List.FreeObjects := False;
    347400end;
    348401
  • trunk/Packages/Common/UMemory.pas

    r192 r308  
    112112procedure TMemory.WriteMemory(Position: Integer; Memory: TMemory);
    113113begin
    114   Move(Memory.FData, PByte(@FData + Position)^, Memory.Size);
     114  Move(Memory.FData, PByte(PByte(@FData) + Position)^, Memory.Size);
    115115end;
    116116
    117117procedure TMemory.ReadMemory(Position: Integer; Memory: TMemory);
    118118begin
    119   Move(PByte(@FData + Position)^, Memory.FData, Memory.Size);
     119  Move(PByte(PByte(@FData) + Position)^, Memory.FData, Memory.Size);
    120120end;
    121121
  • trunk/Packages/Common/UPersistentForm.pas

    r207 r308  
    33{$mode delphi}
    44
    5 // Date: 2015-04-18
     5// Date: 2020-11-26
    66
    77interface
    88
    99uses
    10   Classes, SysUtils, Forms, URegistry, LCLIntf, Registry, Controls, ComCtrls;
     10  Classes, SysUtils, Forms, URegistry, LCLIntf, Registry, Controls, ComCtrls,
     11  ExtCtrls, LCLType;
    1112
    1213type
     
    1920    FMinVisiblePart: Integer;
    2021    FRegistryContext: TRegistryContext;
    21     FirstLoad: Boolean;
    2222    procedure LoadControl(Control: TControl);
    2323    procedure SaveControl(Control: TControl);
     
    2626    FormRestoredSize: TRect;
    2727    FormWindowState: TWindowState;
     28    FormFullScreen: Boolean;
    2829    Form: TForm;
    2930    procedure LoadFromRegistry(RegistryContext: TRegistryContext);
     
    3132    function CheckEntireVisible(Rect: TRect): TRect;
    3233    function CheckPartVisible(Rect: TRect; Part: Integer): TRect;
    33     procedure Load(Form: TForm; DefaultMaximized: Boolean = False);
     34    procedure Load(Form: TForm; DefaultMaximized: Boolean = False;
     35      DefaultFullScreen: Boolean = False);
    3436    procedure Save(Form: TForm);
    3537    constructor Create(AOwner: TComponent); override;
     38    procedure SetFullScreen(State: Boolean);
    3639    property RegistryContext: TRegistryContext read FRegistryContext
    3740      write FRegistryContext;
     
    4346procedure Register;
    4447
     48
    4549implementation
    46 
    4750
    4851procedure Register;
     
    7275  end;
    7376
     77  if (Control is TPanel) then begin
     78    with Form, TRegistryEx.Create do
     79    try
     80      RootKey := RegistryContext.RootKey;
     81      OpenKey(RegistryContext.Key + '\Forms\' + Form.Name + '\' + Control.Name, True);
     82      if (TPanel(Control).Align = alRight) or (TPanel(Control).Align = alLeft) then begin
     83        if ValueExists('Width') then
     84          TPanel(Control).Width := ReadInteger('Width');
     85      end;
     86      if (TPanel(Control).Align = alTop) or (TPanel(Control).Align = alBottom) then begin
     87        if ValueExists('Height') then
     88          TPanel(Control).Height := ReadInteger('Height');
     89      end;
     90    finally
     91      Free;
     92    end;
     93  end;
     94
    7495  if Control is TWinControl then begin
    7596    WinControl := TWinControl(Control);
     
    96117      for I := 0 to TListView(Control).Columns.Count - 1 do begin
    97118        WriteInteger('ColWidth' + IntToStr(I), TListView(Control).Columns[I].Width);
     119      end;
     120    finally
     121      Free;
     122    end;
     123  end;
     124
     125  if (Control is TPanel) then begin
     126    with Form, TRegistryEx.Create do
     127    try
     128      RootKey := RegistryContext.RootKey;
     129      OpenKey(RegistryContext.Key + '\Forms\' + Form.Name + '\' + Control.Name, True);
     130      if (TPanel(Control).Align = alRight) or (TPanel(Control).Align = alLeft) then begin
     131        WriteInteger('Width', TPanel(Control).Width);
     132      end;
     133      if (TPanel(Control).Align = alTop) or (TPanel(Control).Align = alBottom) then begin
     134        WriteInteger('Height', TPanel(Control).Height);
    98135      end;
    99136    finally
     
    120157    RootKey := RegistryContext.RootKey;
    121158    OpenKey(RegistryContext.Key + '\Forms\' + Form.Name, True);
    122     FirstLoad := not ValueExists('WindowState');
    123159    // Normal size
    124160    FormNormalSize.Left := ReadIntegerWithDefault('NormalLeft', FormNormalSize.Left);
     
    136172      + FormRestoredSize.Top;
    137173    // Other state
    138     FormWindowState := TWindowState(ReadIntegerWithDefault('WindowState', Integer(wsNormal)));
     174    FormWindowState := TWindowState(ReadIntegerWithDefault('WindowState', Integer(FormWindowState)));
     175    FormFullScreen := ReadBoolWithDefault('FullScreen', FormFullScreen);
    139176  finally
    140177    Free;
     
    160197    // Other state
    161198    WriteInteger('WindowState', Integer(FormWindowState));
     199    WriteBool('FullScreen', FormFullScreen);
    162200  finally
    163201    Free;
     
    217255end;
    218256
    219 procedure TPersistentForm.Load(Form: TForm; DefaultMaximized: Boolean = False);
     257procedure TPersistentForm.Load(Form: TForm; DefaultMaximized: Boolean = False;
     258  DefaultFullScreen: Boolean = False);
    220259begin
    221260  Self.Form := Form;
     
    225264  FormRestoredSize := Bounds((Screen.Width - Form.Width) div 2,
    226265    (Screen.Height - Form.Height) div 2, Form.Width, Form.Height);
     266  FormWindowState := Form.WindowState;
     267  FormFullScreen := DefaultFullScreen;
    227268
    228269  LoadFromRegistry(RegistryContext);
    229270
    230271  if not EqualRect(FormNormalSize, FormRestoredSize) or
    231     (DefaultMaximized and FirstLoad) then begin
     272    DefaultMaximized then begin
    232273    // Restore to maximized state
    233274    Form.WindowState := wsNormal;
     
    244285      Form.BoundsRect := FormNormalSize;
    245286  end;
     287  if FormFullScreen then SetFullScreen(True);
    246288  LoadControl(Form);
    247289end;
     
    251293  Self.Form := Form;
    252294  FormNormalSize := Bounds(Form.Left, Form.Top, Form.Width, Form.Height);
    253   FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth,
    254     Form.RestoredHeight);
     295  if not FormFullScreen then
     296    FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth,
     297      Form.RestoredHeight);
    255298  FormWindowState := Form.WindowState;
    256299  SaveToRegistry(RegistryContext);
     
    265308  FMinVisiblePart := 50;
    266309  FRegistryContext.RootKey := HKEY_CURRENT_USER;
    267   FirstLoad := False;
     310end;
     311
     312procedure TPersistentForm.SetFullScreen(State: Boolean);
     313begin
     314  if State then begin
     315    FormFullScreen := True;
     316    FormNormalSize := Form.BoundsRect;
     317    FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth,
     318      Form.RestoredHeight);
     319    FormWindowState := Form.WindowState;
     320    ShowWindow(Form.Handle, SW_SHOWFULLSCREEN);
     321    {$IFDEF WINDOWS}
     322    Form.BorderStyle := bsNone;
     323    {$ENDIF}
     324  end else begin
     325    FormFullScreen := False;
     326    {$IFDEF WINDOWS}
     327    Form.BorderStyle := bsSizeable;
     328    {$ENDIF}
     329    ShowWindow(Form.Handle, SW_SHOWNORMAL);
     330    if FormWindowState = wsNormal then begin
     331      Form.BoundsRect := FormNormalSize;
     332    end else
     333    if FormWindowState = wsMaximized then begin
     334      Form.BoundsRect := FormRestoredSize;
     335      Form.WindowState := wsMaximized;
     336    end;
     337  end;
    268338end;
    269339
  • trunk/Packages/Common/UPool.pas

    r43 r308  
    66
    77uses
    8   Classes, SysUtils, syncobjs, SpecializedList, UThreading;
     8  Classes, SysUtils, syncobjs, fgl, UThreading;
    99
    1010type
     
    2222    function NewItemObject: TObject; virtual;
    2323  public
    24     Items: TListObject;
    25     FreeItems: TListObject;
     24    Items: TFPGObjectList<TObject>;
     25    FreeItems: TFPGObjectList<TObject>;
    2626    function Acquire: TObject; virtual;
    2727    procedure Release(Item: TObject); virtual;
     
    185185begin
    186186  inherited;
    187   Items := TListObject.Create;
    188   FreeItems := TListObject.Create;
    189   FreeItems.OwnsObjects := False;
     187  Items := TFPGObjectList<TObject>.Create;
     188  FreeItems := TFPGObjectList<TObject>.Create;
     189  FreeItems.FreeObjects := False;
    190190  FReleaseEvent := TEvent.Create(nil, False, False, '');
    191191end;
  • trunk/Packages/Common/UPrefixMultiplier.pas

    r43 r308  
    2121  { TPrefixMultiplier }
    2222
    23   TPrefixMultiplier = class
     23  TPrefixMultiplier = class(TComponent)
    2424  private
    25     function TruncateDigits(Value:Double;Digits:Integer=3):Double;
     25    function TruncateDigits(Value: Double; Digits: Integer = 3): Double;
    2626  public
    2727    function Add(Value: Double; PrefixMultipliers: TPrefixMultiplierDef;
     
    7272  );
    7373
     74procedure Register;
     75
     76
    7477implementation
     78
     79procedure Register;
     80begin
     81  RegisterComponents('Common', [TPrefixMultiplier]);
     82end;
    7583
    7684{ TPrefixMultiplier }
     
    92100end;
    93101
    94 function TPrefixMultiplier.Add(Value:Double;PrefixMultipliers:TPrefixMultiplierDef
    95   ;UnitText:string;Digits:Integer):string;
     102function TPrefixMultiplier.Add(Value: Double; PrefixMultipliers: TPrefixMultiplierDef
     103  ; UnitText:string; Digits: Integer): string;
    96104var
    97105  I: Integer;
  • trunk/Packages/Common/UScaleDPI.pas

    r145 r308  
    215215  I: Integer;
    216216begin
     217  ImgList.BeginUpdate;
    217218  NewWidth := ScaleX(ImgList.Width, FromDPI.X);
    218219  NewHeight := ScaleY(ImgList.Height, FromDPI.Y);
     
    226227    Temp[I] := TBitmap.Create;
    227228    Temp[I].SetSize(NewWidth, NewHeight);
    228     {$ifdef linux}
    229     Temp[I].PixelFormat := pf24bit;
    230     {$else}
    231229    Temp[I].PixelFormat := pf32bit;
    232     {$endif}
    233230    Temp[I].TransparentColor := TempBmp.TransparentColor;
    234231    //Temp[I].TransparentMode := TempBmp.TransparentMode;
     
    252249    Temp[i].Free;
    253250  end;
     251  ImgList.EndUpdate;
    254252end;
    255253
     
    288286  WinControl: TWinControl;
    289287  ToolBarControl: TToolBar;
    290   OldAnchors: TAnchors;
    291   OldAutoSize: Boolean;
    292 begin
     288  //OldAnchors: TAnchors;
     289  //OldAutoSize: Boolean;
     290begin
     291  //if not (Control is TCustomPage) then
     292  // Resize childs first
     293  if Control is TWinControl then begin
     294    WinControl := TWinControl(Control);
     295    if WinControl.ControlCount > 0 then begin
     296      for I := 0 to WinControl.ControlCount - 1 do begin
     297        if WinControl.Controls[I] is TControl then begin
     298          ScaleControl(WinControl.Controls[I], FromDPI);
     299        end;
     300      end;
     301    end;
     302  end;
     303
    293304  //if Control is TMemo then Exit;
    294305  //if Control is TForm then
     
    320331        MinWidth := ScaleX(MinWidth, FromDPI.X);
    321332        MinHeight := ScaleY(MinHeight, FromDPI.Y);
    322         Width := ScaleX(Width, FromDPI.X);
     333        // Workaround to bad band width auto sizing
     334        //Width := ScaleX(Width, FromDPI.X);
     335        Width := ScaleX(Control.Width + 28, FromDPI.X);
    323336        //Control.Invalidate;
    324337      end;
     338    // Workaround for bad autosizing of coolbar
     339    if AutoSize then begin
     340      AutoSize := False;
     341      Height := ScaleY(Height, FromDPI.Y);
     342      AutoSize := True;
     343    end;
    325344    EndUpdate;
    326345  end;
     
    334353  end;
    335354
    336   //if not (Control is TCustomPage) then
    337   if Control is TWinControl then begin
    338     WinControl := TWinControl(Control);
    339     if WinControl.ControlCount > 0 then begin
    340       for I := 0 to WinControl.ControlCount - 1 do begin
    341         if WinControl.Controls[I] is TControl then begin
    342           ScaleControl(WinControl.Controls[I], FromDPI);
    343         end;
    344       end;
    345     end;
    346   end;
    347355  //if Control is TForm then
    348356  //  Control.EnableAutoSizing;
  • trunk/Packages/Common/UTheme.pas

    r192 r308  
    158158        ApplyTheme(TPageControl(Component).Pages[I]);
    159159    end;
     160
     161    if Control is TCoolBar then begin
     162      (Control as TCoolBar).Themed := False;
     163    end;
    160164  end;
    161165end;
  • trunk/Packages/Common/UXMLUtils.pas

    r192 r308  
    77uses
    88  {$IFDEF WINDOWS}Windows,{$ENDIF}
    9   Classes, SysUtils, DateUtils, DOM;
     9  Classes, SysUtils, DateUtils, DOM, xmlread;
    1010
    1111function XMLTimeToDateTime(XMLDateTime: string): TDateTime;
     
    2121function ReadString(Node: TDOMNode; Name: string; DefaultValue: string): string;
    2222function ReadDateTime(Node: TDOMNode; Name: string; DefaultValue: TDateTime): TDateTime;
     23procedure ReadXMLFileParser(out Doc: TXMLDocument; FileName: string);
    2324
    2425
    2526implementation
     27
     28procedure ReadXMLFileParser(out Doc: TXMLDocument; FileName: string);
     29var
     30  Parser: TDOMParser;
     31  Src: TXMLInputSource;
     32  InFile: TFileStream;
     33begin
     34  try
     35    InFile := TFileStream.Create(FileName, fmOpenRead);
     36    Src := TXMLInputSource.Create(InFile);
     37    Parser := TDOMParser.Create;
     38    Parser.Options.PreserveWhitespace := True;
     39    Parser.Parse(Src, Doc);
     40  finally
     41    Src.Free;
     42    Parser.Free;
     43    InFile.Free;
     44  end;
     45end;
    2646
    2747function GetTimeZoneBias: Integer;
Note: See TracChangeset for help on using the changeset viewer.