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