From 4c9b7a668f1e5827099af2ad46017071cf54c8a2 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Fri, 9 Aug 2019 15:29:17 +0000 Subject: [PATCH] jvcllaz: Add settings dialog to JvTimeFrame demo, and store settings in ini file. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7107 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../JvTimeFramework/JvTimeFrameDemo.lpi | 10 +- .../JvTimeFramework/JvTimeFrameDemo.lpr | 3 +- .../examples/JvTimeFramework/tfmain.lfm | 461 +++++++++++------- .../examples/JvTimeFramework/tfmain.pas | 57 ++- .../examples/JvTimeFramework/tfsettings.lfm | 71 +++ .../examples/JvTimeFramework/tfsettings.pas | 77 +++ 6 files changed, 510 insertions(+), 169 deletions(-) create mode 100644 components/jvcllaz/examples/JvTimeFramework/tfsettings.lfm create mode 100644 components/jvcllaz/examples/JvTimeFramework/tfsettings.pas diff --git a/components/jvcllaz/examples/JvTimeFramework/JvTimeFrameDemo.lpi b/components/jvcllaz/examples/JvTimeFramework/JvTimeFrameDemo.lpi index 53ab2e4ca..c46480f19 100644 --- a/components/jvcllaz/examples/JvTimeFramework/JvTimeFrameDemo.lpi +++ b/components/jvcllaz/examples/JvTimeFramework/JvTimeFrameDemo.lpi @@ -48,7 +48,7 @@ - + @@ -93,6 +93,14 @@ + + + + + + + + diff --git a/components/jvcllaz/examples/JvTimeFramework/JvTimeFrameDemo.lpr b/components/jvcllaz/examples/JvTimeFramework/JvTimeFrameDemo.lpr index b5dc8861a..aa9d03c02 100644 --- a/components/jvcllaz/examples/JvTimeFramework/JvTimeFrameDemo.lpr +++ b/components/jvcllaz/examples/JvTimeFramework/JvTimeFrameDemo.lpr @@ -9,7 +9,7 @@ uses tfVisibleResources in 'VisibleResourcesUnit.pas' {VisibleResources}, tfShare in 'ShareUnit.pas' {Share}, tfApptEdit in 'ApptEditUnit.pas' {ApptEdit}, - tfPrintProgress in 'PrintProgressUnit.pas' {PrintProgress}; + tfPrintProgress in 'PrintProgressUnit.pas', tfSettings {PrintProgress}; {$R *.res} @@ -30,5 +30,6 @@ begin Application.CreateForm(TShare, Share); Application.CreateForm(TApptEdit, ApptEdit); Application.CreateForm(TPrintProgress, PrintProgress); + Application.CreateForm(TSettingsForm, SettingsForm); Application.Run; end. diff --git a/components/jvcllaz/examples/JvTimeFramework/tfmain.lfm b/components/jvcllaz/examples/JvTimeFramework/tfmain.lfm index 5b7429bc0..0afd80a02 100644 --- a/components/jvcllaz/examples/JvTimeFramework/tfmain.lfm +++ b/components/jvcllaz/examples/JvTimeFramework/tfmain.lfm @@ -2,16 +2,17 @@ object MainForm: TMainForm Left = 568 Height = 613 Top = 55 - Width = 445 + Width = 477 Caption = 'UTF Demo 1: PhotoOp' ClientHeight = 613 - ClientWidth = 445 + ClientWidth = 477 Color = clBtnFace Constraints.MinHeight = 400 Constraints.MinWidth = 445 DefaultMonitor = dmDesktop Font.Color = clWindowText OnCreate = FormCreate + OnDestroy = FormDestroy OnShow = FormShow Position = poScreenCenter LCLVersion = '2.1.0.0' @@ -20,27 +21,27 @@ object MainForm: TMainForm Left = 0 Height = 515 Top = 73 - Width = 445 - ActivePage = TabSheet1 + Width = 477 + ActivePage = TabSheet2 Align = alClient - TabIndex = 0 + TabIndex = 1 TabOrder = 0 object TabSheet1: TTabSheet Caption = 'Day View' ClientHeight = 487 - ClientWidth = 437 + ClientWidth = 469 object JvTFDays1: TJvTFDays Left = 0 Height = 487 Top = 0 - Width = 437 + Width = 469 ScheduleManager = utfScheduleManager1 ColHdrHeight = 30 Cols = < item SchedDate = 0 Title = ' - ' - Width = 370 + Width = 402 end> Template.CompDate = 36406 Template.LinearDayCount = 1 @@ -98,14 +99,14 @@ object MainForm: TMainForm end object TabSheet2: TTabSheet Caption = 'Week View' - ClientHeight = 420 - ClientWidth = 437 + ClientHeight = 487 + ClientWidth = 469 ImageIndex = 1 object JvTFWeeks1: TJvTFWeeks Left = 0 - Height = 420 + Height = 487 Top = 0 - Width = 437 + Width = 469 ScheduleManager = utfScheduleManager1 Cells = < item @@ -495,13 +496,16 @@ object MainForm: TMainForm Left = 0 Height = 73 Top = 0 - Width = 445 + Width = 477 Align = alTop + BevelOuter = bvNone ClientHeight = 73 - ClientWidth = 445 + ClientWidth = 477 TabOrder = 1 object ResourceCombo: TComboBox - Left = 198 + AnchorSideLeft.Control = NewApptButton + AnchorSideTop.Control = ModeCombo + Left = 195 Height = 23 Hint = 'Display Resource' Top = 40 @@ -516,10 +520,10 @@ object MainForm: TMainForm object PrevDateButton: TBitBtn AnchorSideLeft.Control = Panel1 AnchorSideTop.Control = Panel1 - Left = 9 + Left = 8 Height = 24 Hint = 'Previous Day' - Top = 9 + Top = 8 Width = 24 BorderSpacing.Left = 8 BorderSpacing.Top = 8 @@ -537,10 +541,10 @@ object MainForm: TMainForm AnchorSideTop.Control = PrevDateButton AnchorSideRight.Control = ModeCombo AnchorSideRight.Side = asrBottom - Left = 148 + Left = 147 Height = 24 Hint = 'Next Day' - Top = 9 + Top = 8 Width = 24 Anchors = [akTop, akRight] NumGlyphs = 2 @@ -554,11 +558,15 @@ object MainForm: TMainForm TabStop = False end object NewApptButton: TBitBtn - Left = 198 + AnchorSideLeft.Control = NextDateButton + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = PrevDateButton + Left = 195 Height = 24 Hint = 'New Appointment' - Top = 7 + Top = 8 Width = 24 + BorderSpacing.Left = 24 NumGlyphs = 2 Images = ImageList ImageIndex = 4 @@ -570,11 +578,15 @@ object MainForm: TMainForm TabStop = False end object EditApptButton: TBitBtn - Left = 225 + AnchorSideLeft.Control = NewApptButton + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = NewApptButton + Left = 221 Height = 24 Hint = 'Edit Appointment' Top = 8 Width = 24 + BorderSpacing.Left = 2 NumGlyphs = 2 Images = ImageList ImageIndex = 5 @@ -586,11 +598,15 @@ object MainForm: TMainForm TabStop = False end object DeleteApptButton: TBitBtn - Left = 252 + AnchorSideLeft.Control = EditApptButton + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = NewApptButton + Left = 247 Height = 24 Hint = 'Delete Appointment' Top = 8 Width = 24 + BorderSpacing.Left = 2 NumGlyphs = 2 Images = ImageList ImageIndex = 6 @@ -602,10 +618,13 @@ object MainForm: TMainForm TabStop = False end object ViewSchedsButton: TBitBtn - Left = 198 + AnchorSideLeft.Control = NewApptButton + AnchorSideTop.Control = ResourceCombo + AnchorSideTop.Side = asrCenter + Left = 195 Height = 24 Hint = 'View Schedules ( + )' - Top = 40 + Top = 39 Width = 24 Glyph.Data = { 76010000424D7601000000000000760000002800000020000000100000000100 @@ -630,10 +649,12 @@ object MainForm: TMainForm TabStop = False end object HideSchedButton: TBitBtn - Left = 225 + AnchorSideLeft.Control = EditApptButton + AnchorSideTop.Control = ViewSchedsButton + Left = 221 Height = 24 Hint = 'Hide Selected Schedule ( + )' - Top = 40 + Top = 39 Width = 24 Glyph.Data = { 76010000424D7601000000000000760000002800000020000000100000000100 @@ -658,10 +679,12 @@ object MainForm: TMainForm TabStop = False end object ShareButton: TBitBtn - Left = 252 + AnchorSideLeft.Control = DeleteApptButton + AnchorSideTop.Control = ViewSchedsButton + Left = 247 Height = 24 Hint = 'Share Appointment ( + Drag)' - Top = 40 + Top = 39 Width = 24 NumGlyphs = 2 Images = ImageList @@ -674,11 +697,16 @@ object MainForm: TMainForm TabStop = False end object TimeIncCombo: TComboBox - Left = 328 + AnchorSideLeft.Control = SettingsButton + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = PrevDateButton + AnchorSideTop.Side = asrCenter + Left = 347 Height = 23 Hint = 'Time Increments' - Top = 8 + Top = 9 Width = 105 + BorderSpacing.Left = 24 DropDownCount = 12 ItemHeight = 15 Items.Strings = ( @@ -707,10 +735,10 @@ object MainForm: TMainForm AnchorSideTop.Control = PrevDateButton AnchorSideTop.Side = asrCenter AnchorSideRight.Control = NextDateButton - Left = 37 + Left = 36 Height = 23 Hint = 'Current Day' - Top = 10 + Top = 9 Width = 107 CenturyFrom = 1941 MaxDate = 2958465 @@ -739,10 +767,10 @@ object MainForm: TMainForm AnchorSideLeft.Control = PrevDateButton AnchorSideTop.Control = PrevDateButton AnchorSideTop.Side = asrBottom - Left = 9 + Left = 8 Height = 23 Hint = 'Display Mode' - Top = 41 + Top = 40 Width = 163 BorderSpacing.Top = 8 ItemHeight = 15 @@ -757,11 +785,16 @@ object MainForm: TMainForm TabOrder = 9 end object DaysCombo: TComboBox - Left = 344 + AnchorSideLeft.Control = TimeIncCombo + AnchorSideTop.Control = ResourceCombo + AnchorSideRight.Control = TimeIncCombo + AnchorSideRight.Side = asrBottom + Left = 347 Height = 23 Hint = 'Visible Days' Top = 40 - Width = 89 + Width = 105 + Anchors = [akTop, akLeft, akRight] ItemHeight = 15 Items.Strings = ( '31 days' @@ -779,11 +812,15 @@ object MainForm: TMainForm TabOrder = 12 end object PrintButton: TBitBtn - Left = 279 + AnchorSideLeft.Control = DeleteApptButton + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = NewApptButton + Left = 273 Height = 24 Hint = 'Print' Top = 8 Width = 24 + BorderSpacing.Left = 2 Glyph.Data = { 76010000424D7601000000000000760000002800000020000000100000000100 0400000000000001000000000000000000001000000010000000000000000000 @@ -807,19 +844,52 @@ object MainForm: TMainForm Spacing = 0 TabOrder = 13 end + object SettingsButton: TBitBtn + AnchorSideLeft.Control = PrintButton + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = NewApptButton + Left = 299 + Height = 24 + Hint = 'Settings' + Top = 8 + Width = 24 + BorderSpacing.Left = 2 + Glyph.Data = { + 76010000424D7601000000000000760000002800000020000000100000000100 + 0400000000000001000000000000000000001000000010000000000000000000 + 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00300000000000 + 0003377777777777777308888888888888807F33333333333337088888888888 + 88807FFFFFFFFFFFFFF7000000000000000077777777777777770F8F8F8F8F8F + 8F807F333333333333F708F8F8F8F8F8F9F07F333333333337370F8F8F8F8F8F + 8F807FFFFFFFFFFFFFF7000000000000000077777777777777773330FFFFFFFF + 03333337F3FFFF3F7F333330F0000F0F03333337F77773737F333330FFFFFFFF + 03333337F3FF3FFF7F333330F00F000003333337F773777773333330FFFF0FF0 + 33333337F3F37F3733333330F08F0F0333333337F7337F7333333330FFFF0033 + 33333337FFFF7733333333300000033333333337777773333333 + } + NumGlyphs = 2 + Images = ImageList + ImageIndex = 7 + OnClick = SettingsButtonClick + ParentShowHint = False + ShowHint = True + Spacing = 0 + TabOrder = 14 + end end object Panel2: TPanel Left = 0 Height = 25 Top = 588 - Width = 445 + Width = 477 Align = alBottom AutoSize = True BevelInner = bvLowered BevelOuter = bvNone BorderWidth = 2 ClientHeight = 25 - ClientWidth = 445 + ClientWidth = 477 TabOrder = 2 object IconsProvidedLabel: TLabel AnchorSideLeft.Control = Panel2 @@ -1147,7 +1217,7 @@ object MainForm: TMainForm left = 112 top = 192 Bitmap = { - 4C69070000001000000010000000000000000000000000000000000000000000 + 4C69080000001000000010000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000005A3B261C0000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000885B3B4EB57C50B70000 @@ -1371,133 +1441,192 @@ object MainForm: TMainForm B0F5C8BDB0F5C8BDB0F5C8BDB0F5C8BDB0F57470BBFA8282EEFF8F8FF7FF8F8F F7FF8F8FF7FF6968DBFE22226538000000000000000000000000000000000000 00000000000000000000000000000000000010102F043434967A5E5ED8DD6363 - DCF55050D0BC2121643600000000 + DCF55050D0BC21216436000000004C7047004C7047004C7047004C7047004C70 + 47004C7047006487531680A56B9080A56B90648753164C7047004C7047004C70 + 47004C7047004C7047004C7047004C7047004C7047004C7047004C7047004C70 + 47004C704700648A5763B9DCB4FFB9DCB4FF648A57634C7047004C7047004C70 + 47004C7047004C7047004C7047004C7047004C704700577B4E0862875432527A + 4F01708C634791B681CCBDE0BAFFBDE0BAFF91B681CC50AC4346597E4A016287 + 5432577B4E084C7047004C7047004C7047004C7047007397617CAACEA1FB9BC0 + 8EEFACD0A4FBBDE0BAFFBDE0BAFFBDE0BAFFBDE0BAFFACD0A4FB9BC08FEFAACE + A1FB7398617C4C7047004C7047004C7047005589520292B883E4BDE0BAFFBDE0 + BAFFBDE0BAFFB5D8AFFC9BBF8DE99ABF8EE9B5D8AFFDBDE0BAFFBDE0BAFFBDE0 + BAFF92B883E4558952024C7047004C7047004C70470065915E319FC494EEBDE0 + BAFFB8DBB3FF74986391597C4D02597E4A017499638FB8DBB4FFBDE0BAFFA0C4 + 94EE65915E314C7047004C7047004C7047004C7047004C70470094B984CCBDE0 + BAFFA2C696F5638A500C4C7047004C7047005E83560DA2C697F5BDE0BAFF94B9 + 84CC4C7047004C7047004C7047004C7047004C7047004C70470091B681CDBDE0 + BAFFA9CDA0F86388552B4C7047004C7047006388552CA9CDA0F9BDE0BAFF91B6 + 81CD4C7047004C7047004C7047004C7047004C70470074996482B1D5ABFCBDE0 + BAFFBDE0BAFF90B580CE648956526489565290B581CDBDE0BAFFBDE0BAFFB1D5 + ABFC749964824C7047004C7047004C704700597C4D0290B580D1BDE0BAFFBDE0 + BAFFBDE0BAFFBDE0BAFFB5D8AFFFB5D8AFFFBDE0BAFFBDE0BAFFBDE0BAFFBDE0 + BAFF90B580D1597C4D024C7047004C7047004C704700708C644591B581CF5FBC + 4F8192B681D3B6D9B1FEBDE0BAFFBDE0BAFFB6D9B1FE92B681D35EBB4F8191B5 + 81CF6F8C63454C7047004C704700608651144C7047004C7047004C7047004C70 + 4700567A4B0561BD519ABDE0BAFFBDE0BAFF62BD529A567A4B054C7047004C70 + 47004C7047004C70470060865114779C5E664C7047004C7047004C7047004C70 + 47004C70470063895547A7CB9EFEA7CC9EFE648956474C7047004C7047004C70 + 47004C7047004C704700779C5E66779C5E664C7047004C7047004C7047004C70 + 47004C704700577C4D046186533361865333577C4D044C7047004C7047004C70 + 47004C7047004C704700779C5E66779C5E664C7047004C7047004C7047004C70 + 47004C7047004C7047004C7047004C7047004C7047004C7047004C7047004C70 + 47004C7047004C704700779C5E66799B6051779C5E66779C5E66779C5E66779C + 5E66779C5E66779C5E66779C5E66779C5E66779C5E66779C5E66779C5E66779C + 5E66779C5E66779C5E66799B6051 } BitmapAdv = { - 4C69010000004C7A070000002000000020000000510F00000000000078DAED9A - 795093DB15C05FDBD76DFA66DA4EF769A77DD369A76FA6FDA3D37FDBCE38639F - CFE78A0BF6C963532480DB136509D9080828A0AC8A2C0990051114903D405040 - 5156173645106471098B10B6B0E6F49E4F931730C1846CD5973B7326B9F9BEEF - FCEE77CFB9E79EF37DF9E083F7B315FB6EFA751163DB17D66097D2ED3E2E61DB - F51532B6712DCD2E0CD8FA4909CB6EAC8CB36BD1D2FC42E6D67F95B2764C74A4 - 7C35D310E3366749BE84BDFDDFA5ACED8A4702DF85F1D248B0245FCAD9FDA584 - B543F158E40FC8B624BF32788F6729CB6EB63F8BAD665B8A5F19B4872BE1EC98 - 1EC8E62C635B825F19649F50C6DE39F33C27E80DB6B9F9D2A03D6269D0EE0959 - DE49AD6C73F1AF73D77D58C1B5BF56196C3F31941FAA936D0E7E36D7FE2329D7 - BEBA2AD4616CB4E8F4AA6C53F3915D1EB8ABFD46B8D34B7DD8A6E4E33E52C6D9 - D95D7BC6656CAC24422FB6A9F8C896B0773EBB13471B35846D6A7E739CC74B6B - F035E6BFF79615E67FA5FFD5463A8F5ADAFF34C740D6FEEDAAB0BDE3965E7FCB - E3CFEEEBD743F68E593AFE2C1B43F0EE2C69D0EA31D0DCFB4F4590BDB09CBB6B - CA1AFB8FC6DE7F52D71E68A9FC431ABC8761ADFC43633F76C131F45D6259858F - AD9C63BFA3542307B434FFEBFC7BBBA233EDC4BC35F854BC66D8FD9DD862C21A - F5C78A1A68D45A7C6BD79FEF5D2D4FDFB6116D6A353E63AB2BD6D4E8DBD6E293 - 7A63A1846937836BDC1AFCBAA8FDA318DB30C649D8BBF658838F71F549261330 - D6931AC8D51A7C14DCEB24EC1D8A8AA03D81D6E0A3E09E8F7B3FC90122ADC157 - 8D81E4417269F06E9135F8289803925C70928CA30873434BF351860BC2A02A74 - EF1819439539C6F0363E0AD60455610EE324276DC35AC1D27C14ACCF6E45BABC - 2463E828E46EFDB9A5F9AA31D447BB8D9571763CC53DD8D27C9534C579C849DD - 2A33C5BEB5163E4A5BF2D18952B69DDCD83118C3975889DF1CEF2127317AC4D2 - F38FFED714EBFE92D8DEE2FE876C7C4E551EB8ABD3546C43E20F3E9FC3E72496 - 8E3FC8BE1EBA771C9F4F9A9AADCFFE5319FC5F393E97B5F4FEF37AEF9B20FC0C - ABE41F9C9D3352EE9E144BE71FCF5EE73EA4EE0FB674FE85B91FE69FD260FBE3 - 96CE3F7B2F3228760577B7B3E5EB0FFB056417D1B7FFC72AF517739BC21AB5CF - FF43FDF94D6CE951EC58416CE0B029047519CA4F8B6167DCBE560893F2974609 - EA109D0BBE6C285F18CB4968AEAD00635B5BD34D1BDF407E2CD38BC68B0CE836 - 153F3D9A3D803AF5E59F0B3C745914C30193DD7F1C1712B847F2576346D33D3F - 8E0AA0D1CFD269DC58A6677B4E940F14C7FA40755A8851823A72A37D218EE5F5 - 107523E34C006D592C3DEBEFE118CF3E389D11C399C88CE34E12992E8DA0919C - CE01EA62DC8D12D481BA50E76BDD93C88A617A1C54CF37E7D0839A5C1EB4555F - 55CB8D243AB4261E06436B9E95D2C13B0635E7BC97E9AECD4F07C2EC51F1E3D8 - 5EC3B78B8466E7DFB95D0E2D3505D028C90462E3194BF29BEAAF81E8254051EF - A055F8F76F1643DEC03054B5DED38B8FD798828F3A56DA5F1F7E435614D444B8 - C248E1A935B3B12EBA79661FD48BC30CE6B75ECF81AA984350C2DC0EC58C6D6B - 96EB515ED07AEDB2C17C95B4545C827B12F19A04AFD5A6D310BE39E4FF997FA7 - 3C0B72934F4372E8714808FECA2482BA7292C2A0A9ECD25BF97929E1101D4003 - 7EB81F14659C875A499651823AF8E1FE94CECB09216FE517A54751E766C406C2 - E3B63A181DE8304AFA3BEF40467C10A5339F1FA9951FCF39D4877B02B5EEAAF2 - A0322B11F278916FF06B8AC47AC94AFE95E470A8C83C4FE946465DB108C81EF8 - 54CD677AD29342BCA70BC8F85472E9FC49686FAE8119F9B05A6E95E7E8259AD7 - 3C6AA9874B64DE3575A784F94CC731BDCEAAF85C2EF743323F76F19CC31731F7 - 413175FEA5D28B121D706037320DCD3F7B1EB6E825E6C87F6715335092CDD34B - F0DC773DFFB776FD65EDFAD3526DCBB1CFDE39E1A6B9FEC03FD9E5AF7E298E9F - FAF25D9C7D79CEBB7C792EFF3CC173F8031EF7B9E0F44BEA3772CC8FEFF48F0F - E0836F19CDCCB6FF5E40EA3E9740B16775A0F8A0ECCC55A6EC7C45D8586A4DDC - 7CCAB5A8E9B8D2E091D3574EC8D842DA14F7E2C1D9A4CA08051E8BCC670EB345 - 1EED749EE39FD6C4E572BFCDE0EF7766093D06932A23A70BDAAF40E59372AD12 - 2F09860B15A741DA2359F6FBD5B62C206378CE48D9FB2B43D8F404879FB284EE - F5E72421E392AE429D5C94BCD62C08CFF503E99332ADC7C575494B4CA187585F - B66F9AEB9F09FBC9A546FE82367DC50FF320FB8E0084B713E1623D8FBAF78C06 - 9EEE31F6965373A00F9BD8F9172C216D00E74D53470599577E4DCC0C37E3908C - 2DF26C20FACED3F9FB4F3085EE411CB1E7939CFB19ABCE1127C36B461F3F6309 - 6877B39A058B9AD75EB9275EE288BD640CC101B68FD0E9476FD82A7D1F53702B - 6151171BC71E28F65AA28BDC0EACC667A6BBB3D0CF34AF15DC4A54B044B496D5 - FCC73FC9F9F741170F0D57F44AB4F2536FC442F2B533640E0E0EE1FAD4A6E358 - 9AEB4F38224F59454FA9FABAACE6F4250E998F237147BEFFB6B96388DCFD4F5D - F191973E2A505F8FFE28BA7D01C8EF807A33EA531675F921B1E369328773AA6B - 255D45C0167B3EF5E539FC4C5FBF6508DD1CC85AEDC75870269F2923369B08C9 - F29E2B7F5CA21E4FF0A523438C24C7DFACBC96F8FB8BA80236845D3E0E67F219 - 10911BA060A4EE3FB096B881B11063A477B6FD0F892FB715767C1D37485C9A0B - 48DF775433C630053469649EBFF26A5B36A00D8B1EE4622C51927B6945BB1813 - 3BFD792E9BCF4942C755FC22B276C9FA6952CFBB80164A62CCAC8EB8B1C0167B - 488DE1A3EF10DF9769EA650B3D87705FE072D77D48D6F1329F5B2921D9C787E9 - A9FBFF68CC18D8428F07E5DDC56A9DC1994764DE02E7DFFAF11DFF12914797AD - 1637F8D5310A7F9ED317C6F039199E959A3E1079952EF3E139FDCDB2FC1CB54E - 64225F35FF521D710325F4B2F790B9E61F8F0592F87DA1E294421B3BB3216581 - 25F2283397FFA9D79FD0BD3C22D75F994FD69FF4F5FA4B283FA5C4B8EB9F44FB - B151EB2FD5752BEEE1BAD69F3AFE080E3C8F2AC4F873E255FCB94A57D045FB69 - 6B61DA67DB7F2720C9F59313697B3FC1FC47D3F6FCEAB85966AADB61ADF1B756 - 23FE7617517BB621F117E792957E20047D0A7D3C3C8F3EC1CDF052F2ABA2A91C - 808ABF99DAE32FC639322FB2F29E9265FB0FB1C15DCC39F5F4B382736521539A - F104ED99288D8098622EB5FF048A3C043AF78F74F700ADFB2F89E1DAC6BCD2CE - E49EE5BAD6D1D97C26994FDA38E637BA74D09268DFA5F28FA6F437F20FCC7BC9 - 5ECCE59EB7FF48EBBD93388DFB872EFEEB3CB4FDADB91FB137EEA12BF32F9C47 - 7E75AC827B91CABF9A48AE9088F917F1DB6076865726D1BDB05A1CC11C885CD7 - A56FFE49FCB127B3913FA735FFECBCAACE3F31EFC4DC2FF26A00B5B674F1714D - 73445EB5FAFA32FA234BE0713BBEF4E4B8664EA34B84B72E503996AEE3643F9F - 34349FC018C548DDE748FC6680F8F0547EBB6EFB62DD817996B82EF98D63171B - 780B18CB30DEAFB5FEF24F75762471F43AC6526DF557588EEF0BE2BB4FB1560A - C9F61EE35545CFA2E0FE8131DCD838AA19CFB1AEF44B71DA493EDDFC539C1D7D - 79AE1BE969AE1FABF371B25FF9A6B8EC453176EF32A7D8DAAB66BF533ABD6D6B - ED922504592BF9DBB6DC5C3A7AB41F58AC61B30A32700C2BF93BED6A16F07874 - B4C2AC1214F4D2C6D7C2DFBAE5C6A28B4B277879F59A5590A18DEF774438723E - BE05048201B34A62C203F03B9A3EB5922F8A0FEA79D6FF18CCDD4664CF009FC9 - BE6BFCC58579504C8DC39C628AEA2B954B541F05BF63C363D8C773B12DCCCF52 - FDF9D919A3F9D313A3D0D3560B83DDF7A8FED2E202D547410EB667BDAD547F72 - 4C46F5C764FD547F68B0CB68FE947C04FA3B9B4036D0F9FADEE6A83E0A7EC786 - C7B08FE762938F3CA3FAA3CF7BDF79FB5B9A3FF2BC87B21D7E5AC3FEC6F0BB7B - EF42754B09A4149F82B08B5F4162C149A8BC9B0F7DB26EBDF98B8BF3945EE450 - BCA545AAAF5A5B4AA592EAA3E0776CF3E47B696336901C94D4EE61406A59B87C - 57447D9E2F0B038ED00332A5099016C71E31B5FD717C71F98110914B273548AE - D6FCBCB4AB10A20B39C0E6BB2F616DB11A7F7C78909A4F952D6726C7A8BECA1E - 380FD847C1EF78DF9139F465BCBB2F9A6154310AAD43F797D7A1790C25A9830A - 4C65FFFE175DD49CAFBCEF27F257EBFEE9E4E0B2DFCBBA8B8029709FF1E5396E - D4C5574CCBA97B57C5DBF93905D5C77950CD37F651AEDD2F84C4F2F037E65B17 - 1F85D4690BA45E1599C2FEA9E551948FA9E61CB928F2D971EAF8E4DC84FA3795 - 2D2E35A5E11C749B821F71D90F9F0F507AD1DEABB58939F9EB6750B9E0CFDF37 - 6B0A3EAF2C12447549945EBC3F9C6F14BC6FCA77E6A7D4BF3D1CE9A0CECBBE23 - C4FBEFD5E4CB9EF6C03CB1B7A12269C882C40AC3ECCFAF8E51929AFA8A267F4C - F6042686FB0C96F687351028F2A4D6B73E7C7C36456AE8697CA6AB7EDF1DC391 - 3D7DDC063886B54886340E620B039771D016686FD59CABE45C7188922DF4B8B5 - EC7D7B0CBBC99877EC185331AEC5147195B8BEB53FFF29A5E2302375FFA25FCA - 97BF33750D893135206D7F26C616625FCAC7D0CFF113FB38E7E478A539D89ACD - 37D9790BE12433D3DD1EE11A630A0EF430D2DD449AF6B6355BFD6FABBF6DF5BF - ADFEB7D5FFB6FADFE67FEF53FD6F0AFE5AEA7F3C465D43CE558D91BA6671FE9D - B3BFA1F5BFCA66D857D5C8D6F63F63F886D4FF2A7BE331ECE3B9EFDBFEF34DE0 - AFB5FE37445E0E3DD5C95F6BFD6F88C887FBB5F28DADFFF5156468E71B57FF1B - F47F7CC2B255BCB666ABFF6DF5B7ADFEB7D5FFB6FADF56FFDBFCEFFDA9FF5BEE - 0E4076F633F0F7BD0F7BBFA887E3C7EE82583C081D1D9366ADFFE766E72095DF - 0B9B3737008DD605DEDE83D49E8B9FEEEE5DB0654B239C0E6B035ED44993BFFF - 5F5C5482A7672B3838B44268A85CEBDE131E3E49E27F07D86DAF5E5AB7EEBA49 - DFFF27270F80A3E37DBDF64017E77BCA4D9B9A4DF6FEBFF3E11835E7BAEE7BA5 - 44444CC1E79F37CCAC5F7FCB24EFFF333307C9DEDA6D501E70F0E093854D9B1A - 4DF2FE3F20A093F231D49B9333078D8D0B3AA5B8789E3A8F4E97E11C98E4FDBF - 93D33D60B34728BD7D7D4BAB9E2B932D51E7A1AD3EFDB4DE24EFFFFDFC1E828F - CF334A2FDE5F4BCBA24E914A5FDD3F9339041B373698E4FD7F2ABFC760FB1F3E - DC47D640A349DEFFD7DFEC22395D23B5BEF5619F3D3B4D6251F3F4FAF5B5267B - FF1F12DC0A6E6EED7AF169EEEDCACD9B1B4DFAFE1F63EAF66D354B24BE29717D - EBBA6F77F747B0E9F39B8BEBD6D599FC1D3CC6D40D1BEA3231B61C39D247F918 - FA397E621FE77CC386FA4A73B0351B896B5B3EFBAC2E998CE311AE31E2E73D1B - 36348834EDAD6AFF03880DBFF8 + 4C69010000004C7A080000002000000020000000B31200000000000078DAED9C + 77505B5B7AC05F362FD9949D4932BB69934CF22693CCBE99643399E4AF6C3619 + CF38CFCFCFCF05179C672FCD1449B8178A3A0203361D818D2912A8610C36BD09 + 10366063535D68CF05836D70115D34517572BE6BA477254B20A1B6F6EACE7C23 + 9D5BBEDFB9E73BE73BDFA7AB733FFBECD3DC2A8377FC550573F777CE6057D3DD + BEA8E2B8BD2C67EEE6399A5DCED8F56515DB6DB286BB7FC5D1FC72D6AE5F55B3 + F74EF7659D9A6F4BF65B74245FCED9F3DFD5EC3DEAA7E2E0E5A9EA38E448BE82 + 7BE0D772F65EF573692802B623F9F5110769D56CB78557F91C1DDB51FCFAF083 + 3C3977EFDC5001578FED087E7DB87B5A0D67DFFCDBC2F00FD8F6E62BC20FCA14 + E107A695C5E78DB2EDC5BFC5DBF2791DCFFD667D84FBF448699449B63DF8053C + F79F2878EE8D0D518727C72B2EAECBB6351FD8B561FB7B6FC7784E98C3B6251F + E6911AEEBEFEE678EFC9C9AA58B3D8B6E2035BCED9F7E67E0A65DC12B6ADF99D + 29D40967F049ED3F78D709ED6FD8FF9AE3BCC61DDDFFC875C063FF5E43F4A129 + 478F3F7DFF73E0D6ADC843938EF63F7A75883890AF085FDF07DA7BFEA90B7797 + D4F2F6CF3A63FE21CDFDE74DCD818E8A3F14110799CE8A3F48F3B137D4E1E535 + B653F8B0D572DDF75693624047F37F88BFF7A89FE49C5B72069FF0D74CB77FC3 + B6987646FE6190038D3B8BEFECFCF393CBE5E9BBB7834D9DC667EEF2819C1AFA + B6B3F838DF58AE62B9CDC3187706BF25D1771C7C1BF8383967FF4167F0C1AFBE + C86321F0F53807F271061F04E63A3967AFBA2EFC609833F82030E7C3DC8F6380 + 3867F0B575C071904A117140EA0C3E08C48038169CC1F5A880D8D0D17C90D1B2 + 68D410756812D7A1C11E75D8880F02394143F4E1291C93F640AEE0683E08E467 + 77E3BC27701DFACA79BB7EE668BEB60EAD497E9335DCBDAF610E76345F2B1D29 + 5415CE5B95B698B736C307E9C93C395DCD7153595B076BF87227F13B53A92AEC + A3C71CDDFED0FF3AF80113D8F60EEF7FC086DFA96AC3F63FB115DB12FF03BFCF + C1EF248EF63FC0BE1575680A7E9FB435DB9CF9A73EE2FF54F0BBACA3E79FB5B9 + 6F1AF3739D127F70F7CD2B7807B31C1D7FBC598B7D70DE1FE1E8F80B623F883F + 1511EE671D1D7F0E5E6512EC3ADE012FC7E71FEECBC0AEA0EFF95FA7E45FACDD + 6A67E43EBF09F9E76FE3264AE4F0C5FCB0515B08E8B2949F93CCC9BD77B31CCD + A826AC12D021BD1471DD52BE84CF4DEB6CAE43D66E3D1D775C7C0BF97C562045 + 10C7E8B7155F94C419029DE6F22F851DBB2E4DE6229BDD7F0A0FA5F14E94AEC7 + 4CA2D3BE486450E809740A8FCFA2F5162606A14A7E106ACC89B44A4047515230 + 4A61073E06DDC0886750F47C694228D5239573742E37993B9D97C29BC132571D + 4BC131DD61D4921C6095800ED0053AD774CF002B99453DAA6B6FEEB1EF9B8A04 + A8A7B14427B733E8A83BFD38B234E731943EC169D474E98C9EEEE65211C2CC01 + 2D3F8513387AAF426277FEFD7BB5A8ABA90CB5CBF310B6F1BC23F91DAD379174 + 02A18AC161A7F01FDDA944C543A3A8A1FBA1597CB8C6167CD061687F73F86DF9 + 89A829D6078D955FD8341BF2A23BF14750AB2CDA627EF7AD42D4907C0C55B1F6 + A04AE6EE4DCBADC440D47DF3BAC57CAD74D55D430FE5B24D095C6B4CA7257C7B + C86F32FF7E6D3E2ACABC8832A3CEA2B488533611D05598118D3A6AAE6DC82FCE + 8A41490C0A12C684A08ADCCBA8599E6F95800E614C28A1F37A5AE486FC0A5122 + 716E2E3F0C3DEF6941E3437D56C9AB27F7516E6A38A1B3541867949FCA3DF612 + E60462DC3514A3FAFC74542C88FB80DF5421334B0CF9373263505DDE65423730 + 5A2AA508CF81AF757C168D9E117966AE0CD74F2BD72E9F47BD9D4D685E35AA93 + BBB5856609F99AA75DADE81A6E77B2EEACE8A0B91456608296CFE3F13EC7EDE3 + 96CA3D7E15621F105BC75F5ABD20490CFF03C0B434FE1C78DC6596D823FE5D50 + CFA3AA02815902E77EECF1BFB3F32F67E79F8EDA769EFEFAA3135E8ECF1F8466 + 7AFF734896C757C1426FAF6081D7FE6081F77F9D131CFE7B381E74C5F32F887D + F85888D0F3DF3F439FFD8ED5CC02F7DF67641FF10E93D11AC3644795F1252CE5 + E5BAE8C9ECA694A5AC9B897329D51163176F9C5372249459DED5A30B19F5B16A + 381657CA1AE548A9BD7481C73F6E8ACBE3FD8829F4F5624BA8C319F5717365BD + 3750FD8B5AA3922A8F4057EA2E22C5805C6F7F494F3EC27578CBCC3AF49796B0 + E96987FF8C2D0968BD248F9C923F2B37C90529EECE4731452148F1A2C6E87159 + 4BC62A4B429599CB0ECEF1F927CC7E71AD5DB86C4C5FE5E36254705F8C24F7D2 + D1D5560171EFB96D02D3751CAC25DAC01C36B6F39FB32594216837B28E3ADCAE + C2A6E4795EEE3125474A6BC3FA2ED385BEE758928070AE8CF6A2F051EEBA6DC4 + CD0D9C37A79FB1C59407F99DE215F2B5371ECA56B9B2402553ECCF099278FEF1 + 07B6121D6189EFA6AD986243DDC36481AB74A99FFF7A7C9628800DFD8C7CADF8 + 6EBA9A2DA574ADD77F4233BCFE2EFCEAB1D1BA41B9517EF66D3ECABC198FDBE0 + E8088C4F633A4EE7F8FC29574A53D60D54EBAECBEF14AD72717B9C4839F1E38D + DA8E290D08BD70234855FDB44C773DF447E9BD2B08EF47A037B7356BC5543FC4 + 76BC88DB70517BADFC5905E2C868AF8305877F6A6EBF654AFC0EE3B1FA0A7C41 + 7C294B896D361D997F66B1F67995AE3E11D74E8C30333CFEDAF05ADCDFDF2596 + 7150F4F5B328BE9489628B186A66B6AFFF66FC06F842F091670ADCFF10F7E59E + F2BE1FFC06F64B8B0CD19193641FC312531471C5A19A929E020436ACF8BE087C + 8906DF4B37D8C51ADF192AF0FEF6923C6A4ACBAFC063178F9F0E5DBB8B2951D8 + C72C98F01BCB1C1955610D1FFA0EEEFB4AB25E8E843602F3028FB7E5733C8EF5 + FA9CA144169C1DA567FBFE833575E048A8DFD7F657EA7446E49D509E117BFD4D + 88D0E3E7B1C574E57A7E43D898AC0E15787E670D9F9B4BAB27F781B812BA3248 + E0F92F8EE517EA740213F8DAF65798F01B2051D7CF8CD8ABFDE15818F6DF57EA + 2EA88DB1F3DAB296D9526A8DBDFA9F6EFC49026A638B4235A578FC29D6C65F5A + ED050DF8DDD00CCA9F5835FEB27D76C11C6E6AFCE9FC8FD8FF6D6239F89F73EF + FD4F095D4D97FA5236C3742F70FF5D4686CF97E7720E7D09F10FD9F6C2C69405 + 56B6DF71A3FEB799E47FFB2B8839DB12FF0B6DC916F947429F823E1E534C9FE6 + E5066A840D49440C40F8DF3CE3FE17FC1C6E1765ED4095DEFC836DF000624E33 + FB59D9A59AC859B23F017BA62B625172258F987FC2A454B1C9F94314C0303AFF + 621F6EACCE8676C6F7AC32358E124A59B83D295310DF98D241C9A0FC1E117F74 + 883E883F20EEC573318F77D9FD2746EF1DFB69983F4CF1D7E2D0DE0D633F6C6F + 98430DE32F684761235FCDBB4AC45F1D38564887F80BF7DB084E6E601ED6BDBC + 9E1F8118085FF7CCDCF813F7C781BC76E1A2D1F8F349892EFE84B81362BFB812 + 0631B64CF1614C73A581CDE6F665E88F6C31F55E6AF5F929724C634A2477AF10 + 3196A9E3783E9FB1349E001FC5CC3EE281FBCD10EEC3B3A5BDA6ED0B7907C459 + B296CC0F8E5D6D132C832F037FBFD9FC2B34DBCB03FBD15BE04B8DE55FD185C1 + EF70DF7D0DB95264C199494143D20208CC1FE0C3ADF5A3647F0E79654896E73E + FCE9179AE5E5112CF0D94ECFF1F942178FE3F92A38CBFB1088B573973DC5B5BD + DFDCF729E676EF6A5E758400CB90BF7BE79DD593275F21367BD4AE020CA88321 + 7F9F5BD3321C4F4A52DB55C2C3275C7C23FC5D3B6FAF787B3F41818183761560 + 18E3879C908C5D4EED4262F1905D253DED7B147252346BC897A6860FBC79F51C + D97B1B53BE41F09BECC7C65F595E42EAD929B4A89E25CA1ACD2A510681EFB0C1 + 3128C3B9B02D2F2D10E5A58579ABF973D3E368A0A7190DF73F24CAAB2BCB4419 + 0438B0BD19EC26CA33934AA23CA97C459447869F59CD9F558DA1574F3A9072E8 + C9DABD2D126510F80E1B1C83329C0B9B6AEC0D511E7F3BF8D1DBDFD1FCB1B703 + 84EDE0D319F6B786DF3FF800357655A1ACCA0B28FAEA29945E761ED53F28452F + 95FD66F357569608BDC02178AB2B44593BB6341A0D510681EFB02DE1EFD5ED05 + 08C7A038778F46389745D71F4889CFCB35D1882BA1A23C451ACA49E18CD9DAFE + 50BF94D230145B44C7394891D1F8BCFA59394A2AE7228E306015728BF5F853A3 + C3447B6A6D393F334994B5F680768032087C87FB8E2BA4EBF11EBCEB44E3EA71 + D43DF2483F0F2D666A701E54662BFBBF7AF78C6873C3FB7EA17A3FEE5FCF0CEB + EDAFE9AF402C71C07CB0C063BB29BE7A4E45DCBBD6DF2E2DAA8932B483B6BDA1 + 0C72F351394AAF8DF9A0BD4DF141709EB68CF355A92DEC9F5D9B48F4316D9B03 + 1744B530451C9F599CD6EDD3DAE25A470EB441BF2DF8B1D743E0F701422FD87B + BD6D7A51B5F61B54110A151E59B0055F501387A42D19845EB83F686F10B86FA2 + EF2CCDEAF63D1EEB23CE2BB82F81FB1F24F395AF07D012B6B7A5226FCB47E975 + 96D95FD898ACC139F50D327F52F9024D8FBEB4587A1F37A130298D18DFE6F0E1 + B7299C43CFC16FBABAE7DDC95CE5EBE73D08EAB019C955A4207E79981E076C01 + F6D6B6B9562E55466A3812EA5DBDE7EDC99C0E6B9EB1834F05BF965CC1D3C0F8 + 36FEFB4F35E18799D9BE2B2159BFFE5B5BE790E0531939BE79E05BB07D893E06 + FD1C3EA10C6D8E8FD7DB834DDE8233BD76624E264BE4F714C6184BEC3FC014F9 + 49C9F6766DAEFCDF957FBBF27F57FEEFCAFF5DF9BFABFF7D4AF9BF2DF89BC9FF + E118710D3E575B47E29A95A58FCEFE96E6FF5A9B41599B233BBBFF59C3B724FF + D7DA1B8E4119CEFDD4E69FDF06FE66F37F4B6462E4B549FE66F37F4B4435FACA + 28DFDAFCDF5C018671BE75F9BF45FFC7C72C57C6EBDA5CF9BF2BFF76E5FFAEFC + DF95FFBBF27F57FFFB74F2FFAE0743A8A0E00D0A0D7E840E7DD78ACE9E7E8064 + B261D4D73763D7FC7F716111650B07D1B7DFB6210AE5193A7366989873E13320 + E019DAB9B31D5D8CEE4182C4F3367FFEBFB2A241345A373A7CB81B4545A98CCE + 3D313133D8FFF721B73D8DAB5BB6DCB2E9F3FFCCCC21E4E1F1C8AC39D0DBEBA1 + 66C78E4E9B3DFF7FF27892687353F76D28B1B1B3E89B6FDAE6B76EBD6B93E7FF + 7979C3786EEDB7280E387AF4C5F28E1DED3679FECF603C21FA18E82D2C5C44ED + EDCB26A5B27289388F4E57421BD8E4F9BFA7E743C4E18C117A5FBE5C5DF75CA5 + 7295380F6CF5D557AD3679FE1F12F2180505BD21F4C2FD7575AD981485E2FDFD + B3582368FBF6369B3CFFCF160E586CFFE3C75FE231D06E93E7FFAD779EE198AE + 9D18DFE6B01312E6B02FEA9CDBBAB5D966CFFF2323BA919F5FAF597C4A40AFE6 + DB6FDB6DFAFC1F7CEA9EDD4DABD8BF69607C9BBAEF8080A768C7377756B66C69 + B1F93378F0A9DBB6B5E4816F3971E225D1C7A09FC32794A1CDB76D6BADB7079B + BC61BFB6F3EBAF5B32713D9EC218C3FD7C60DBB63629D9DED6ACFF87B550F42C + EFFF208BB9EBA36C2174A1F7FEF3F9A7A7122BB8A320F01DF6398ACF91D2F20B + D7FEEF44AC8D7A20837545F98EE35387C9EBAC15C4BA26EA90DDDFBBC0E3FD88 + 2EF071BF5018346AF8DF1AD807C76CF1AE05582FC310FBC5850ABCFF07D6A3BD + 5FDB76E4971C096530A52A7C12D651195B5B05C7D852CA009CAB5B338475802E + 4BD6E0604E83B089AF49AA0C1B8735F7B86DBB220B4E8F99FA5FA55E3DF03970 + 2EAC9B866B932B79E3C246BE06749AB57E5CE0BD35AE98316EF8AE03C3773AAC + 27702EAC4F23EF8B2D614C80EE8DD66C42FB99739F8AC11A04EFA228EBBB417C + 37A75DD812CA0030D65D7B28A1D60B9B52E6D67B8F43D6AD8419AE94FA962BA3 + 2938D2C07A8E84F616EF9B8563A6AE1334F1E740B7B63F6D5887DBC6EB9050CA + 9E6489FC33C8FE0EFA19B62F3FA18C336974FD34BE1F73D8E43A30C5FE77E03F + 9A643DB8BC8AD9B526DFDD20F657E477883406D72036D6652E5BB716584A89CD + 6BCFD6E3C795324660CDB6A96B82B2BCFE15F7DD11BDF5D35807E8B278BDB88C + 76D5F07D1A1179C747A0ADD75B97179E77428F0F3A4097E5EBC529FCFC4E911E + FFE28D2025798D9F31BF75B130586F9D37E8005D96F29962BF5CD9DA7F5A49EB + 3B1739626A82499B890392F1394B06EF4F40A0CB22DB8B28F109159C29C3F104 + 7E25B2E0D41823DBCFFB83B5C7397EDF45E69F1EFFC017601DA00B749ACB4E2C + FF90FDC37FB72B11F8473CDFDE678AFC5920D8BE1DF125CCF11AD2FA7EC33A24 + 56702637AA038C693CBEC6E1BD1F1BFA333CDFC03A571063F391A1804ED0BD51 + 9CC4C8F10D489547A9CCF5F5E6CA2579D43443E21B60CE1C8FE7BBC737DEAF5B + 5889C5E319F7AB717E55B86ABD77646805D6CEF3AB22546C31651CAE15DFBDBC + 72FDBE04C6C063D06DDEFB0A8EFC922BA1B53272FCE9A1393EBF80988225F13D + CD931EC5FAD296EA8CCC85B04FDC7C6509CE618BFD4EC135E0AB4007E80A127A + FDA7B571C9B98C433FC336E4C79732270CF9B08F2BA626C33996EA0C157AFDCA + 92F5D8D83EEFC8EF5982EFB0CF92D80B98C086D83D44E89961916F96D26AC96B + F3D7D6F55BF48E0C606A73074BF9D807FBE2F1BC24BA938640922AB94BCC1C3F + 5F47F11962AF9F86647953C802FB1CC5B785B8F824BEC0AB0FCA0E15CC24F2E6 + 0CCA1F19E6D28E1260FF3F1AA00190 } end object JvTFDaysPrinter1: TJvTFDaysPrinter diff --git a/components/jvcllaz/examples/JvTimeFramework/tfmain.pas b/components/jvcllaz/examples/JvTimeFramework/tfmain.pas index b5490296c..bdd118f42 100644 --- a/components/jvcllaz/examples/JvTimeFramework/tfmain.pas +++ b/components/jvcllaz/examples/JvTimeFramework/tfmain.pas @@ -51,6 +51,7 @@ type IconsProvidedLabel: TLabel; IconsLink: TLabel; Panel2: TPanel; + SettingsButton: TBitBtn; PrintDialog: TPrintDialog; utfScheduleManager1: TJvTFScheduleManager; StateImageList: TImageList; @@ -87,11 +88,13 @@ type dbUTF: TSQLite3Connection; SQLTransaction: TSQLTransaction; + procedure FormDestroy(Sender: TObject); procedure IconsLinkClick(Sender: TObject); procedure IconsLinkMouseEnter(Sender: TObject); procedure IconsLinkMouseLeave(Sender: TObject); procedure ModeComboChange(Sender: TObject); + procedure SettingsButtonClick(Sender: TObject); procedure ViewSchedsButtonClick(Sender: TObject); procedure HideSchedButtonClick(Sender: TObject); procedure ResourceComboChange(Sender: TObject); @@ -133,6 +136,10 @@ type private { Private declarations } + procedure ApplySettings; + procedure ReadIni; + procedure WriteIni; + public { Public declarations } end; @@ -143,10 +150,20 @@ var implementation uses - tfVisibleResources, tfShare, tfApptEdit, tfPrintProgress; + IniFiles, + tfVisibleResources, tfShare, tfApptEdit, tfPrintProgress, tfSettings; {$R *.lfm} +procedure TMainForm.ApplySettings; +begin + with GlobalSettings do begin + JvTFDays1.FancyRowHdrAttr.Hr2400 := Hr2400; + JvTFDays1.SelFancyRowHdrAttr.Hr2400 := Hr2400; + JvTFDaysPrinter1.FancyRowHdrAttr.Hr2400 := Hr2400; + end; +end; + procedure TMainForm.utfScheduleManager1PostAppt(Sender: TObject; Appt: TJvTFAppt); var @@ -338,6 +355,12 @@ begin JvTFMonths1.Refresh; end; +procedure TMainForm.SettingsButtonClick(Sender: TObject); +begin + if SettingsForm.ShowModal = mrOK then + ApplySettings; +end; + procedure TMainForm.DaysComboChange(Sender: TObject); begin Case DaysCombo.ItemIndex of @@ -715,10 +738,42 @@ procedure TMainForm.FormCreate(Sender: TObject); var fn: String; begin + ReadIni; + fn := Application.Location + 'data.sqlite'; dbUTF.DatabaseName := fn; dbUTF.Connected := FileExists(fn); end; +procedure TMainForm.FormDestroy(Sender: TObject); +begin + WriteIni; +end; + +procedure TMainForm.ReadIni; +var + ini: TCustomIniFile; +begin + ini := TMemIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')); + try + GlobalSettings.Hr2400 := ini.ReadBool('Settings', 'Hr2400', GlobalSettings.Hr2400); + ApplySettings; + finally + ini.Free; + end; +end; + +procedure TMainForm.WriteIni; +var + ini: TCustomIniFile; +begin + ini := TMemIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')); + try + ini.WriteBool('Settings', 'Hr2400', GlobalSettings.Hr2400); + finally + ini.Free; + end; +end; + end. diff --git a/components/jvcllaz/examples/JvTimeFramework/tfsettings.lfm b/components/jvcllaz/examples/JvTimeFramework/tfsettings.lfm new file mode 100644 index 000000000..e153b767e --- /dev/null +++ b/components/jvcllaz/examples/JvTimeFramework/tfsettings.lfm @@ -0,0 +1,71 @@ +object SettingsForm: TSettingsForm + Left = 548 + Height = 299 + Top = 283 + Width = 403 + Caption = 'SettingsForm' + ClientHeight = 299 + ClientWidth = 403 + OnClose = FormClose + OnShow = FormShow + LCLVersion = '2.1.0.0' + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 34 + Top = 259 + Width = 391 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + OKButton.OnClick = OKButtonClick + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 0 + ShowButtons = [pbOK, pbCancel] + end + object Panel1: TPanel + Left = 0 + Height = 253 + Top = 0 + Width = 403 + Align = alClient + BevelOuter = bvNone + ClientHeight = 253 + ClientWidth = 403 + TabOrder = 1 + object cbTimeFormat: TComboBox + AnchorSideTop.Control = Panel1 + Left = 132 + Height = 23 + Top = 8 + Width = 124 + BorderSpacing.Top = 8 + ItemHeight = 15 + ItemIndex = 1 + Items.Strings = ( + '24 hours' + '12 hours am/pm' + ) + Style = csDropDownList + TabOrder = 0 + Text = '12 hours am/pm' + end + object lblTimeFormat: TLabel + AnchorSideTop.Control = cbTimeFormat + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = cbTimeFormat + Left = 59 + Height = 15 + Top = 12 + Width = 65 + Anchors = [akTop, akRight] + BorderSpacing.Right = 8 + Caption = 'Time format' + FocusControl = cbTimeFormat + ParentColor = False + end + end +end diff --git a/components/jvcllaz/examples/JvTimeFramework/tfsettings.pas b/components/jvcllaz/examples/JvTimeFramework/tfsettings.pas new file mode 100644 index 000000000..824978b0a --- /dev/null +++ b/components/jvcllaz/examples/JvTimeFramework/tfsettings.pas @@ -0,0 +1,77 @@ +unit tfSettings; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ButtonPanel, StdCtrls, + ExtCtrls, JvTFDays; + +type + TGlobalSettings = record + Hr2400: Boolean; + end; + + { TSettingsForm } + + TSettingsForm = class(TForm) + ButtonPanel1: TButtonPanel; + cbTimeFormat: TComboBox; + lblTimeFormat: TLabel; + Panel1: TPanel; + procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormShow(Sender: TObject); + procedure OKButtonClick(Sender: TObject); + private + FOKPressed: Boolean; + procedure ControlsToSettings; + procedure SettingsToControls; + + end; + +var + SettingsForm: TSettingsForm; + + GlobalSettings: TGlobalSettings = ( + Hr2400: false + ); + +implementation + +{$R *.lfm} + +procedure TSettingsForm.ControlsToSettings; +begin + GlobalSettings.Hr2400 := cbTimeFormat.ItemIndex = 0; +end; + +procedure TSettingsForm.SettingsToControls; +begin + if GlobalSettings.Hr2400 then + cbTimeFormat.ItemIndex := 0 + else + cbTimeFormat.ItemIndex := 1; +end; + +procedure TSettingsForm.FormClose(Sender: TObject; + var CloseAction: TCloseAction); +begin + if FOKPressed then + ControlsToSettings; +end; + +procedure TSettingsForm.FormShow(Sender: TObject); +begin + FOKPressed := false; + SettingsToControls; +end; + +procedure TSettingsForm.OKButtonClick(Sender: TObject); +begin + FOKPressed := true; +end; + + +end. +