diff --git a/components/tvplanit/languages/vpsr.de.po b/components/tvplanit/languages/vpsr.de.po index 63c2d9dd4..15ad0596b 100644 --- a/components/tvplanit/languages/vpsr.de.po +++ b/components/tvplanit/languages/vpsr.de.po @@ -1068,6 +1068,10 @@ msgstr "Rechteck" msgid "Repeat until:" msgstr "Wiederholen bis:" +#: vpsr.rsrecurrenceforever +msgid "Repeat forever" +msgstr "Endlos" + #: vpsr.rsrecurringlbl msgid "Appointment recurrence:" msgstr "Termin-Wiederholung:" @@ -1683,4 +1687,3 @@ msgstr "Unbekannte Achsen-Spezifikation: %s" #: vpsr.sxmldecnotatbeg msgid "The XML declaration must appear before the first element" msgstr "Die XML-Deklaration muss vor dem ersten Element erscheinen" - diff --git a/components/tvplanit/languages/vpsr.en.po b/components/tvplanit/languages/vpsr.en.po index f72198e51..18632427b 100644 --- a/components/tvplanit/languages/vpsr.en.po +++ b/components/tvplanit/languages/vpsr.en.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.1\n" #: vpsr.rs1day msgid "1 day" @@ -1054,6 +1054,10 @@ msgstr "rectangle" msgid "Repeat until:" msgstr "Repeat until:" +#: vpsr.rsrecurrenceforever +msgid "Repeat forever" +msgstr "Repeat forever" + #: vpsr.rsrecurringlbl msgid "Appointment recurrence:" msgstr "Appointment recurrence:" @@ -1664,4 +1668,3 @@ msgstr "Unknown axis specifier: %s" #: vpsr.sxmldecnotatbeg msgid "The XML declaration must appear before the first element" msgstr "The XML declaration must appear before the first element" - diff --git a/components/tvplanit/languages/vpsr.fi.po b/components/tvplanit/languages/vpsr.fi.po index d88c79f92..d7fa3eff2 100644 --- a/components/tvplanit/languages/vpsr.fi.po +++ b/components/tvplanit/languages/vpsr.fi.po @@ -1059,6 +1059,10 @@ msgstr "" msgid "Repeat until:" msgstr "" +#: vpsr.rsrecurrenceforever +msgid "Repeat forever" +msgstr "" + #: vpsr.rsrecurringlbl msgid "Appointment recurrence:" msgstr "" diff --git a/components/tvplanit/languages/vpsr.fr.po b/components/tvplanit/languages/vpsr.fr.po index a489122a8..128939646 100644 --- a/components/tvplanit/languages/vpsr.fr.po +++ b/components/tvplanit/languages/vpsr.fr.po @@ -1074,6 +1074,10 @@ msgstr "" msgid "Repeat until:" msgstr "Répétez jusqu'au" +#: vpsr.rsrecurrenceforever +msgid "Repeat forever" +msgstr "" + #: vpsr.rsrecurringlbl msgid "Appointment recurrence:" msgstr "Rendevous à répéter:" diff --git a/components/tvplanit/languages/vpsr.nl.po b/components/tvplanit/languages/vpsr.nl.po index 8e6ab4208..61049318d 100644 --- a/components/tvplanit/languages/vpsr.nl.po +++ b/components/tvplanit/languages/vpsr.nl.po @@ -1068,6 +1068,10 @@ msgstr "" msgid "Repeat until:" msgstr "Herhalen totdat:" +#: vpsr.rsrecurrenceforever +msgid "Repeat forever" +msgstr "" + #: vpsr.rsrecurringlbl msgid "Appointment recurrence:" msgstr "Afspraak herhaling:" diff --git a/components/tvplanit/languages/vpsr.pl.po b/components/tvplanit/languages/vpsr.pl.po index b420145fd..d6b21c1fa 100644 --- a/components/tvplanit/languages/vpsr.pl.po +++ b/components/tvplanit/languages/vpsr.pl.po @@ -1067,6 +1067,10 @@ msgstr "prostokąt" msgid "Repeat until:" msgstr "Powtarzaj do:" +#: vpsr.rsrecurrenceforever +msgid "Repeat forever" +msgstr "" + #: vpsr.rsrecurringlbl msgid "Appointment recurrence:" msgstr "Częstotliwość:" diff --git a/components/tvplanit/languages/vpsr.pot b/components/tvplanit/languages/vpsr.pot index e589913f2..59b2d2eca 100644 --- a/components/tvplanit/languages/vpsr.pot +++ b/components/tvplanit/languages/vpsr.pot @@ -1044,6 +1044,10 @@ msgstr "" msgid "Repeat until:" msgstr "" +#: vpsr.rsrecurrenceforever +msgid "Repeat forever" +msgstr "" + #: vpsr.rsrecurringlbl msgid "Appointment recurrence:" msgstr "" diff --git a/components/tvplanit/languages/vpsr.ru.po b/components/tvplanit/languages/vpsr.ru.po index ddfd3ed5d..3f1752a13 100644 --- a/components/tvplanit/languages/vpsr.ru.po +++ b/components/tvplanit/languages/vpsr.ru.po @@ -1068,6 +1068,10 @@ msgstr "" msgid "Repeat until:" msgstr "Повторять до:" +#: vpsr.rsrecurrenceforever +msgid "Repeat forever" +msgstr "" + #: vpsr.rsrecurringlbl msgid "Appointment recurrence:" msgstr "Повторение встречи:" diff --git a/components/tvplanit/source/include/vpsr.inc b/components/tvplanit/source/include/vpsr.inc index a131d6d74..783283f9f 100644 --- a/components/tvplanit/source/include/vpsr.inc +++ b/components/tvplanit/source/include/vpsr.inc @@ -253,6 +253,7 @@ resourcestring RSRecurringLbl = 'Appointment recurrence:'; RSIntervalLbl = 'Interval (days):'; RSRecurrenceEndsLbl = 'Repeat until:'; + RSRecurrenceForever = 'Repeat forever'; RSAllDayEvent = '&All Day Event'; RSNotesLbl = 'Notes:'; diff --git a/components/tvplanit/source/vpconst.pas b/components/tvplanit/source/vpconst.pas index 9231764de..057d61715 100644 --- a/components/tvplanit/source/vpconst.pas +++ b/components/tvplanit/source/vpconst.pas @@ -289,6 +289,8 @@ const LineEnding2 = LineEnding + LineEnding; + FOREVER_DATE = 999999; + implementation diff --git a/components/tvplanit/source/vpevnteditdlg.lfm b/components/tvplanit/source/vpevnteditdlg.lfm index 1f2918607..b730faad5 100644 --- a/components/tvplanit/source/vpevnteditdlg.lfm +++ b/components/tvplanit/source/vpevnteditdlg.lfm @@ -1,27 +1,26 @@ object DlgEventEdit: TDlgEventEdit Left = 255 - Height = 532 + Height = 500 Top = 202 - Width = 765 + Width = 731 AutoSize = True BorderStyle = bsToolWindow Caption = 'Add / Edit Events' - ClientHeight = 532 - ClientWidth = 765 + ClientHeight = 500 + ClientWidth = 731 OnCreate = FormCreate OnShow = FormShow Position = poScreenCenter - LCLVersion = '1.9.0.0' object ButtonPanel: TPanel Left = 0 Height = 37 - Top = 495 - Width = 765 + Top = 463 + Width = 731 Align = alBottom AutoSize = True BevelOuter = bvNone ClientHeight = 37 - ClientWidth = 765 + ClientWidth = 731 TabOrder = 1 object ResourceNameLbl: TLabel AnchorSideLeft.Control = ButtonPanel @@ -33,6 +32,7 @@ object DlgEventEdit: TDlgEventEdit Width = 88 BorderSpacing.Left = 12 Caption = 'Resource Name' + Color = clDefault Font.CharSet = ANSI_CHARSET Font.Color = clMaroon Font.Style = [fsBold] @@ -40,7 +40,7 @@ object DlgEventEdit: TDlgEventEdit ParentFont = False end object OKBtn: TButton - Left = 616 + Left = 582 Height = 25 Top = 6 Width = 66 @@ -54,7 +54,7 @@ object DlgEventEdit: TDlgEventEdit TabOrder = 0 end object CancelBtn: TButton - Left = 688 + Left = 654 Height = 25 Top = 6 Width = 71 @@ -70,27 +70,27 @@ object DlgEventEdit: TDlgEventEdit end object Panel1: TPanel Left = 12 - Height = 483 + Height = 451 Top = 12 - Width = 741 + Width = 707 Align = alClient BorderSpacing.Left = 12 BorderSpacing.Top = 12 BorderSpacing.Right = 12 BevelOuter = bvNone - ClientHeight = 483 - ClientWidth = 741 + ClientHeight = 451 + ClientWidth = 707 TabOrder = 0 object AppointmentGroupBox: TGroupBox Left = 0 Height = 239 Top = 0 - Width = 741 + Width = 707 Align = alTop AutoSize = True Caption = 'Appointment' ClientHeight = 219 - ClientWidth = 737 + ClientWidth = 703 TabOrder = 0 object Bevel1: TBevel AnchorSideLeft.Control = AppointmentGroupBox @@ -101,7 +101,7 @@ object DlgEventEdit: TDlgEventEdit Left = 12 Height = 3 Top = 64 - Width = 681 + Width = 679 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 12 BorderSpacing.Top = 12 @@ -116,7 +116,7 @@ object DlgEventEdit: TDlgEventEdit Left = 12 Height = 3 Top = 167 - Width = 681 + Width = 679 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 12 BorderSpacing.Top = 12 @@ -126,7 +126,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Control = DescriptionEdit AnchorSideTop.Side = asrCenter AnchorSideRight.Control = DescriptionEdit - Left = 71 + Left = 69 Height = 15 Top = 4 Width = 63 @@ -134,6 +134,7 @@ object DlgEventEdit: TDlgEventEdit BorderSpacing.Left = 12 BorderSpacing.Right = 8 Caption = 'Description:' + Color = clDefault ParentColor = False end object DescriptionEdit: TEdit @@ -141,7 +142,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Control = AppointmentGroupBox AnchorSideRight.Control = IntervalUpDown AnchorSideRight.Side = asrBottom - Left = 142 + Left = 140 Height = 23 Top = 0 Width = 551 @@ -153,13 +154,14 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Control = LocationEdit AnchorSideTop.Side = asrCenter AnchorSideRight.Control = LocationEdit - Left = 85 + Left = 83 Height = 15 Top = 33 Width = 49 Anchors = [akTop, akRight] BorderSpacing.Right = 8 Caption = 'Location:' + Color = clDefault FocusControl = LocationEdit ParentColor = False end @@ -169,7 +171,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Bevel3 AnchorSideRight.Side = asrBottom - Left = 142 + Left = 140 Height = 23 Top = 29 Width = 214 @@ -183,13 +185,14 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Control = Category AnchorSideTop.Side = asrCenter AnchorSideRight.Control = Category - Left = 377 + Left = 375 Height = 15 Top = 33 Width = 51 BorderSpacing.Left = 12 BorderSpacing.Right = 12 Caption = 'Category:' + Color = clDefault ParentColor = False end object Category: TComboBox @@ -199,7 +202,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Side = asrBottom AnchorSideRight.Control = DescriptionEdit AnchorSideRight.Side = asrBottom - Left = 440 + Left = 438 Height = 23 Top = 29 Width = 253 @@ -315,7 +318,7 @@ object DlgEventEdit: TDlgEventEdit Left = 60 Height = 19 Top = 76 - Width = 89 + Width = 87 BorderSpacing.Left = 12 Caption = 'All Day Event' OnClick = CBAllDayClick @@ -325,7 +328,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Control = StartDate AnchorSideTop.Side = asrCenter AnchorSideRight.Control = StartDate - Left = 80 + Left = 78 Height = 15 Top = 105 Width = 54 @@ -333,6 +336,7 @@ object DlgEventEdit: TDlgEventEdit Anchors = [akTop, akRight] BorderSpacing.Right = 8 Caption = 'Start time:' + Color = clDefault ParentColor = False end object EndTimeLbl: TLabel @@ -340,7 +344,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Control = EndDate AnchorSideTop.Side = asrCenter AnchorSideRight.Control = EndDate - Left = 84 + Left = 82 Height = 15 Top = 136 Width = 50 @@ -348,13 +352,14 @@ object DlgEventEdit: TDlgEventEdit Anchors = [akTop, akRight] BorderSpacing.Right = 8 Caption = 'End time:' + Color = clDefault ParentColor = False end object StartDate: TDateEdit AnchorSideLeft.Control = AlarmAdvance AnchorSideTop.Control = CBAllDay AnchorSideTop.Side = asrBottom - Left = 142 + Left = 140 Height = 23 Top = 101 Width = 102 @@ -409,7 +414,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Side = asrBottom AnchorSideRight.Control = StartDate AnchorSideRight.Side = asrBottom - Left = 142 + Left = 140 Height = 23 Top = 132 Width = 102 @@ -464,7 +469,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Control = CBAllDay AnchorSideBottom.Control = EndDate AnchorSideBottom.Side = asrBottom - Left = 365 + Left = 363 Height = 79 Top = 76 Width = 3 @@ -476,7 +481,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideLeft.Control = Bevel3 AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = imgClock - Left = 384 + Left = 382 Height = 32 Top = 76 Width = 32 @@ -542,12 +547,13 @@ object DlgEventEdit: TDlgEventEdit AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = CBAllDay AnchorSideTop.Side = asrCenter - Left = 428 + Left = 426 Height = 15 Top = 78 Width = 136 BorderSpacing.Left = 12 Caption = 'Appointment Recurrence:' + Color = clDefault ParentColor = False end object RecurringType: TComboBox @@ -555,7 +561,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Control = StartDate AnchorSideRight.Control = RecurringLbl AnchorSideRight.Side = asrBottom - Left = 428 + Left = 426 Height = 23 Top = 101 Width = 136 @@ -565,91 +571,26 @@ object DlgEventEdit: TDlgEventEdit Style = csDropDownList TabOrder = 8 end - object RepeatUntil: TDateEdit - AnchorSideTop.Control = EndDate - AnchorSideRight.Control = IntervalUpDown - AnchorSideRight.Side = asrBottom - Left = 531 - Height = 23 - Top = 132 - Width = 162 - CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames] - DateOrder = doNone - ButtonWidth = 23 - Anchors = [akTop, akRight] - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D69E - 72C4D3996EF4D19668FFCE9263FFCB8E5EFFC98A5BFFC78756FFC38452FFC384 - 52FFC38452FFC38452FFC38452FFC38452FFBB7742B0FFFFFF00FFFFFF00D7A1 - 75FFF8F2EDFFF7F0EAFFF6EDE6FFF4EAE2FFF3E7DEFFF1E4DBFFF0E2D8FFEAD6 - C8FFF2E5DCFFFAF4F1FFF9F3F0FFFAF5F2FFC58A5DFDFFFFFF00FFFFFF00D9A4 - 7AFFF9F3EEFFEBD2BEFFFFFFFFFFEBD3BFFFFFFFFFFFEBD3C0FFFFFFFFFFEAC7 - ADFFECD9CDFFF1E4DBFFF9F3F0FFF9F2EFFFC68C5FFFFFFFFF00FFFFFF00DDA8 - 7EFFF9F3EFFFEBD0BAFFEBD0BBFF75B57AFF75B57AFF75B57AFFEBD1BDFFEACD - B5FFFAF4F0FFEBD9CCFFF1E4DBFFFAF4F1FFC68A5CFFFFFFFF00FFFFFF00DFAA - 82FFF9F3EFFFEACEB7FFFFFFFFFF75B57AFF94D49BFF74B579FFFFFFFFFFEACF - BAFFFBF6F2FFFAF3F0FFEBD8CBFFF2E6DDFFC88D5FFFFFFFFF00FFFFFF00E1AE - 87FFFAF4F0FFEACBB2FFEACCB3FF75B57AFF74B579FF73B478FFEACEB7FF70B3 - 75FF6FB274FF6EB172FFE8C8AEFFEAD7C9FFC48654FFFFFFFF00FFFFFF00E3B1 - 8CFFFAF6F1FFEAC9AEFFFFFFFFFFEAC9B0FFFFFFFFFFE9CBB3FFFFFFFFFF6FB1 - 73FF8ED295FF6BAF6FFFFFFFFFFFF1E5DBFFC68655FFFFFFFF00FFFFFF00E5B4 - 8FFFFAF6F2FFE9C6AAFFE9C6ACFFEAC7ACFFE9C7ADFFE9C9AEFFE9C9B0FF6CB0 - 71FF6AAF6EFF68AD6DFFE8CCB5FFF2E7DEFFC88A59FFFFFFFF00FFFFFF00E7B7 - 94FFFBF7F4FFE9C3A6FFFFFFFFFFE8C4A9FFFFFFFFFFE9C6AAFFFFFFFFFFE8C7 - ACFFFFFFFFFFE8C8B0FFFFFFFFFFF7F1EBFFCB8F5FFFFFFFFF00FFFFFF00E9BA - 98FFFBF7F4FF65A4FFFF64A3FFFF62A2FFFF61A1FFFF5F9FFFFF5C9DFFFF5A9A - FFFF5798FFFF5495FFFF5294FFFFFBF7F4FFCE9364FFFFFFFF00FFFFFF00EBBD - 9BFFFBF7F4FF64A4FFFF79BDFFFF75BBFFFF71B9FFFF6DB8FFFF68B3FFFF61B0 - FFFF5AABFFFF54A7FFFF3B7DFFFFFBF7F4FFD1976AFFFFFFFF00FFFFFF00ECBF - 9EFFFBF7F4FF65A4FFFF64A3FFFF60A0FFFF5D9EFFFF5899FFFF5496FFFF4D90 - FFFF478BFFFF4284FFFF3D7FFFFFFBF7F4FFD49B6FFFFFFFFF00FFFFFF00EEC1 - A1EBFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7 - F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFD7A074F8FFFFFF00FFFFFF00EFC2 - A37EEFC1A2E3EDC09FFFEBBE9DFFEBBC9AFFE9BA96FFE7B793FFE6B590FFE4B2 - 8CFFE2AF88FFE0AC84FFDDA980FFDCA57DFFDAA37ACAFFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 - } - NumGlyphs = 1 - MaxLength = 0 - TabOrder = 11 - end - object RecurrenceEndsLbl: TLabel - AnchorSideTop.Control = RepeatUntil - AnchorSideTop.Side = asrCenter - AnchorSideRight.Control = RepeatUntil - Left = 491 - Height = 15 - Top = 136 - Width = 28 - Alignment = taRightJustify - Anchors = [akTop, akRight] - BorderSpacing.Right = 12 - Caption = 'Until:' - ParentColor = False - end object IntervalLbl: TLabel AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = RecurringLbl AnchorSideRight.Control = IntervalUpDown AnchorSideRight.Side = asrBottom - Left = 616 + Left = 614 Height = 15 Top = 78 Width = 77 Anchors = [akTop, akRight] BorderSpacing.Left = 36 Caption = 'Interval (days):' + Color = clDefault ParentColor = False end object CustomInterval: TEdit AnchorSideLeft.Control = RecurringType AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = StartDate - Left = 572 + Left = 570 Height = 23 Top = 101 Width = 106 @@ -664,7 +605,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideLeft.Control = CustomInterval AnchorSideLeft.Side = asrBottom AnchorSideRight.Side = asrBottom - Left = 681 + Left = 679 Height = 23 Top = 101 Width = 12 @@ -764,7 +705,7 @@ object DlgEventEdit: TDlgEventEdit Left = 60 Height = 19 Top = 180 - Width = 74 + Width = 72 BorderSpacing.Left = 12 BorderSpacing.Right = 8 Caption = '&Reminder:' @@ -778,7 +719,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Side = asrBottom AnchorSideRight.Control = AdvanceUpDown AnchorSideRight.Side = asrBottom - Left = 142 + Left = 140 Height = 23 Top = 178 Width = 77 @@ -793,7 +734,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Side = asrCenter AnchorSideRight.Control = StartDate AnchorSideRight.Side = asrBottom - Left = 232 + Left = 230 Height = 23 Top = 178 Width = 12 @@ -810,7 +751,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = AlarmAdvance AnchorSideTop.Side = asrCenter - Left = 256 + Left = 254 Height = 23 Top = 178 Width = 93 @@ -825,7 +766,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Control = AlarmAdvanceType AnchorSideBottom.Control = AlarmAdvanceType AnchorSideBottom.Side = asrBottom - Left = 365 + Left = 363 Height = 23 Top = 178 Width = 24 @@ -849,7 +790,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Control = EndDate AnchorSideRight.Control = AlarmAdvanceType AnchorSideRight.Side = asrBottom - Left = 256 + Left = 254 Height = 23 Top = 132 Width = 93 @@ -864,7 +805,7 @@ object DlgEventEdit: TDlgEventEdit AnchorSideTop.Control = StartDate AnchorSideRight.Control = AlarmAdvanceType AnchorSideRight.Side = asrBottom - Left = 256 + Left = 254 Height = 23 Top = 101 Width = 93 @@ -873,12 +814,107 @@ object DlgEventEdit: TDlgEventEdit TabOrder = 5 Text = 'StartTimePlaceholder' end + object Panel2: TPanel + AnchorSideLeft.Control = ImgRecurring + AnchorSideTop.Control = RecurringType + AnchorSideTop.Side = asrBottom + Left = 382 + Height = 23 + Top = 132 + Width = 286 + AutoSize = True + BorderSpacing.Top = 8 + BorderSpacing.Right = 12 + BevelOuter = bvNone + ClientHeight = 23 + ClientWidth = 286 + TabOrder = 11 + object RepeatUntil: TDateEdit + AnchorSideLeft.Control = rbRepeatUntil + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = Panel2 + AnchorSideRight.Side = asrBottom + Left = 93 + Height = 23 + Top = 0 + Width = 114 + CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames] + DateOrder = doNone + ButtonWidth = 23 + BorderSpacing.Left = 12 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D69E + 72C4D3996EF4D19668FFCE9263FFCB8E5EFFC98A5BFFC78756FFC38452FFC384 + 52FFC38452FFC38452FFC38452FFC38452FFBB7742B0FFFFFF00FFFFFF00D7A1 + 75FFF8F2EDFFF7F0EAFFF6EDE6FFF4EAE2FFF3E7DEFFF1E4DBFFF0E2D8FFEAD6 + C8FFF2E5DCFFFAF4F1FFF9F3F0FFFAF5F2FFC58A5DFDFFFFFF00FFFFFF00D9A4 + 7AFFF9F3EEFFEBD2BEFFFFFFFFFFEBD3BFFFFFFFFFFFEBD3C0FFFFFFFFFFEAC7 + ADFFECD9CDFFF1E4DBFFF9F3F0FFF9F2EFFFC68C5FFFFFFFFF00FFFFFF00DDA8 + 7EFFF9F3EFFFEBD0BAFFEBD0BBFF75B57AFF75B57AFF75B57AFFEBD1BDFFEACD + B5FFFAF4F0FFEBD9CCFFF1E4DBFFFAF4F1FFC68A5CFFFFFFFF00FFFFFF00DFAA + 82FFF9F3EFFFEACEB7FFFFFFFFFF75B57AFF94D49BFF74B579FFFFFFFFFFEACF + BAFFFBF6F2FFFAF3F0FFEBD8CBFFF2E6DDFFC88D5FFFFFFFFF00FFFFFF00E1AE + 87FFFAF4F0FFEACBB2FFEACCB3FF75B57AFF74B579FF73B478FFEACEB7FF70B3 + 75FF6FB274FF6EB172FFE8C8AEFFEAD7C9FFC48654FFFFFFFF00FFFFFF00E3B1 + 8CFFFAF6F1FFEAC9AEFFFFFFFFFFEAC9B0FFFFFFFFFFE9CBB3FFFFFFFFFF6FB1 + 73FF8ED295FF6BAF6FFFFFFFFFFFF1E5DBFFC68655FFFFFFFF00FFFFFF00E5B4 + 8FFFFAF6F2FFE9C6AAFFE9C6ACFFEAC7ACFFE9C7ADFFE9C9AEFFE9C9B0FF6CB0 + 71FF6AAF6EFF68AD6DFFE8CCB5FFF2E7DEFFC88A59FFFFFFFF00FFFFFF00E7B7 + 94FFFBF7F4FFE9C3A6FFFFFFFFFFE8C4A9FFFFFFFFFFE9C6AAFFFFFFFFFFE8C7 + ACFFFFFFFFFFE8C8B0FFFFFFFFFFF7F1EBFFCB8F5FFFFFFFFF00FFFFFF00E9BA + 98FFFBF7F4FF65A4FFFF64A3FFFF62A2FFFF61A1FFFF5F9FFFFF5C9DFFFF5A9A + FFFF5798FFFF5495FFFF5294FFFFFBF7F4FFCE9364FFFFFFFF00FFFFFF00EBBD + 9BFFFBF7F4FF64A4FFFF79BDFFFF75BBFFFF71B9FFFF6DB8FFFF68B3FFFF61B0 + FFFF5AABFFFF54A7FFFF3B7DFFFFFBF7F4FFD1976AFFFFFFFF00FFFFFF00ECBF + 9EFFFBF7F4FF65A4FFFF64A3FFFF60A0FFFF5D9EFFFF5899FFFF5496FFFF4D90 + FFFF478BFFFF4284FFFF3D7FFFFFFBF7F4FFD49B6FFFFFFFFF00FFFFFF00EEC1 + A1EBFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7 + F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFD7A074F8FFFFFF00FFFFFF00EFC2 + A37EEFC1A2E3EDC09FFFEBBE9DFFEBBC9AFFE9BA96FFE7B793FFE6B590FFE4B2 + 8CFFE2AF88FFE0AC84FFDDA980FFDCA57DFFDAA37ACAFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 1 + MaxLength = 0 + TabOrder = 1 + end + object rbRepeatUntil: TRadioButton + AnchorSideLeft.Control = Panel2 + AnchorSideTop.Control = RepeatUntil + AnchorSideTop.Side = asrCenter + Left = 0 + Height = 19 + Top = 2 + Width = 81 + Caption = 'Repeat until' + Checked = True + TabOrder = 0 + TabStop = True + end + object rbRepeatForever: TRadioButton + AnchorSideLeft.Control = RepeatUntil + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = RepeatUntil + AnchorSideTop.Side = asrCenter + Left = 231 + Height = 19 + Top = 2 + Width = 55 + BorderSpacing.Left = 24 + Caption = 'forever' + TabOrder = 2 + end + end end object NotesMemo: TMemo Left = 0 - Height = 232 + Height = 200 Top = 251 - Width = 741 + Width = 707 Align = alClient Constraints.MinHeight = 200 ScrollBars = ssVertical @@ -888,13 +924,13 @@ object DlgEventEdit: TDlgEventEdit Left = 0 Height = 12 Top = 239 - Width = 741 + Width = 707 Align = alTop Shape = bsSpacer end end object FileDialog: TOpenDialog - left = 440 - top = 352 + Left = 440 + Top = 352 end end diff --git a/components/tvplanit/source/vpevnteditdlg.pas b/components/tvplanit/source/vpevnteditdlg.pas index 0bba26c1c..8df15f8fe 100644 --- a/components/tvplanit/source/vpevnteditdlg.pas +++ b/components/tvplanit/source/vpevnteditdlg.pas @@ -72,6 +72,9 @@ type TDlgEventEdit = class(TForm) AlarmAdvance: TEdit; Bevel4: TBevel; + Panel2: TPanel; + rbRepeatForever: TRadioButton; + rbRepeatUntil: TRadioButton; StartTimePlaceholder: TEdit; EndTimePlaceholder: TEdit; LocationEdit: TEdit; @@ -111,7 +114,6 @@ type CBAllDay: TCheckBox; CustomInterval: TEdit; imgClock: TImage; - RecurrenceEndsLbl: TLabel; procedure AdvanceUpDownClick(Sender: TObject; Button: TUDBtnType); procedure AlarmAdvanceChange(Sender: TObject); procedure AlarmSetClick(Sender: TObject); @@ -417,6 +419,7 @@ end; procedure TDlgEventEdit.PopulateDialog; var I: Integer; + d: TDate; begin { Resource } ResourceNameLbl.Caption := Resource.Description; @@ -424,7 +427,16 @@ begin { Events } StartDate.Date := trunc(Event.StartTime); EndDate.Date := trunc(Event.EndTime); - RepeatUntil.Date := trunc(Event.RepeatRangeEnd); + d := trunc(Event.RepeatRangeEnd); + if d = FOREVER_DATE then + begin + RepeatUntil.Text := ''; + rbRepeatForever.Checked := true; + end else + begin + RepeatUntil.Date := d; + rbRepeatUntil.Checked := true; + end; {$IFDEF NEW_TIME_EDIT} StartTime.Time := frac(Event.StartTime); EndTime.Time := frac(Event.EndTime); @@ -476,7 +488,10 @@ begin Event.StartTime := StartDate.Date + StrToTime(StartTime.Text); Event.EndTime := EndDate.Date + StrToTime(EndTime.Text); {$ENDIF} - Event.RepeatRangeEnd := RepeatUntil.Date; + if rbRepeatForever.Checked then + Event.RepeatRangeEnd := FOREVER_DATE + else + Event.RepeatRangeEnd := RepeatUntil.Date; Event.Description := DescriptionEdit.Text; Event.Location := LocationEdit.Text; Event.Notes := NotesMemo.Text; @@ -563,7 +578,8 @@ begin AlarmSet.Caption := RSAlarmSet; RecurringLbl.Caption := RSRecurringLbl; IntervalLbl.Caption := RSIntervalLbl; - RecurrenceEndsLbl.Caption := RSRecurrenceEndsLbl; + rbRepeatUntil.Caption := RSRecurrenceEndsLbl; + rbRepeatForever.Caption := RSRecurrenceForever; CBAllDay.Caption := RSAllDayEvent; end; {=====} @@ -627,7 +643,6 @@ begin Unused(Button); CustomInterval.Text := IntToStr(IntervalUpDown.Position); end; -{=====} procedure TDlgEventEdit.RecurringTypeChange(Sender: TObject); begin @@ -636,8 +651,9 @@ begin then RepeatUntil.Date := StartDate.Date + 365; - RecurrenceEndsLbl.Enabled := (RecurringType.ItemIndex > 0); - RepeatUntil.Enabled := RecurrenceEndsLbl.Enabled; + rbRepeatUntil.Enabled := (RecurringType.ItemIndex > 0); + rbRepeatForever.Enabled := rbRepeatUntil.Enabled; + RepeatUntil.Enabled := rbRepeatUntil.Enabled and (not rbRepeatForever.Checked); CustomInterval.Enabled := RecurringType.ItemIndex = ord(rtCustom); IntervalLbl.Enabled := CustomInterval.Enabled; @@ -648,7 +664,6 @@ begin CustomInterval.SetFocus; end; end; -{=====} procedure TDlgEventEdit.AlarmSetClick(Sender: TObject); begin