From 9b5d03f6877f72364a6c1b0b1a38d369673bdbfb Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Wed, 22 Jun 2016 20:19:35 +0000 Subject: [PATCH] tvplant: More features in demo project. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4805 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../tvplanit/examples/demo/demomain.lfm | 1212 ++++++++++++----- .../tvplanit/examples/demo/demomain.lrt | 24 +- .../tvplanit/examples/demo/demomain.pas | 455 +++++-- components/tvplanit/languages/demo.de.po | 206 ++- components/tvplanit/languages/demo.po | 195 ++- components/tvplanit/source/vpnavbar.pas | 13 + 6 files changed, 1614 insertions(+), 491 deletions(-) diff --git a/components/tvplanit/examples/demo/demomain.lfm b/components/tvplanit/examples/demo/demomain.lfm index d3e077992..9134a3e82 100644 --- a/components/tvplanit/examples/demo/demomain.lfm +++ b/components/tvplanit/examples/demo/demomain.lfm @@ -1,357 +1,466 @@ object MainForm: TMainForm Left = 291 - Height = 686 + Height = 600 Top = 164 - Width = 980 + Width = 900 Caption = 'Turbo Power VisualPlanIt Demo' - ClientHeight = 686 - ClientWidth = 980 + ClientHeight = 580 + ClientWidth = 900 + Menu = MainMenu1 OnCloseQuery = FormCloseQuery OnCreate = FormCreate LCLVersion = '1.7' object Panel1: TPanel - Left = 0 - Height = 34 - Top = 0 - Width = 980 - Align = alTop - BevelOuter = bvNone - ClientHeight = 34 - ClientWidth = 980 - TabOrder = 0 - object VpResourceCombo1: TVpResourceCombo - Left = 8 - Height = 23 - Top = 5 - Width = 208 - DataStore = VpBufDSDataStore1 - Style = csDropDownList - end - object BtnNewRes: TButton - Left = 222 - Height = 25 - Top = 4 - Width = 128 - Caption = 'New resource' - OnClick = BtnNewResClick - TabOrder = 1 - end - object BtnEditRes: TButton - Left = 352 - Height = 25 - Top = 4 - Width = 128 - Caption = 'Edit resource' - OnClick = BtnEditResClick - TabOrder = 2 - end - object CbLanguages: TComboBox - Left = 832 - Height = 23 - Top = 5 - Width = 140 - Anchors = [akTop, akRight] - ItemHeight = 15 - OnChange = CbLanguagesChange - Style = csDropDownList - TabOrder = 3 - end - object Label1: TLabel - Left = 768 - Height = 15 - Top = 8 - Width = 52 - Anchors = [akTop, akRight] - Caption = 'Language' - ParentColor = False - end - end - object PageControl1: TPageControl Left = 120 - Height = 652 - Top = 34 - Width = 860 - ActivePage = TabEvents + Height = 580 + Top = 0 + Width = 780 Align = alClient - TabIndex = 0 - TabOrder = 1 - object TabEvents: TTabSheet - Caption = 'Events' - ClientHeight = 624 - ClientWidth = 852 - TabVisible = False - object Panel2: TPanel - Left = 0 - Height = 624 - Top = 0 - Width = 386 - Align = alLeft - BevelOuter = bvNone - ClientHeight = 624 - ClientWidth = 386 - TabOrder = 0 - object VpMonthView1: TVpMonthView + BevelOuter = bvNone + ClientHeight = 580 + ClientWidth = 780 + TabOrder = 0 + object PageControl1: TPageControl + Left = 0 + Height = 532 + Top = 48 + Width = 780 + ActivePage = TabEvents + Align = alClient + TabIndex = 0 + TabOrder = 0 + object TabEvents: TTabSheet + Caption = 'Events' + ClientHeight = 504 + ClientWidth = 772 + TabVisible = False + object LeftPanel: TPanel Left = 0 - Height = 241 - Top = 383 - Width = 386 + Height = 504 + Top = 0 + Width = 333 + Align = alLeft + BevelOuter = bvNone + ClientHeight = 504 + ClientWidth = 333 + TabOrder = 0 + object VpMonthView1: TVpMonthView + Left = 0 + Height = 197 + Top = 307 + Width = 333 + DataStore = VpBufDSDataStore1 + ControlLink = VpControlLink1 + Color = clWindow + Align = alBottom + TabStop = True + TabOrder = 0 + KBNavigation = True + DateLabelFormat = 'mmmm yyyy' + DayHeadAttributes.Color = clBtnFace + DayHeadAttributes.Font.Height = -13 + DayHeadAttributes.Font.Name = 'Tahoma' + DayNameStyle = dsShort + DayNumberFont.Style = [fsBold] + DrawingStyle = dsFlat + EventDayStyle = [fsItalic] + LineColor = clGray + TimeFormat = tf12Hour + OffDayColor = clSilver + SelectedDayColor = clRed + ShowEvents = True + ShowEventTime = False + WeekStartsOn = dtSunday + end + object Splitter2: TSplitter + Cursor = crVSplit + Left = 0 + Height = 5 + Top = 302 + Width = 333 + Align = alBottom + ResizeAnchor = akBottom + end + object VpDayView1: TVpDayView + Left = 0 + Height = 260 + Top = 42 + Width = 333 + DataStore = VpBufDSDataStore1 + ControlLink = VpControlLink1 + Color = clWindow + ParentShowHint = False + Align = alClient + ReadOnly = False + TabStop = True + TabOrder = 2 + AllDayEventAttributes.BackgroundColor = clBtnShadow + AllDayEventAttributes.EventBorderColor = cl3DDkShadow + AllDayEventAttributes.EventBackgroundColor = clBtnFace + ShowEventTimes = False + DrawingStyle = dsFlat + TimeSlotColors.Active = clWhite + TimeSlotColors.Inactive = 8454143 + TimeSlotColors.Holiday = 16744703 + TimeSlotColors.Weekday = clWhite + TimeSlotColors.Weekend = 14737632 + TimeSlotColors.ActiveRange.RangeBegin = h_00 + TimeSlotColors.ActiveRange.RangeEnd = h_00 + HeadAttributes.Font.Height = -13 + HeadAttributes.Color = clBtnFace + RowHeadAttributes.HourFont.Height = -24 + RowHeadAttributes.MinuteFont.Height = -12 + RowHeadAttributes.Color = clBtnFace + ShowResourceName = True + LineColor = clGray + GutterWidth = 7 + DateLabelFormat = 'dddd, mmmm dd, yyyy' + Granularity = gr30Min + DefaultTopHour = h_07 + TimeFormat = tf12Hour + end + object DaySelectorPanel: TPanel + Left = 0 + Height = 42 + Top = 0 + Width = 333 + Align = alTop + BevelOuter = bvNone + ClientHeight = 42 + ClientWidth = 333 + TabOrder = 3 + Visible = False + object LblVisibleDays: TLabel + Left = 8 + Height = 15 + Top = 12 + Width = 61 + Caption = 'Visible days' + ParentColor = False + end + object DaysTrackBar: TTrackBar + Left = 56 + Height = 25 + Top = 8 + Width = 180 + Max = 7 + Min = 1 + OnChange = DaysTrackBarChange + Position = 1 + TabOrder = 0 + end + object CbGranularity: TComboBox + Left = 320 + Height = 23 + Top = 8 + Width = 68 + ItemHeight = 15 + ItemIndex = 5 + Items.Strings = ( + '5 Min' + '6 Min' + '10 Min' + '15 Min' + '20 Min' + '30 Min' + '60 Min' + ) + OnChange = CbGranularityChange + Style = csDropDownList + TabOrder = 1 + Text = '30 Min' + end + object LblGranularity: TLabel + Left = 256 + Height = 15 + Top = 12 + Width = 58 + Caption = 'Granularity' + ParentColor = False + end + end + end + object Splitter3: TSplitter + Left = 333 + Height = 504 + Top = 0 + Width = 5 + end + object VpWeekView1: TVpWeekView + Left = 338 + Height = 504 + Top = 0 + Width = 434 DataStore = VpBufDSDataStore1 ControlLink = VpControlLink1 Color = clWindow - Align = alBottom - TabStop = True - TabOrder = 0 - KBNavigation = True - DateLabelFormat = 'mmmm yyyy' + AllDayEventAttributes.BackgroundColor = clWindow + AllDayEventAttributes.EventBorderColor = clGray + AllDayEventAttributes.EventBackgroundColor = clBtnFace + DateLabelFormat = 'dddd, mmmm dd, yyyy' DayHeadAttributes.Color = clBtnFace + DayHeadAttributes.DateFormat = 'dddd mmmm, dd' DayHeadAttributes.Font.Height = -13 DayHeadAttributes.Font.Name = 'Tahoma' - DayNameStyle = dsShort - DayNumberFont.Style = [fsBold] + DayHeadAttributes.Bordered = True DrawingStyle = dsFlat - EventDayStyle = [fsItalic] + HeadAttributes.Color = clBtnFace LineColor = clGray TimeFormat = tf12Hour - OffDayColor = clSilver - SelectedDayColor = clRed - ShowEvents = True - ShowEventTime = False - WeekStartsOn = dtSunday + ShowEventTime = True + WeekStartsOn = dtMonday + Align = alClient + TabStop = True + TabOrder = 2 end - object Splitter2: TSplitter - Cursor = crVSplit + end + object TabTasks: TTabSheet + Caption = 'Tasks' + ClientHeight = 504 + ClientWidth = 772 + TabVisible = False + object VpTaskList1: TVpTaskList Left = 0 - Height = 5 - Top = 378 - Width = 386 - Align = alBottom - ResizeAnchor = akBottom - end - object VpDayView1: TVpDayView - Left = 0 - Height = 336 + Height = 462 Top = 42 - Width = 386 + Width = 772 DataStore = VpBufDSDataStore1 ControlLink = VpControlLink1 Color = clWindow - ParentShowHint = False Align = alClient - ReadOnly = False TabStop = True - TabOrder = 2 - AllDayEventAttributes.BackgroundColor = clBtnShadow - AllDayEventAttributes.EventBorderColor = cl3DDkShadow - AllDayEventAttributes.EventBackgroundColor = clBtnFace - ShowEventTimes = False - DrawingStyle = dsFlat - TimeSlotColors.Active = clWhite - TimeSlotColors.Inactive = 8454143 - TimeSlotColors.Holiday = 16744703 - TimeSlotColors.Weekday = clWhite - TimeSlotColors.Weekend = 14737632 - TimeSlotColors.ActiveRange.RangeBegin = h_00 - TimeSlotColors.ActiveRange.RangeEnd = h_00 - HeadAttributes.Font.Height = -13 - HeadAttributes.Color = clBtnFace - RowHeadAttributes.HourFont.Height = -24 - RowHeadAttributes.MinuteFont.Height = -12 - RowHeadAttributes.Color = clBtnFace - ShowResourceName = True + TabOrder = 0 + ReadOnly = False + DisplayOptions.CheckBGColor = clWindow + DisplayOptions.CheckColor = cl3DDkShadow + DisplayOptions.CheckStyle = csCheck + DisplayOptions.DueDateFormat = 'dd.MM.yyyy' + DisplayOptions.ShowCompletedTasks = False + DisplayOptions.ShowAll = True + DisplayOptions.ShowDueDate = True + DisplayOptions.OverdueColor = clRed + DisplayOptions.NormalColor = clBlack + DisplayOptions.CompletedColor = clGray LineColor = clGray - GutterWidth = 7 - DateLabelFormat = 'dddd, mmmm dd, yyyy' - Granularity = gr30Min - DefaultTopHour = h_07 - TimeFormat = tf12Hour + MaxVisibleTasks = 250 + TaskHeadAttributes.Color = clSilver + DrawingStyle = dsFlat + ShowResourceName = True end - object DaySelectorPanel: TPanel + object Panel6: TPanel Left = 0 Height = 42 Top = 0 - Width = 386 + Width = 772 Align = alTop BevelOuter = bvNone ClientHeight = 42 - ClientWidth = 386 - TabOrder = 3 - Visible = False - object Label2: TLabel - Left = 16 - Height = 15 - Top = 8 - Width = 25 - Caption = 'Tage' - ParentColor = False - end - object TrackBar1: TTrackBar - Left = 56 - Height = 25 - Top = 8 - Width = 180 - Max = 7 - Min = 1 - OnChange = TrackBar1Change - Position = 1 - TabOrder = 0 - end - end - end - object Splitter3: TSplitter - Left = 386 - Height = 624 - Top = 0 - Width = 5 - end - object VpWeekView1: TVpWeekView - Left = 391 - Height = 624 - Top = 0 - Width = 461 - DataStore = VpBufDSDataStore1 - ControlLink = VpControlLink1 - Color = clWindow - AllDayEventAttributes.BackgroundColor = clWindow - AllDayEventAttributes.EventBorderColor = clGray - AllDayEventAttributes.EventBackgroundColor = clBtnFace - DateLabelFormat = 'dddd, mmmm dd, yyyy' - DayHeadAttributes.Color = clBtnFace - DayHeadAttributes.DateFormat = 'dddd mmmm, dd' - DayHeadAttributes.Font.Height = -13 - DayHeadAttributes.Font.Name = 'Tahoma' - DayHeadAttributes.Bordered = True - DrawingStyle = dsFlat - HeadAttributes.Color = clBtnFace - LineColor = clGray - TimeFormat = tf12Hour - ShowEventTime = True - WeekStartsOn = dtMonday - Align = alClient - TabStop = True - TabOrder = 2 - end - end - object TabTasks: TTabSheet - Caption = 'Tasks' - ClientHeight = 624 - ClientWidth = 852 - TabVisible = False - object VpTaskList1: TVpTaskList - Left = 0 - Height = 590 - Top = 34 - Width = 852 - DataStore = VpBufDSDataStore1 - ControlLink = VpControlLink1 - Color = clWindow - Align = alClient - TabStop = True - TabOrder = 0 - ReadOnly = False - DisplayOptions.CheckBGColor = clWindow - DisplayOptions.CheckColor = cl3DDkShadow - DisplayOptions.CheckStyle = csCheck - DisplayOptions.DueDateFormat = 'dd.MM.yyyy' - DisplayOptions.ShowCompletedTasks = False - DisplayOptions.ShowAll = True - DisplayOptions.ShowDueDate = True - DisplayOptions.OverdueColor = clRed - DisplayOptions.NormalColor = clBlack - DisplayOptions.CompletedColor = clGray - LineColor = clGray - MaxVisibleTasks = 250 - TaskHeadAttributes.Color = clSilver - DrawingStyle = dsFlat - ShowResourceName = True - end - object Panel3: TPanel - Left = 0 - Height = 34 - Top = 0 - Width = 852 - Align = alTop - BevelOuter = bvNone - ClientHeight = 34 - ClientWidth = 852 - TabOrder = 1 - object RbAllTasks: TRadioButton - Left = 8 - Height = 19 - Top = 7 - Width = 63 - Caption = 'All tasks' - Checked = True - OnChange = RbAllTasksChange + ClientWidth = 772 TabOrder = 1 - TabStop = True + object RbAllTasks: TRadioButton + Left = 8 + Height = 19 + Top = 13 + Width = 63 + Caption = 'All tasks' + Checked = True + OnChange = RbAllTasksChange + TabOrder = 0 + TabStop = True + end + object RbHideCompletedTasks: TRadioButton + Left = 120 + Height = 19 + Top = 13 + Width = 134 + Caption = 'Hide completed tasks' + OnChange = RbHideCompletedTasksChange + TabOrder = 1 + end end - object RbHideCompletedTasks: TRadioButton - Left = 98 - Height = 19 - Top = 7 - Width = 134 - Caption = 'Hide completed tasks' - OnChange = RbHideCompletedTasksChange + end + object TabContacts: TTabSheet + Caption = 'Contacts' + ClientHeight = 504 + ClientWidth = 772 + TabVisible = False + object VpContactButtonBar1: TVpContactButtonBar + Left = 0 + Height = 504 + Top = 0 + Width = 40 + DrawingStyle = dsFlat + RadioStyle = False + Align = alLeft + end + object VpContactGrid1: TVpContactGrid + Left = 40 + Height = 504 + Top = 0 + Width = 732 + DataStore = VpBufDSDataStore1 + ControlLink = VpControlLink1 + Color = clWindow + Align = alClient + TabStop = True + TabOrder = 1 + AllowInPlaceEditing = True + BarWidth = 3 + BarColor = clSilver + ColumnWidth = 200 + ContactHeadAttributes.Color = clSilver + ContactHeadAttributes.Bordered = True + DrawingStyle = dsFlat + end + end + object TabResources: TTabSheet + Caption = 'Maintenance' + ClientHeight = 504 + ClientWidth = 772 + TabVisible = False + object VpResourceCombo1: TVpResourceCombo + Left = 16 + Height = 23 + Top = 24 + Width = 235 + DataStore = VpBufDSDataStore1 + Style = csDropDownList + end + object BtnNewRes: TButton + Left = 16 + Height = 25 + Top = 64 + Width = 75 + Caption = 'New' + OnClick = BtnNewResClick + TabOrder = 1 + end + object BtnEditRes: TButton + Left = 96 + Height = 25 + Top = 64 + Width = 75 + Caption = 'Edit' + OnClick = BtnEditResClick + TabOrder = 2 + end + object BtnDeleteRes: TButton + Left = 176 + Height = 25 + Top = 64 + Width = 75 + Caption = 'Delete' + OnClick = BtnDeleteResClick + TabOrder = 3 + end + end + object TabSettings: TTabSheet + Caption = 'Settings' + ClientHeight = 504 + ClientWidth = 772 + TabVisible = False + object LblLanguage: TLabel + AnchorSideTop.Control = CbLanguages + AnchorSideTop.Side = asrCenter + Left = 16 + Height = 15 + Top = 28 + Width = 52 + Caption = 'Language' + ParentColor = False + end + object CbLanguages: TComboBox + Left = 112 + Height = 23 + Top = 24 + Width = 172 + ItemHeight = 15 + OnChange = CbLanguagesChange + Style = csDropDownList TabOrder = 0 end + object LblTimeFormat: TLabel + AnchorSideTop.Control = CbTimeFormat + AnchorSideTop.Side = asrCenter + Left = 16 + Height = 15 + Top = 68 + Width = 66 + Caption = 'Time format' + ParentColor = False + end + object CbTimeFormat: TComboBox + Left = 112 + Height = 23 + Top = 64 + Width = 172 + ItemHeight = 15 + OnChange = CbTimeFormatChange + Style = csDropDownList + TabOrder = 1 + end + object LblFirstDayOfWeek: TLabel + AnchorSideTop.Control = CbFirstDayOfWeek + AnchorSideTop.Side = asrCenter + Left = 16 + Height = 15 + Top = 108 + Width = 88 + Caption = 'First day of week' + ParentColor = False + end + object CbFirstDayOfWeek: TComboBox + Left = 112 + Height = 23 + Top = 104 + Width = 172 + ItemHeight = 15 + OnChange = CbFirstDayOfWeekChange + Style = csDropDownList + TabOrder = 2 + end end end - object TabContacts: TTabSheet - Caption = 'Contacts' - ClientHeight = 624 - ClientWidth = 852 - TabVisible = False - object VpContactButtonBar1: TVpContactButtonBar - Left = 0 - Height = 624 - Top = 0 - Width = 40 - DrawingStyle = dsFlat - RadioStyle = False - Align = alLeft + object HeaderPanel: TPanel + Left = 2 + Height = 48 + Top = 0 + Width = 778 + Align = alTop + BorderSpacing.Left = 2 + BevelOuter = bvNone + ClientHeight = 48 + ClientWidth = 778 + Color = clActiveCaption + ParentColor = False + TabOrder = 1 + object Img: TImage + Left = 8 + Height = 32 + Top = 8 + Width = 32 end - object VpContactGrid1: TVpContactGrid - Left = 40 - Height = 624 - Top = 0 - Width = 812 - DataStore = VpBufDSDataStore1 - ControlLink = VpControlLink1 - Color = clWindow - Align = alClient - TabStop = True - TabOrder = 1 - AllowInPlaceEditing = True - BarWidth = 3 - BarColor = clSilver - ColumnWidth = 200 - ContactHeadAttributes.Color = clSilver - ContactHeadAttributes.Bordered = True - DrawingStyle = dsFlat - end - end - object TabInfo: TTabSheet - Caption = 'Info' - ClientHeight = 624 - ClientWidth = 852 - object Memo1: TMemo - Left = 0 - Height = 624 - Top = 0 - Width = 852 - Align = alClient - TabOrder = 0 + object TitleLbl: TLabel + Left = 56 + Height = 32 + Top = 8 + Width = 84 + Caption = 'TitleLbl' + Font.Height = -24 + Font.Style = [fsBold] + ParentColor = False + ParentFont = False end end end object VpNavBar1: TVpNavBar Left = 0 - Height = 652 - Top = 34 + Height = 580 + Top = 0 Width = 120 ActiveFolder = 0 AllowRearrange = True - BackgroundColor = clInactiveCaption + BackgroundColor = clActiveCaption BackgroundMethod = bmNormal BorderStyle = bsNone ButtonHeight = 20 @@ -359,7 +468,7 @@ object MainForm: TMainForm FolderCollection = < item Version = 'v1.04' - Caption = 'All' + Caption = 'Planner' Enabled = True FolderType = ftDefault ItemCollection = < @@ -367,28 +476,28 @@ object MainForm: TMainForm Version = 'v1.04' Caption = 'Events' IconIndex = 0 - Name = 'Item0-0' + Name = 'NIEvents' Tag = 0 end item Version = 'v1.04' Caption = 'Month view' IconIndex = 5 - Name = 'Item0-1' + Name = 'NIEventsByMonth' Tag = 0 end item Version = 'v1.04' Caption = 'Week view' IconIndex = 4 - Name = 'Item0-2' + Name = 'NIEventsByWeek' Tag = 0 end item Version = 'v1.04' Caption = 'Day view' IconIndex = 3 - Name = 'Item0-3' + Name = 'NIEventsByDay' Tag = 0 end item @@ -396,7 +505,7 @@ object MainForm: TMainForm Caption = 'Tasks' Description = 'Show tasks' IconIndex = 1 - Name = 'Item0-4' + Name = 'NITasks' Tag = 0 end item @@ -404,85 +513,35 @@ object MainForm: TMainForm Caption = 'Contacts' Description = 'Show address book' IconIndex = 2 - Name = 'Item0-5' + Name = 'NIContacts' Tag = 0 end> IconSize = isLarge - Name = 'NavFolder3' + Name = 'NFPlanner' Tag = 0 end item Version = 'v1.04' - Caption = 'Events' + Caption = 'Maintenance' Enabled = True FolderType = ftDefault ItemCollection = < item Version = 'v1.04' - Caption = 'Events' - Description = 'Display appointments and events' - IconIndex = 0 - Name = 'EventItem' + Caption = 'Resources' + IconIndex = 7 + Name = 'NIResources' Tag = 0 end item Version = 'v1.04' - Caption = 'per month' - IconIndex = 5 - Name = 'Item0-5' - Tag = 0 - end - item - Version = 'v1.04' - Caption = 'per week' - IconIndex = 4 - Name = 'WeekView' - Tag = 0 - end - item - Version = 'v1.04' - Caption = 'per day' - IconIndex = 3 - Name = 'DayView' + Caption = 'Settings' + IconIndex = 8 + Name = 'NISettings' Tag = 0 end> IconSize = isLarge - Name = 'NavFolder0' - Tag = 0 - end - item - Version = 'v1.04' - Caption = 'Tasks' - Enabled = True - FolderType = ftDefault - ItemCollection = < - item - Version = 'v1.04' - Caption = 'List' - IconIndex = 1 - Name = 'Item1-0' - Tag = 0 - end> - IconSize = isLarge - Name = 'NavFolder2' - Tag = 0 - end - item - Version = 'v1.04' - Caption = 'Contacts' - Enabled = True - FolderType = ftDefault - ItemCollection = < - item - Version = 'v1.04' - Caption = 'Contacts' - Description = 'Show contacts' - IconIndex = 2 - Name = 'Item2-0' - Tag = 0 - end> - IconSize = isLarge - Name = 'NavFolder2' + Name = 'NFMaintenance' Tag = 0 end> Images = ImageList1 @@ -559,7 +618,7 @@ object MainForm: TMainForm left = 312 top = 365 Bitmap = { - 4C69060000002000000020000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + 4C69090000002000000020000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF @@ -1327,7 +1386,420 @@ object MainForm: TMainForm FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0048484800484949004849 + 490048494900484848335451518C6B6464C7777070E4726A6BDC5D5757B23937 + 376F090A0A220000000000000000000000000000000000000000000000000000 + 00003E3E3E005F5F5F005A5A5A00595959005B5B5B005B5B5B00626262004545 + 45000000000000000000FFFFFF00FFFFFF00FFFFFF0048484800444545004344 + 44003F4141006F6868D2D5C5C5FFECE2E2FFF3EAEAFFF0E7E7FFE0D4D4FFB7AA + AAFF6B6464E02121216400000002000000000000000000000000000000000000 + 00003E3E3E005F5F5F005A5A5A00595959005B5B5B00585858005D5D5D0D4243 + 43100000000000000000FFFFFF00FFFFFF00FFFFFF0049494900444545002B2B + 2B00000000003D3B3B95B6A9A9FFF9F1F1FFFFFEFEFFFDFBFBFFFEFCFCFFFEFA + FAFFE7DBDBFF8F8484FF23232380000000070000000000000000000000000000 + 00003E3E3E005F5F5F005A5A5A00585858005353530C62636351959393D27571 + 72D01111113600000000FFFFFF00FFFFFF00FFFFFF0048494900404242182727 + 270C000000000001010E333232A9AC9F9EFFF5EBEBFFF9F7F7FFF8F5F5FFF9F6 + F6FFFAF8F8FFECDFDFFF7B7272F80E0F0F620000000000000000000000000000 + 00003E3E3E005F5F5F00595959005B5B5B358E8E8EC4D3CECEFFE9D9D9FF9A8B + 8AFF1616169600000013FFFFFF00FFFFFF00FFFFFF0042434333767070EB524F + 4FBB06070725000000000000000F2E2D2DA4A99B9AFFEFE5E5FFF7F4F4FFF5F0 + F0FFF5F2F2FFFAF5F5FFD0C2C2FF464242D20000002F00000000000000000101 + 0100464545005F5E5E0055545400878787B7FFFEFEFFF5EDEDFFCFBDBCFF4640 + 3FE80000007600000014FFFFFF00FFFFFF00FFFFFF004D4B4B8ED7CBCBFFD2C6 + C6FF4A4646CD0607072A000000000000000F2D2C2DA3A09392FFEAE1E1FFF3EE + EEFFF2ECECFFF4F0F0FFEDE3E3FF827877FF0607077200000006000000002020 + 20005F5F5F00565656004E4E4E0AA6A6A6E1F9EEEEFFE5D3D2FF908281FF0D0D + 0DB50000003C00000002FFFFFF00FFFFFF00FFFFFF00696363C7E3D6D6FFFCF6 + F6FFCABDBDFF4A4646CC0505052C000000000000000A2F2D2DA9BCAEAEFFF2EB + EBFFEEE9E9FFEFEAEAFFF2EAEAFFAB9D9DFF1A1919A200000015000000001D1D + 1D00595A5A004D4D4D087575759BCDC2C2FF958484FE736463FD2C2B2AD90000 + 00710000001100000000FFFFFF00FFFFFF00FFFFFF00776F6FDFE5D8D8FFEEE8 + E8FFF2EAEAFFC6B8B8FF4F4A4ACF06070730070707003A39388EB7A9A8FFEFE7 + E7FFEBE5E5FFEBE4E4FFEFE6E6FFB8A9A9FF232222B600000023000000003839 + 39005051510A7B7A7AA8D5C8C8FF766C6CF30C0D0DB7020303870000005E0000 + 00250000000100000000FFFFFF00FFFFFF00FFFFFF006E6767D0DFD1D1FFE9E1 + E1FFE7E0E0FFECE2E2FFC1B2B2FF585353D4454242A4988C8BF4E1D3D3FFE7DF + DFFFE6DEDEFFE7DFDFFFEBE0E0FFA79A9AFF181717AE000000240D0D0D005152 + 52097E7E7EA8D4C6C6FF786E6EF7060707AE0000005100000015000000060000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00514F4FA0CABCBCFFE8DD + DDFFE3D9D9FFE3DBDBFFE4D9D8FFD3C3C2FFCABBBBFFE0D2D2FFE4DBDBFFE3D8 + D8FFE3D8D8FFE4D9D9FFE5D9D9FFA79999FF292828C400000024393A3A088281 + 81ADD4C6C6FF6E6565F2050606AB0000004D0000000C00000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF002D2D2D56A19494FFE6D8 + D8FFDFD3D3FFDED2D2FFDED3D3FFE2D6D6FFE3D7D7FFE0D4D4FFDED2D2FFDED2 + D2FFDED2D2FFDDD1D1FFE0D6D6FFE7DCDCFF9D9190FF2C2C2C98737373ACD7C9 + C9FF6C6363F2030404A70000004C000000090000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF0004050509524E4EBCC9B8 + B7FFE0D3D3FFDACDCDFFD9CDCDFFDACDCDFFDACDCDFFD9CDCDFFD9CDCDFFD9CE + CDFFDED2D0FFDED1CFFFE1D7D7FFF5EFEFFFDFD7D7FF989292FFCABEBEFF655D + 5DED030404A2000000480000000A000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF0000000000101111356963 + 62E3CABAB9FFE1D2D1FFDCCECEFFDACCCCFFD9CBCBFFD9CBCBFFDACCCCFFDCCE + CCFFBAADB6FFC0B5BCFFF4EAE6FFE5DFE0FFB1B0B1FFC3B8B7FF867B7AFF2726 + 27D4000000510000000500000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF0000000000000000000F10 + 1042514D4DD2A79999FFCEBEBDFFD9C9C8FFDCCCCCFFDCCCCBFFDDCCC9FF7972 + 9CFF313596FF35368FFFB2ACB6FFB8B4AFFFB8ADACFF979190FFD9D3D3FFA496 + 96FF323131A30304041200000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 00000203032C20202090514C4CDD716A6AF7857B7BFE797170FC7C7367F8403B + 77FE8A8FDDFF8F93DFFF1D207FFF9E9399FFA29993FFE3E1E1FFFFFFFFFFF3EB + EAFFA09392FF343132A403030314000000000000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000C000000360102026004050579000000700909168B1F21 + 7AF6A5AAEBFFB4B7EEFF3E43C3FF181877FFB3AFB6FFFFFAF8FFF4F1F1FFFCFC + FCFFF5ECEDFFA09291FF3A3838AD040505160000000000000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000020000000002012B3C171B7BCB8186 + D6FFAAADEBFF7176D6FF3D41C7FF0205AFFF262684FFCCC7CBFFF8F3F0FFF5F1 + F2FFFEFCFDFFF3EAEAFFA59796FF393737AB0506061800000000000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 060001001D000101150008083E00131169000808626033379EEDA5ABEEFFADB1 + EFFF6F75D8FF2E36C6FF040AB2FF0000A5FF131380FFC8C0C3FFF3ECE9FFF0EB + EBFFF5F2F2FFFDFCFCFFF6EFEFFFA69897FF3E3C3BB20506061B000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF0001014700010040000100 + 4E0004037800080774000B0A6C0805076F8D575DBAFFC4C9F8FFACB1EEFF7077 + DCFF2F38CCFF040BABFF26276FFD635C80FF8C84A1FFE2D6D6FFE7DCDCFFEBE3 + E3FFF0EBEBFFF5F2F2FFFDFCFCFFF3ECEBFFA79796FF3E3C3CB3050707190000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF0002018000010078000100 + 750004036D000302671407097AB27A81D2FFD8DDFFFFA7AEEFFF6D75DFFF3540 + D2FF0711BCFF12145FED0C0C06A65C564DD8C3B3AEFFE4D6D5FFE0D4D4FFE5DB + DBFFECE3E3FFF0ECECFFF5F2F2FFFFFFFFFFF5EDEDFFA79897FF413E3EB40607 + 081D0000000000000000FFFFFF00FFFFFF00FFFFFF0002017800010070000100 + 6F000000681D0A0E85C4959DE3FFDEE2FFFFA0A7EEFF6F79E2FF3946D4FF0915 + CAFF14177EFB0A0A12B10000003F06070734524E4DCDBBAAA9FFE2D5D5FFE0D5 + D5FFE5DBDBFFEBE4E4FFEFEAEAFFECE7E7FFF9F8F8FFF3EBEBFFA59493FF4542 + 42B80809091F00000000FFFFFF00FFFFFF00FFFFFF0002017800010070000000 + 681C0C118BCBA6AFECFFE0E5FFFF9DA5F0FF6B76E5FF3A48D8FF0A1BD0FF1118 + 97FF0E0D21C60000005C0000000C000000000405052A524E4DCEB7A7A5FFE3D6 + D5FFE0D4D4FFE6DCDCFFE9E2E1FFD6C9C8FFC8B8B7FFF9F7F7FFF2E9E9FFA998 + 96FF333131A20000000FFFFFFF00FFFFFF00FFFFFF000201780000006B14090D + 8BC4A5ADEDFFE0E4FFFF9CA6F1FF6C79E8FF3949DBFF0D1FD7FF0D17A9FF0F0F + 31D40000006D0000001800000000000000000000000006070729504C4BCAB6A6 + A4FFE2D5D4FFE1D6D6FFE7DEDEFFDACDCDFFC0ADACFFF1EBEBFFE5D8D7FF9A8B + 89FF282727C10000002EFFFFFF00FFFFFF00FFFFFF0001007502000081A5939B + E6FFE1E6FFFF9BA6F3FF6A79EBFF394AE0FF0C21DBFF0C18B8FF10103FDD0100 + 007D0000001F0000000000000000000000000000000000000000040505274E4A + 4BC8B4A3A2FFE4D4D4FFE0D6D5FFDACECEFFE3D9D9FFDECFCEFF918281FF2D2C + 2CD90000007A0000001DFFFFFF00FFFFFF00FFFFFF000000745A5F69CDFFDAE1 + FFFF9DA9F6FF697AEEFF394CE4FF0E24E1FF0A19BEFF10114BE5020100880000 + 002A000000000000000000000000000000000000000000000000000000000506 + 06254F4A4AC6B3A2A1FFE1D3D3FFE5DBDBFFD9C8C8FF938482FF2C2C2BD70000 + 007C0000002400000001FFFFFF00FFFFFF00FFFFFF000A1194C3A5B2FBFFA9B4 + FBFF6C7DF1FF384DE9FF0E28E8FF0B1AC0FF0F0F4BE502010390000000310000 + 0002000000000000000000000000000000000000000000000000000000000000 + 0000040505254D4949C5AFA09EFFD6C2C1FF928482FF2B2B2BD80000007A0000 + 00250000000000000000FFFFFF00FFFFFF00FFFFFF00050C98D25D75FCFF7185 + F9FF364FF1FF0D29EDFF0A19B7FF0B0B42DE0101008600000031000000030000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000050506234B4948BA7D7472FF2F2E2DD400000079000000210000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF0000003B5B0714ADF71A37 + F6FF0D25DFFF0A1394FD06062BCC0000007B0000002900000002000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000606061E0D0D0D6F0101016400000024000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF000000010200002A660105 + 56C8050540CC03010FA00000005A0000001C0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000050000000A00000001000000000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF0000000000000000030000 + 002300000037000000280000000B000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FFFFFF000D529B000D529B000D529B000D529B000D4D + 950012498B001446800E1C488066345C8DB15278A2DF517BA5E6386190C51C41 + 6E89020E1E2E01000100000000000000000000000000000000000202B8000303 + CF000000B2000000B4000000BA00000045000000000000000000000000000000 + 00000000000000000000000000000D529B000D529B000D529B000D529B000D4D + 95000A43862A356499C59EBBD5FFD1E8F2FFD8F3FFFFCCEFFFFFB2E0F7FF8AC0 + E4FF4178AEEA0A284B75000000050000000000000000000000000202B8000303 + CF000000B2000000B4000000BA00000045000000000000000000000000000000 + 00000000000000000000000000000D529B000D529B000D529B000C529B000848 + 92274679AFDCD5E9F4FFFEFFFFFFF4FEFFFFE1F6FFFFD1EFFFFFC2EAFFFFB4EA + FFFFA1E1FFFF5495CBFF07274A820001020900000000000000000202B6000303 + CF000000B2000000B4000000BA00000045000000000000000000000000000000 + 00000000000000000000000000000D529B000D529B000D529B00074E98032968 + ABBACAE8F9FFF0FEFFFFF7FCFFFFF5FBFFFFE3F5FFFFD1EEFFFFBFE7FFFFADE1 + FFFF9EDCFFFF9ADEFFFF3A7CB8F6000C1D590000000000004E000202C8000302 + CE000000B1000000B3000000BA00000045000000000000000000000000000000 + 0000000000000000000000000000095AB000095AB000095AB1000150A44877AC + DAFFDFFAFFFFDFF3FFFFEBF8FFFFE9F7FFFFDDF3FFFFCDEDFFFFBDE6FFFFABE0 + FFFF9BDAFEFF9ADCFCFF77C0EFFF0F4073C300000018000083000000D11B0000 + C92F0000B5350000B4290000B61100003B000000000000000000000000000000 + 00000000000000000000000000000459B2000459B2000357B1001365B99CABDA + F9FFCAEDFFFFD1EEFFFFD9F1FFFFD9F1FFFFD0EEFFFFC4E9FFFFB5E4FFFFA5DF + FFFF98D8FDFF93D5F8FF8CD3F4FF2672A9EF00003E710D0DB69D5052E0DD7F84 + E7F8888DEBFE686DE2F22A2DD0CE00008A7F00001B1100000000000000000000 + 00000000000000000000000000000055B3000055B3000051B0052477C9BEAEE1 + FFFFBBE7FFFFC3E9FFFFC8EBFFFFC7EBFFFFC1E9FFFFB8E5FFFFAAE0FFFF9EDB + FFFF95D7FAFF90D3F7FF86D1EAFF1F58C5FD4B4EDCFAD1D3FEFFFBFCFFFFF9FF + FFFFF2FBFFFFE8F3FFFFD2E0FFFF8893F8FF1419B7C500002C2C000000000000 + 00000000000000000000000000000053AF000053AF00004DAB072478CAC1A1DD + FFFFACE1FFFFB3E3FFFFB7E4FFFFB7E4FFFFB1E2FFFFA9DFFFFF9FDCFFFF98D7 + FCFF91D3F7FF8ED6F2FF4C83D0FF626CE3FFF5F6FFFFFFFFFFFFF9FCFFFFF1F4 + FEFFE6EEFEFFDDE7FEFFD4E3FEFFD9EAFFFFA8B7FEFF212DAFCA00000A240000 + 000000000000000000000000000000478E0000478E00004389011467B3AB92D6 + FDFF9FDCFFFFA1DDFFFFA5DEFFFFA5DEFFFFA1DDFFFF9CDAFEFF97D7FBFF91D4 + F7FF8FD4F6FF70B5DBFF4E67DAFFE1E6FFFFF9FCFFFFF8FAFFFFF9FBFFFFF1F5 + FEFFE6EEFEFFDDE7FEFFD3E0FDFFC9D9FDFFD9E9FCFF90A2FCFF0D1871990000 + 000C0000000000000000000000000012210000122100000F1C00003B716A6FBD + F0FF9CDBFDFF96D7FBFF98D8FCFF98D8FCFF96D8FBFF94D6F9FF91D3F7FF8CD1 + F4FF84CFEDFF4983CCFF97A6F5FFF0F8FFFFEAF1FEFFF1F5FFFFF1F5FFFFEBF1 + FEFFE4ECFEFFDBE6FEFFD1DFFDFFC9D9FDFFCCDBFAFFC7D8FCFF445ACAEB0001 + 0C3F000000000000000000000000000000000000000000000000001033172878 + BED693D7FCFF93D5F7FF90D3F6FF91D3F7FF8FD3F6FF8DD1F4FF88CEF1FF7DC6 + EBFF67B6D7FF4477D4FFBECBFFFFE2ECFEFFE3EBFEFFE7EEFEFFE7EEFEFFE4EB + FEFFDEE8FEFFD6E2FDFFCDDCFDFFC9D8FCFFC8D7F8FFCDDCF7FF7691F0FF0811 + 3A7D000000080000000000000000033800000338000003380000002D00000054 + 3578439CC9FF85CCF4FF89CEF0FF86CCEFFF82CAEEFF7CC4EAFF6FBCE2FF60B2 + DAFF479DC5FF477BD9FFCAD6FFFFD8E3FEFFDBE5FEFFDEE7FEFFDEE7FEFFDBE6 + FEFFD6E2FEFFCFDDFDFFC9D8FDFFC9D9FBFFC7D6F8FFC8D7F7FF88A5F7FF1120 + 509A000000150000000000000000078C0000088C0000048900000486015E4BB0 + 3FE7459B7DFF4698CBFF59ACDCFF68BAE2FF67B9DBFF5EB1D6FF50AAD1FF3994 + CBFF1D80ACFF4480CFFFC6D4FFFFD0DDFDFFD2DFFDFFD4E1FDFFD4E1FDFFD1DF + FDFFCEDCFDFFCAD9FDFFC9D8FBFFC8D7F8FFC4D4F6FFC1D1F5FF87A3F7FF1421 + 4A9D0000001A0000000000000000097A0000047A0000067F05609BCF98FCA7D4 + AAFF98D090FFBFEAD5FF47A19BFF2073A4FF2981BDFF2683BAFF1B6CAAFF288A + 8FFF55DA96FF59AFB1FFB5C1FFFFCEDDFBFFC9D9FDFFCADAFDFFCADAFDFFC9D9 + FDFFC9D8FCFFC9D8FAFFC8D7F8FFC5D5F6FFBECFF4FFB3C7F6FF7690ECFE090F + 238B0000001600000000000000000B6E0000006C003470B56CF3E3F3E8FFBADC + BFFFDCEEDCFFCAF1C9FFADE99AFF6F9497FF0010DFFF000EEDFF4A59A6FF92DD + 7DFF71FE92FF86BDA8FF9EACF8FFD0DEFAFFC9D8FAFFC9D8FAFFC9D8FAFFC9D8 + FBFFC8D7F9FFC8D8F7FFC5D5F6FFBFCFF4FFB4C7F3FFA2BAFFFF4C5FAFE80000 + 00680000000B0000000000000000076B00052C8824B4CEF0D7FFA8DAB4FFE4F7 + EAFFFBFFFDFFE0F0E1FFDCF1DAFFEBF9E0FF4749E7FF0E07EDFFD5DED3FFD7F8 + D4FFC2EFCCFFF6F6F1FF96ADEFFFADC2FCFFCBDBF6FFC6D6F7FFC7D6F7FFC6D6 + F7FFC4D5F6FFC1D2F5FFBACCF4FFB0C4F4FFA5BCF9FF6C88E9F80C1535AB0000 + 00360000000100000000000000000969003C73B875F7BBEFCEFFAFE2BDFFDDF7 + E6FFE2F8E9FFEEFBF3FFF5FDF8FFFEFFFDFFC2C3E9FF9A95D4FFFFFFFBFFF7FD + FBFFF8FFFEFFE7F9EDFFCFAB92FF958BD1FFAAC1FCFFC3D4F5FFC2D2F5FFBFCF + F4FFBCCDF4FFB5C7F4FFACC1F4FF98B4F8FF7B96FFFF976E88F43C1600850000 + 000D000000000000000000000000166907868DD299FF96E0AEFFB3EAC5FFC8F2 + D6FFCFF3D9FFD5F4E0FFDCF7E5FFE0F7E8FFE8FDEAFFEDFFE9FFE3F8EAFFE1FB + EBFFD2F2E0FFD2A782FFFAAD81FFDB8E7DFF99A4F2FF8BA3FAFF9FB9FCFFA3BE + FFFFA1BBFEFF95B2FFFF7E9EFEFF7790F5FFB58A9EFFF5996EFFEE9B6CEC5B27 + 0D5A00000001000000000000000028721BBB88DBA0FF88DEA4FFAAEAC0FFB2EC + C5FFBAEDCAFFC1EFD1FFC7F1D5FFCBF1D7FFCDF3D9FFCDF3D9FFCDF4DAFFC2F2 + D8FFC39D77FFF8CAB5FFE7C1B9FFF4BCA4FFFCF2E2FFC9B1C5FFA185B1FF8982 + B9FF8380C2FF897CB0FFAF8AAAFFE3BFA6FFFFC48CFFE5A794FFF8DFD6FFE49B + 78EE3F1604520000000000000000357D28DE74DB94FF82DEA1FF96E5B1FF9EE6 + B5FFA6E9BBFFACEBC0FFB1EBC4FFB5EDC7FFB7EDC9FFB7ECC9FFB4F5D0FFACB0 + 89FFEDA786FFF7E5DBFFEDD0C8FFFFFDFBFFFFE1D0FFFFD9BAFFFFD9B9FFF2B2 + 74FFE99A4BFFF7BE84FFFFD6B0FFFFC490FFFFE1D0FFFBF3F0FFE7C4BBFFFFF1 + E6FFBF6843DE0902002D00000000327825E562D789FF76DE9AFF81E0A1FF8AE1 + A7FF91E4ACFF97E6B1FF9CE6B5FFA0E8B8FFA2E8B9FFA3EBBDFF96DDB0FFC188 + 60FFFFE3CCFFECC4AEFFFCEEE2FFFFFBF6FFFEF3EEFFFEECE4FFFFFBF9FFFFF2 + E6FFFEE0C0FFFFF6F0FFFFF4F0FFFEE9DEFFFFFDFBFFFFFDF9FFF3D5C7FFF6DF + CDFFFAC4A5FF561F0A900000000A286014D352CE79FF66DC8EFF6DDB91FF75DC + 97FF7CDE9CFF81E0A0FF86E0A4FF89E2A6FF8CE2A8FF89EBB0FF89A774FFE797 + 72FFFCDDBFFFF6D0B5FFFFF0DDFFFFF0E0FFFFF5E9FFFFF8F0FFFFF8F3FFFFFC + F7FFFFFCF8FFFFFBF7FFFFFAF4FFFFF9F3FFFFF4E8FFFFF1E1FFFEECD9FFF2C8 + ACFFFFE3C5FFAB5333DF0C02003A234503A53FB75CFF53DC83FF59D682FF61D7 + 89FF68D98EFF6DDB92FF71DB95FF74DD98FF77DD99FF6FE19CFF8E8050FFF8AE + 87FFF8C9A2FFFBD8B8FFFFE6CBFFFFE9D1FFFFECD7FFFFEEDBFFFFEFDFFFFFF1 + E1FFFFF1E3FFFFF1E2FFFFF0DFFFFFEDDCFFFFECD7FFFFE9D1FFFFE7CDFFF6CA + A7FFFFDAB3FFD07A56F92005006F151F004C2F7223FE3CD671FF44D677FF4BD1 + 78FF52D47CFF57D581FF5CD684FF5ED787FF60D989FF56D083FFA26C40FFFEBB + 8CFFFAC898FFFFDAB2FFFFDDB9FFFFE1C0FFFFE3C6FFFFE5CAFFFFE6CDFFFFE8 + D0FFFFE8D0FFFFE7D0FFFFE7CEFFFFE5CAFFFFE3C6FFFFE0C0FFFFDFBCFFFDD3 + AAFFFFCF9EFFE7986DFF2A07008C020400041D240094307224FF35C25FFF39D9 + 71FF3DD973FF42D575FF47D577FF49D679FF4BD97CFF41C871FFAA6339FFFFB8 + 81FFFDC790FFFFD3A3FFFFD6A9FFFFD9AFFFFFDBB5FFFFDDB9FFFFDEBCFFFFE0 + BEFFFFE0BEFFFFDFBEFFFFDFBCFFFFDDBAFFFFDBB4FFFFD9B0FFFFD6A9FFFFD1 + A2FFFEC78FFFEE9B6AFF2E0A039B000000000201001017150089293E0AE93071 + 28FF339740FF35B353FF37BD5BFF38C15EFF38C561FF30B858FFA25930FFFFB1 + 73FFFFC88AFFFFCA91FFFFCE99FFFFD09EFFFFD2A4FFFFD4A7FFFFD6AAFFFFD7 + ACFFFFD7ADFFFFD7ADFFFFD6AAFFFFD5A8FFFFD2A4FFFFD09FFFFFCD99FFFFCB + 94FFFFC98AFFEB8F5CFF2C0702A00000000000000000000000080301003F0E08 + 0085130E00AA181800BF1B2404CC1E2B07D41E2F09D7172C07D77D2A10F1FB9F + 5FFFFFC37DFFFFC180FFFFC588FFFFC78EFFFFCA93FFFFCC96FFFFCD98FFFFCE + 9BFFFFCE9BFFFFCE9BFFFFCD99FFFFCC97FFFFC992FFFFC88EFFFFC589FFFFC1 + 81FFFFC67DFFD1693CFF2301009A000000000000000000000000000000000000 + 00090000001900000027000000320000003A00000040000000384605018EE371 + 3DFFFFC571FFFFB970FFFFBD77FFFFBF7CFFFFC281FFFFC484FFFFC587FFFFC5 + 89FFFFC689FFFFC589FFFFC587FFFFC485FFFFC181FFFFBF7DFFFFBD77FFFFBE + 73FFFFB96AFFA2311AF912000085000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000001D01001C9B20 + 0FD7F1944DFFFFBE66FFFFB767FFFFB76BFFFFB970FFFFBB73FFFFBC75FFFFBD + 77FFFFBD77FFFFBC77FFFFBC75FFFFBB73FFFFB970FFFFB86BFFFFBC6AFFFFBB + 64FFD56233FF4B0502D300000059000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000003200 + 004791160AE4D76935FFFEA855FFFFB55DFFFFBB63FFFFBC66FFFFBE68FFFFBE + 6AFFFFBE6BFFFFBD6BFFFFBE69FFFFBC67FFFFBA63FFFFB25CFFF3954BFFBB42 + 20FF5A0301E30200008400000023000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000F00003A4C0000AB85170BE7A4371BF9C1532AFFD26734FFDB7239FFDF74 + 3BFFDF753BFFDD743BFFD96E38FFCC6030FFB34623FD962914F6690703E62900 + 00B9000000750000002900000002000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000130A00004A11000071180000881C0000942000009B2200 + 009F230000A2210000A11E00009E1A0000981500008E0D00007D000000610000 + 003C000000160000000100000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000101 + 01002923230002010100A28B8B00A48C8C00A38A8A2AA68E8E0D4F4444007D6B + 6B42B49D9DD7A99393A6A08A8A6B9F8A8A139280800094828200948282008B7C + 7C002C272700FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000110F0F002E28 + 28009784840002010100A28B8B06A58D8D76C3B0B0EFB7A1A1BC524545216354 + 54ADF3EAEAFFF3EEEEFFD0C1C1FF9A8585569280800094828200948282008B7C + 7C0086777700FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 00000000000000000000000000000000000000000000000000003C3434000202 + 020098858500020101049E8989B2DBCDCDFFFEF8F8FFEBE1E1FFB9A7A7F2D3C4 + C4FFFFFEFEFFFFFFFFFFE7DDDDFF937E7E828D7B7B068F7C7C41927F7F248B7C + 7C0084757500FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000131010001411110000000000000000000000 + 0000978484002722224CBEA7A7FFE0D0D0FFF8F2F2FFFBF5F5FFFFFAFAFFFFFF + FFFFFFFEFEFFFFFFFFFFFAF7F7FFC9BBBBF8AB9A9AD9CFC2C2FFA79595D68979 + 790E84757500FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000F0D0D006F606000A0898900A991910016131300000000000000 + 00009885850538303073B7A0A0FED3C0C0FFF3ECECFFF7F1F1FFFBF6F6FFF7F2 + F2FFF7F2F2FFFEFBFBFFFFFFFFFFFFFFFFFFFFFDFDFFFFFFFFFFEAE2E2FF9584 + 84A884757504FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 00003F3636009A858500AE969600A8909000B399990079686800000000000000 + 00008A7979A0B9A7A7F5C3B2B2FEE7DBDBFFF3ECECFFF4EEEEFFE3D6D6FFD5C3 + C3FFD5C4C4FFDCCFCFFFF2EDEDFFFFFFFFFFFFFFFFFFFFFFFFFFE7DDDDFF9685 + 85C983757507FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000AB949400A68F8F00A58E8E00A68E8E00B097970079686800000000001311 + 112EA99696FDECDEDEFFF0E7E7FFEEE5E5FFF2EAEAFFDED0D0FF998686F58878 + 78DA9D8C8CF1C9B6B6FFD9CACAFFF5F0F0FFFFFFFFFFFDFAFAFFA69595EF7B6F + 6F1B80737300FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000100 + 0000A28C8C00A38D8D00A58E8E00A48C8C03B096960078676700000000004D44 + 4497C2AEAEFFDDCECEFFE8DDDDFFEBE1E1FFF3E9E9FFBFAFAFFE5248484A0000 + 000E09080833544B4BACC2B0B0FFE9DEDEFFFFFEFEFFFFFFFFFFB9ABABF5766A + 6A63766C6C12FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000352E2E000100 + 0000A38D8D00A28C8C00A1898941AE9797CEAF96969A75646400060505168372 + 72F4C3ADADFFCEB8B8FFD4C2C2FFE9DEDEFFF0E6E6FFBFAFAFFE867878314640 + 400000000000000000176B5F5FC7E2D4D4FFFEFBFBFFFFFDFDFFFAF8F8FFD8CE + CEFF8E8181D5FFFFFF00FFFFFF00FFFFFF00FFFFFF00736363009D8A8A000100 + 0000A28C8C06A38D8D8FC3B0B0FEF0E6E6FFD9CACAFF978282AF776666B0A092 + 92FFA59898FFB5A2A2FFCDB8B8FFE3D6D6FFECE1E1FFDFD2D2FF8D7E7EB88378 + 780B57515100292727003B333394DDCFCFFFFFFBFBFFFEFBFBFFFFFFFFFFFFFF + FFFF988B8BDEFFFFFF00FFFFFF00FFFFFF00FFFFFF00322B2B00998686000100 + 00006355556CC6AFAFFFF2E8E8FFFCF7F7FFFBF6F6FFE7DBDBFFEEE3E3FFF1ED + EDFFDDDDDDFF9D9292FFCFBCBCFFE5D8D8FFE7DBDBFFEDE2E2FFD6C8C8FF988A + 8AD380757586857A7A99AEA1A1F3F5EDEDFFFBF6F6FFF7F1F1FFECE3E3FFE3D6 + D6FF837878BDFFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000988585000000 + 0001867575D4CEB7B7FFDCCCCCFFF7F1F1FFF8F2F2FFFDF8F8FFFFFCFCFFFFFF + FFFFDBD7D7FFA59494FFD9CACAFFE5D8D8FFE5D8D8FFE7DCDCFFEDE2E2FFEBDF + DFFFDED2D2FFE4D8D8FFF7EEEEFFF6F0F0FFF8F1F1FFDCCDCDFFD6C2C2FFB4A2 + A2FF6A646463FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000009C8989001815 + 152A726363C7C5ADADFFD9C7C7FFF4EEEEFFF6F0F0FFFAF4F4FFF9F3F3FFF4EF + EFFFA59C9CFFB29F9FFFCAB9B9FFDCCBCBFFD4C3C3FFD6C6C6FFE5D9D9FFEADF + DFFFEFE5E5FFF2E9E9FFF2E9E9FFF3ECECFFF9F2F2FFCABCBCFF6A6060DF4F4A + 4A8765616100FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000006C5E5E57B4A0 + A0F6B7A6A6F9C9B7B7FFECE2E2FFF3EBEBFFF5EFEFFFEAE0E0FFD6C5C5FFD1BF + BFFFA59999FF938585FFC5B1B1FFBFABABFFBBA7A7FFC9B8B8FFDACCCCFFE9DD + DDFFE9DEDEFFE5D8D8FFDDCFCFFFE7DCDCFFF6F0F0FFE7DADAFF696161BE0000 + 000067626200FFFFFF00FFFFFF00FFFFFF00FFFFFF0003020208776868CDDBC9 + C9FFF1E6E6FFEEE4E4FFEFE6E6FFF1E9E9FFEADFDFFFBEAAAAFFAA9797FFAD9A + 9AFFBDAAAAFF9A8D8DFF8D8080FF9E9595FF968F8FFFB09F9FFFDCCCCCFFE4D8 + D8FFE4D7D7FFD2BFBFFFCCBABAFFD0C3C3FFE8D8D8FFBBA9A9FF656161720000 + 000067626200FFFFFF00FFFFFF00FFFFFF00FFFFFF001916163EA79494FCD7C7 + C7FFEBE1E1FFEBE1E1FFECE2E2FFF2E9E9FFD5C5C5FF685A5AAF131111431613 + 13484139398E8F7F7FF4C0B0B0FFE8DEDEFFCCCBCBFF9A8D8DFFDDCACAFFE0CF + CFFFBEACACFF4E4848BA7A7070E6CFBCBCFFAD9D9DFF504B4BA0585757030000 + 00006C676700FFFFFF00FFFFFF00FFFFFF00FFFFFF002C272765B5A1A1FFCEB9 + B9FFD5C3C3FFE4D6D6FFEBE0E0FFF1E7E7FFC6B6B6FF7D6F6F56131111000000 + 0000000000011D1A1A60A29191F7E5D8D8FFDBD7D7FF898282FF9D8E8EFFAE9C + 9CFF897C7CFD423D3D830A0B0B4D544F4FBF2120205F000101005A5858000000 + 000022202000FFFFFF00FFFFFF00FFFFFF00FFFFFF003E373787BCA7A7FFD0BA + BAFFCAB4B4FFD6C5C5FFE9DFDFFFEDE3E3FFD7C8C8FF857777A0817575003E39 + 390009080800000000034A4242A7D4C4C4FFF5F0F0FFDBD9D9FFC0BFBFFFABAA + AAFFD3CECEFFA19292F1504949130000000100000000050606005A5858000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000D0C0C38433C3C918274 + 74DEBEA9A9FFD4C1C1FFE6DADAFFE9DEDEFFECE0E0FFB1A1A1FC786D6D687B72 + 72006D656500514B4B00473F3FA5D5C6C6FFFFFBFBFFFFFCFCFFFFFFFFFFFFFF + FFFFFDF7F7FF8A7D7DD1746B6B000000000003030300040505005F5D5D000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000001F1C + 1C60AF9D9DFFE2D1D1FFE5D9D9FFE7DBDBFFEADFDFFFE9DDDDFFB8A9A9FF897C + 7CC77E73739D8B7E7EC4BFB1B1FFF5EDEDFFF9F3F3FFFBF7F7FFEDE3E3FFE9DD + DDFFDACACAFF7B7171B86F66660000000000000000000A0B0B00262525000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000010101026D61 + 61C0CAB7B7FFE2D4D4FFE4D7D7FFE6D9D9FFE8DCDCFFEADFDFFFEFE4E4FFE6DA + DAFFDED1D1FFE8DDDDFFF6EEEEFFF5EFEFFFF8F1F1FFEDE4E4FFD6C3C3FFDCC8 + C8FFAA9898FF696363606F666600000000001918180028262600000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000018171742A997 + 97FFC7B5B5FFCFBFBFFFDFD0D0FFD6C5C5FFD9CACAFFE7DADAFFE9DEDEFFECE2 + E2FFF0E7E7FFF1E9E9FFF2EAEAFFF3EBEBFFF6F1F1FFE8DDDDFF978787FE7A6F + 6FE9676060A76460600070666600383535004A47470003030300000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000807072B7167 + 67DAC3B0B0FFCDBABAFFD5C0C0FFCDB9B9FFC9B7B7FFD5C6C6FFE8DCDCFFE9DE + DEFFEAE0E0FFE9DEDEFFE6DBDBFFEEE4E4FFF4EDEDFFFAF3F3FFB1A4A4FF312F + 2F740404040065606000514C4C00201F1F000101010000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000F0E + 0E4C8C7F7FF5C0ABABFF908282F9998A8AFEC4B1B1FFD5C4C4FFE6D9D9FFE8DD + DDFFE6D9D9FFDDCBCBFFD1C1C1FFD2C5C5FFEBE2E2FFECDEDEFFAD9C9CFF6360 + 60640000000065606000676565002D2C2C000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0004211F1F6F3834348B0B0B0B3619181869928484F7DAC7C7FFDDCECEFFE3D6 + D6FFD1BFBFFFB1A0A0FFBFAEAEFFCFC0C0FFDCCBCBFFC6B2B2FF726B6BC55A5A + 5A05000000006B6565004E4C4C00040404000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000197D7272EEDECACAFFDCCBCBFFDBC8 + C8FF8D7F7FFB242424855C5555D3BFADADFFAC9C9CFF4D4848BD1E1F1F1F5A5A + 5A0000000000242222000D0D0D00000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000104B4747BC8B7E7EF3A69797FFAB9A + 9AFF6461618F0607070002020234434040B62726267400000003000000005A5A + 5A00000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000050000001D0607073D1717176A2B2A + 2A83535353110D0D0D0000000001000000060000000000000000000000005A5A + 5A00000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00 } end + object MainMenu1: TMainMenu + left = 469 + top = 221 + object MenuItem1: TMenuItem + Caption = 'File' + object MnuQuit: TMenuItem + Caption = 'Quit' + OnClick = MnuQuitClick + end + end + object MnuMaintenance: TMenuItem + Caption = 'Maintenance' + object MnuResources: TMenuItem + Caption = 'Resources' + OnClick = MnuResourcesClick + end + object MnuSettings: TMenuItem + Caption = 'Settings' + OnClick = MnuSettingsClick + end + end + object MenuItem2: TMenuItem + Caption = 'Help' + object MnuAbout: TMenuItem + Caption = 'About Visual PlanIt' + OnClick = MnuAboutClick + end + end + end end diff --git a/components/tvplanit/examples/demo/demomain.lrt b/components/tvplanit/examples/demo/demomain.lrt index f18760d14..12504679a 100644 --- a/components/tvplanit/examples/demo/demomain.lrt +++ b/components/tvplanit/examples/demo/demomain.lrt @@ -1,11 +1,25 @@ TMAINFORM.CAPTION=Turbo Power VisualPlanIt Demo -TMAINFORM.BTNNEWRES.CAPTION=New resource -TMAINFORM.BTNEDITRES.CAPTION=Edit resource -TMAINFORM.LABEL1.CAPTION=Language TMAINFORM.TABEVENTS.CAPTION=Events -TMAINFORM.LABEL2.CAPTION=Tage +TMAINFORM.LBLVISIBLEDAYS.CAPTION=Visible days +TMAINFORM.CBGRANULARITY.TEXT=30 Min +TMAINFORM.LBLGRANULARITY.CAPTION=Granularity TMAINFORM.TABTASKS.CAPTION=Tasks TMAINFORM.RBALLTASKS.CAPTION=All tasks TMAINFORM.RBHIDECOMPLETEDTASKS.CAPTION=Hide completed tasks TMAINFORM.TABCONTACTS.CAPTION=Contacts -TMAINFORM.TABINFO.CAPTION=Info +TMAINFORM.TABRESOURCES.CAPTION=Maintenance +TMAINFORM.BTNNEWRES.CAPTION=New +TMAINFORM.BTNEDITRES.CAPTION=Edit +TMAINFORM.BTNDELETERES.CAPTION=Delete +TMAINFORM.TABSETTINGS.CAPTION=Settings +TMAINFORM.LBLLANGUAGE.CAPTION=Language +TMAINFORM.LBLTIMEFORMAT.CAPTION=Time format +TMAINFORM.LBLFIRSTDAYOFWEEK.CAPTION=First day of week +TMAINFORM.TITLELBL.CAPTION=TitleLbl +TMAINFORM.MENUITEM1.CAPTION=File +TMAINFORM.MNUQUIT.CAPTION=Quit +TMAINFORM.MNUMAINTENANCE.CAPTION=Maintenance +TMAINFORM.MNURESOURCES.CAPTION=Resources +TMAINFORM.MNUSETTINGS.CAPTION=Settings +TMAINFORM.MENUITEM2.CAPTION=Help +TMAINFORM.MNUABOUT.CAPTION=About Visual PlanIt diff --git a/components/tvplanit/examples/demo/demomain.pas b/components/tvplanit/examples/demo/demomain.pas index 72220d4da..814f26536 100644 --- a/components/tvplanit/examples/demo/demomain.pas +++ b/components/tvplanit/examples/demo/demomain.pas @@ -6,8 +6,8 @@ interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, - StdCtrls, ComCtrls, LCLTranslator, - VpBaseDS, VpDayView, VpWeekView, VpTaskList, + StdCtrls, ComCtrls, LCLTranslator, Menus, + VpBaseDS, VpDayView, VpWeekView, VpTaskList, VpAbout, VpContactGrid, VpMonthView, VpResEditDlg, VpContactButtons, VpBufDS, VpNavBar; type @@ -17,25 +17,43 @@ type TMainForm = class(TForm) BtnNewRes: TButton; BtnEditRes: TButton; + BtnDeleteRes: TButton; CbLanguages: TComboBox; + CbGranularity: TComboBox; + CbTimeFormat: TComboBox; + CbFirstDayOfWeek: TComboBox; + Img: TImage; ImageList1: TImageList; - Label1: TLabel; - Label2: TLabel; - Memo1: TMemo; + LblFirstDayOfWeek: TLabel; + LblTimeFormat: TLabel; + LblGranularity: TLabel; + LblLanguage: TLabel; + LblVisibleDays: TLabel; + TitleLbl: TLabel; + MainMenu1: TMainMenu; + MenuItem1: TMenuItem; + MenuItem2: TMenuItem; + MnuSettings: TMenuItem; + MnuAbout: TMenuItem; + MnuMaintenance: TMenuItem; + MnuQuit: TMenuItem; + MnuResources: TMenuItem; PageControl1: TPageControl; Panel1: TPanel; - Panel2: TPanel; - Panel3: TPanel; + LeftPanel: TPanel; DaySelectorPanel: TPanel; + HeaderPanel: TPanel; + Panel6: TPanel; RbAllTasks: TRadioButton; RbHideCompletedTasks: TRadioButton; Splitter2: TSplitter; Splitter3: TSplitter; TabEvents: TTabSheet; TabContacts: TTabSheet; - TabInfo: TTabSheet; + TabResources: TTabSheet; + TabSettings: TTabSheet; TabTasks: TTabSheet; - TrackBar1: TTrackBar; + DaysTrackBar: TTrackBar; VpBufDSDataStore1: TVpBufDSDataStore; VpContactButtonBar1: TVpContactButtonBar; VpContactGrid1: TVpContactGrid; @@ -47,23 +65,42 @@ type VpResourceEditDialog1: TVpResourceEditDialog; VpTaskList1: TVpTaskList; VpWeekView1: TVpWeekView; + procedure BtnDeleteResClick(Sender: TObject); procedure BtnNewResClick(Sender: TObject); procedure BtnEditResClick(Sender: TObject); + procedure CbFirstDayOfWeekChange(Sender: TObject); + procedure CbGranularityChange(Sender: TObject); procedure CbLanguagesChange(Sender: TObject); + procedure CbTimeFormatChange(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); procedure FormCreate(Sender: TObject); + procedure MnuQuitClick(Sender: TObject); + procedure MnuResourcesClick(Sender: TObject); + procedure MnuSettingsClick(Sender: TObject); + procedure MnuAboutClick(Sender: TObject); procedure RbAllTasksChange(Sender: TObject); procedure RbHideCompletedTasksChange(Sender: TObject); - procedure TrackBar1Change(Sender: TObject); + procedure DaysTrackBarChange(Sender: TObject); procedure VpNavBar1ItemClick(Sender: TObject; Button: TMouseButton; Shift: TShiftState; Index: Integer); private { private declarations } FLang: String; + FActiveView: Integer; procedure PopulateLanguages; procedure ReadIni; + procedure SetActiveView(AValue: Integer); procedure SetLanguage(ALang: String); overload; procedure SetLanguage(AIndex: Integer); overload; + procedure ShowAllEvents; + procedure ShowContacts; + procedure ShowEventsPerDay; + procedure ShowEventsPerMonth; + procedure ShowEventsPerWeek; + procedure ShowResources; + procedure ShowSettings; + procedure ShowTasks; + procedure WriteIni; public { public declarations } @@ -80,12 +117,42 @@ uses {$IFDEF WINDOWS} Windows, {$ENDIF} - LResources, LazUTF8, LazFileUtils, StrUtils, Translations, IniFiles, + LResources, LazUTF8, LazFileUtils, StrUtils, Translations, IniFiles, Math, VpMisc, VpBase, VpData; const LANGUAGE_DIR = '..\..\languages\'; +resourcestring + RSConfirmDeleteRes = 'Do you really want to delete resource %s?'; + RSEventsOverview = 'Events overview'; + RSEventsPerMonth = 'Events per month'; + RSEventsPerWeek = 'Events per week'; + RSEventsPerDay = 'Events per day'; + RSTasks = 'Tasks'; + RSContacts = 'Contacts'; + RSResources = 'Resources'; + RSSettings = 'Program settings'; + RSSettings_short = 'Settings'; + RSPlanner = 'Planner'; + RSMaintenance = 'Maintenance'; + RS24Hours = '24 hours'; + RS12Hours = '12 hours AM/PM'; + RS5Min = '5 min'; + RS6Min = '6 min'; + RS10Min = '10 min'; + RS15Min = '15 min'; + RS20Min = '20 min'; + RS30Min = '30 min'; + RS60Min = '60 min'; + RSSunday = 'Sunday'; + RSMonday = 'Monday'; + RSTuesday = 'Tuesday'; + RSWednesday = 'Wednesday'; + RSThursday = 'Thursday'; + RSFriday = 'Friday'; + RSSaturday = 'Saturday'; + {$IFDEF WINDOWS} { This function determines the LCID from the language code. Works only for Windows. } @@ -140,19 +207,57 @@ begin Result := dtSunday; end; + { TMainForm } +procedure TMainForm.BtnDeleteResClick(Sender: TObject); +var + res: TVpResource; +begin + res := VpControlLink1.Datastore.Resource; + if res = nil then + exit; + + if MessageDlg(Format(RSConfirmDeleteRes, [res.Description]), mtConfirmation, [mbYes, mbNo], 0) = mrOK then + VpControlLink1.Datastore.Resources.RemoveResource(res); +end; + +// Edits the currently selected resource +procedure TMainForm.BtnEditResClick(Sender: TObject); +begin + // Open the resource editor dialog, everything is done here. + VpResourceEditDialog1.Execute; +end; + // Adds a new resource procedure TMainForm.BtnNewResClick(Sender: TObject); begin VpResourceEditDialog1.AddNewResource; end; +procedure TMainForm.CbFirstDayOfWeekChange(Sender: TObject); +begin + VpWeekView1.WeekStartsOn := TVpDayType(CbFirstDayOfWeek.ItemIndex); + VpMonthView1.WeekStartsOn := TVpDayType(CbFirstDayOfWeek.ItemIndex); +end; + +procedure TMainForm.CbGranularityChange(Sender: TObject); +begin + VpDayView1.Granularity := TVpGranularity(CbGranularity.ItemIndex); +end; + procedure TMainForm.CbLanguagesChange(Sender: TObject); begin SetLanguage(CbLanguages.ItemIndex); end; +procedure TMainForm.CbTimeFormatChange(Sender: TObject); +begin + VpDayView1.TimeFormat := TVpTimeFormat(CbTimeFormat.ItemIndex); + VpWeekView1.TimeFormat := TVpTimeFormat(CbTimeFormat.ItemIndex); + VpMonthView1.TimeFormat := TVpTimeFormat(CbTimeFormat.ItemIndex); +end; + procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: boolean); begin if CanClose then @@ -162,28 +267,50 @@ begin end; end; -// Edits the currently selected resource -procedure TMainForm.BtnEditResClick(Sender: TObject); -begin - // Open the resource editor dialog, everything is done here. - VpResourceEditDialog1.Execute; -end; - // Load the last resource. procedure TMainForm.FormCreate(Sender: TObject); var lastRes: TVpResource; + ds: TVpCustomDataStore; begin PopulateLanguages; ReadIni; - if VpBufDSDatastore1.Resources.Count > 0 then + ds := VpControlLink1.Datastore; + if ds.Resources.Count > 0 then begin - lastRes := VpBufDSDatastore1.Resources.Items[VpBufDSDatastore1.Resources.Count-1]; - VpBufDSDatastore1.ResourceID := lastRes.ResourceID; + lastRes := ds.Resources.Items[ds.Resources.Count-1]; + ds.ResourceID := lastRes.ResourceID; end; end; +procedure TMainForm.MnuAboutClick(Sender: TObject); +var + F: TfrmAbout; +begin + F := TfrmAbout.Create(nil); + try + F.ShowModal; + finally + F.Free; + end; +end; + +procedure TMainForm.MnuSettingsClick(Sender: TObject); +begin + ShowSettings; +end; + +procedure TMainForm.MnuQuitClick(Sender: TObject); +begin + Close; +end; + +procedure TMainForm.MnuResourcesClick(Sender: TObject); +begin + ShowResources; +end; + procedure TMainForm.PopulateLanguages; function ExtractLanguage(s: String): String; @@ -250,11 +377,47 @@ procedure TMainForm.ReadIni; var ini: TCustomIniFile; lang: String; + idx: Integer; + L,T, W,H: Integer; + R: TRect; begin ini := TMemIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')); try + WindowState := wsNormal; + R := Screen.WorkAreaRect; + L := ini.ReadInteger('Form', 'Left', Left); + T := ini.ReadInteger('Form', 'Top', Top); + W := ini.ReadInteger('Form', 'Width', Width); + H := ini.ReadInteger('Form', 'Height', Height); + if L < R.Left then L := R.Left; + if L + W > R.Right then L := R.Right - W; + if L < R.Left then W := R.Right - R.Left; + if T < R.Top then T := R.Top; + if T + H > R.Bottom then T := R.Bottom - H; + if T < R.Top then H := R.Bottom - R.Top; + SetBounds(L, T, W, H); + + w := ini.ReadInteger('Form', 'LeftPanel_Width', LeftPanel.Width); + if w < 200 then w := 200; + LeftPanel.Width := w; + + h := ini.ReadInteger('Form', 'BottomPanel_Height', VpMonthView1.Height); + if h < 160 then h := 160; + VpMonthView1.Height := h; + lang := ini.ReadString('Settings', 'Language', GetDefaultLang); SetLanguage(lang); + + SetActiveView(ini.ReadInteger('Settings', 'ActiveView', 0)); + VpNavBar1.ActiveFolder := FActiveView mod 1000; + + CbTimeFormat.ItemIndex := ini.ReadInteger('Settings', 'TimeFormat', ord(VpDayView1.TimeFormat)); + CbTimeFormatChange(nil); + CbGranularity.ItemIndex := ini.ReadInteger('Settings', 'Granularity', ord(VpDayView1.Granularity)); + CbGranularityChange(nil); + CbFirstDayOfWeek.ItemIndex := ini.ReadInteger('Settings', 'FirstDayOfWeek', ord(VpWeekView1.WeekStartsOn)); + CbFirstDayOfWeekChange(nil); + finally ini.Free; end; @@ -266,7 +429,19 @@ var begin ini := TMemIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')); try + if WindowState = wsNormal then begin + ini.WriteInteger('Form', 'Width', Width); + ini.WriteInteger('Form', 'Height', Height); + ini.WriteInteger('Left', 'Left', Left); + ini.WriteInteger('Form', 'Top', Top); + ini.WriteInteger('Form', 'LeftPanel_Width', LeftPanel.Width); + ini.WriteInteger('Form', 'BottomPanel_Height', VpMonthView1.Height); + end; ini.WriteString('Settings', 'Language', FLang); + ini.WriteInteger('Settings', 'ActiveView', FActiveView); + ini.WriteInteger('Settings', 'TimeFormat', ord(VpDayView1.TimeFormat)); + ini.WriteInteger('Settings', 'Granularity', ord(VpDayView1.Granularity)); + ini.WriteInteger('Settings', 'FirstDayOfWeek', ord(VpWeekView1.WeekStartsOn)); finally ini.Free; end; @@ -304,6 +479,8 @@ var tfmt: TVpTimeFormat; firstWeekDay: TVpDayType; translator: TUpdateTranslator; + nf: TVpNavFolder; + w: Integer; begin langdir := ExpandFileName(AppendPathDelim(Application.Location) + LANGUAGE_DIR); @@ -347,6 +524,55 @@ begin if not found then CbLanguages.ItemIndex := 0; + // Update UI strings + nf := TVpNavFolder(VpNavBar1.FolderCollection.ItemByName('NFPlanner')); + nf.Caption := RSPlanner; + nf.ItemByName('NIEvents').Caption := RSEventsOverview; + nf.ItemByName('NIEventsByMonth').Caption := RSEventsPerMonth; + nf.ItemByName('NIEventsByWeek').Caption := RSEventsPerWeek; + nf.ItemByName('NIEventsByDay').Caption := RSEventsPerDay; + nf.ItemByName('NITasks').Caption := RSTasks; + nf.ItemByName('NIContacts').Caption := RSContacts; + + nf := TVpNavFolder(VpNavBar1.FolderCollection.ItemByName('NFMaintenance')); + nf.Caption := RSMaintenance; + nf.ItemByname('NIResources').Caption := RSResources; + nf.ItembyName('NISettings').Caption := RSSettings_short; + + CbTimeFormat.Items.Clear; + CbTimeFormat.Items.Add(RS24hours); + CbTimeFormat.Items.Add(RS12hours); + + CbGranularity.Items.Clear; + CbGranularity.Items.Add(RS5Min); + CbGranularity.Items.Add(RS6Min); + CbGranularity.Items.Add(RS10Min); + CbGranularity.Items.Add(RS15Min); + CbGranularity.Items.Add(RS20Min); + CbGranularity.Items.Add(RS30Min); + CbGranularity.Items.Add(RS60Min); + + CbFirstDayOfWeek.Items.Clear; + CbFirstDayOfWeek.Items.Add(RSSunday); + CbFirstDayOfWeek.Items.Add(RSMonday); + CbFirstDayOfWeek.Items.Add(RSTuesday); + CbFirstDayOfWeek.Items.Add(RSWednesday); + CbFirstDayOfWeek.Items.Add(RSThursday); + CbFirstDayOfWeek.Items.Add(RSFriday); + CbFirstDayOfWeek.Items.Add(RSSaturday); + + DaysTrackbar.Left := GetLabelWidth(LblVisibleDays) + LblVisibleDays.Left + 8; + LblGranularity.Left := DaysTrackbar.Left + DaysTrackbar.Width + 32; + CbGranularity.Left := LblGranularity.Left + GetLabelWidth(LblGranularity) + 8; + w := MaxValue([GetLabelWidth(LblLanguage), GetLabelWidth(LblTimeFormat), GetLabelWidth(LblFirstDayOfWeek)]); + CbLanguages.Left := 24 + w + 8; + LblLanguage.Left := CbLanguages.Left - 8 - GetLabelWidth(LblLanguage); + CbTimeFormat.Left := CbLanguages.Left; + LblTimeFormat.Left := CbTimeFormat.Left - 8 - GetLabelWidth(LblTimeFormat); + CbFirstDayOfWeek.Left := CbLanguages.Left; + LblFirstDayOfWeek.Left := CbFirstDayOfWeek.Left - 8 - GetLabelWidth(LblFirstDayOfWeek); + RbHideCompletedTasks.Left := RbAllTasks.Left + RbAllTasks.Width + 48; + // Next settings work correctly only for Windows. {$IFDEF WINDOWS} UpdateFormatSettings(ALang); @@ -364,84 +590,123 @@ begin VpWeekView1.WeekStartsOn := firstWeekDay; {$ENDIF} + SetActiveView(FActiveView); Invalidate; end; -procedure TMainForm.TrackBar1Change(Sender: TObject); +procedure TMainForm.ShowAllEvents; begin - VpDayView1.NumDays := Trackbar1.Position; + PageControl1.ActivePage := TabEvents; + VpDayView1.Parent := LeftPanel; + VpMonthView1.Parent := LeftPanel; + VpMonthView1.Align := alBottom; + VpDayview1.Show; + VpMonthView1.Show; + Splitter2.Top := 0; + LeftPanel.Show; + Splitter3.Show; + Splitter3.Left := Width; + VpWeekView1.Show; + DaySelectorPanel.Hide; + VpDayView1.NumDays := 1; + TitleLbl.Caption := RSEventsOverview; + ImageList1.GetBitmap(0, Img.Picture.Bitmap); +end; + +procedure TMainform.ShowEventsPerMonth; +begin + PageControl1.ActivePage := TabEvents; + LeftPanel.Hide; + Splitter3.Hide; + VpWeekView1.Hide; + VpMonthView1.Parent := TabEvents; + VpMonthView1.Align := alClient; + VpMonthView1.Show; + DaySelectorPanel.Hide; + + TitleLbl.Caption := RSEventsPerMonth; + ImageList1.GetBitmap(5, Img.Picture.Bitmap); +end; + +procedure TMainForm.ShowEventsPerWeek; +begin + PageControl1.ActivePage := TabEvents; + LeftPanel.Hide; + Splitter3.Hide; + VpMonthView1.Hide; + VpDayView1.Hide; + VpWeekView1.Show; + DaySelectorPanel.Hide; + + TitleLbl.Caption := RSEventsPerWeek; + ImageList1.GetBitmap(4, Img.Picture.Bitmap); +end; + +procedure TMainform.ShowEventsPerDay; +begin + PageControl1.ActivePage := TabEvents; + LeftPanel.Hide; + Splitter3.Hide; + VpWeekView1.Hide; + VpDayView1.Parent := TabEvents; + VpDayView1.Align := alClient; + VpDayView1.Show; + DaySelectorPanel.Parent := TabEvents; + DaySelectorPanel.Show; + VpDayView1.NumDays := DaysTrackBar.Position; + + TitleLbl.Caption := RSEventsPerDay; + ImageList1.GetBitmap(3, Img.Picture.Bitmap); +end; + +procedure TMainForm.ShowTasks; +begin + Pagecontrol1.ActivePage := TabTasks; + titleLbl.Caption := RSTasks; + ImageList1.GetBitmap(1, Img.Picture.Bitmap); +end; + +procedure TMainForm.ShowContacts; +begin + PageControl1.ActivePage := TabContacts; + TitleLbl.Caption := RSContacts; + ImageList1.GetBitmap(2, Img.Picture.Bitmap); +end; + +procedure TMainForm.ShowResources; +begin + PageControl1.Activepage := TabResources; + TitleLbl.Caption := RSResources; + ImageList1.GetBitmap(7, Img.Picture.Bitmap); +end; + +procedure TMainForm.ShowSettings; +begin + PageControl1.ActivePage := TabSettings; + TitleLbl.Caption := RSSettings; + ImageList1.GetBitmap(8, Img.Picture.Bitmap); +end; + +procedure TMainForm.DaysTrackBarChange(Sender: TObject); +begin + VpDayView1.NumDays := DaysTrackBar.Position; end; procedure TMainForm.VpNavBar1ItemClick(Sender: TObject; Button: TMouseButton; Shift: TShiftState; Index: Integer); - - procedure ShowAllEvents; - begin - PageControl1.ActivePage := TabEvents; - VpDayView1.Parent := Panel2; - VpMonthView1.Parent := Panel2; - VpMonthView1.Align := alBottom; - VpDayview1.Show; - VpMonthView1.Show; - Splitter2.Top := 0; - Panel2.Show; - Splitter3.Show; - Splitter3.Left := Width; - VpWeekView1.Show; - DaySelectorPanel.Hide; - VpDayView1.NumDays := 1; - end; - - procedure ShowEventsPerMonth; - begin - PageControl1.ActivePage := TabEvents; - Panel2.Hide; - Splitter3.Hide; - VpWeekView1.Hide; - VpMonthView1.Parent := TabEvents; - VpMonthView1.Align := alClient; - VpMonthView1.Show; - DaySelectorPanel.Hide; - end; - - procedure ShowEventsPerWeek; - begin - PageControl1.ActivePage := TabEvents; - Panel2.Hide; - Splitter3.Hide; - VpMonthView1.Hide; - VpDayView1.Hide; - VpWeekView1.Show; - DaySelectorPanel.Hide; - end; - - procedure ShowEventsPerDay; - begin - PageControl1.ActivePage := TabEvents; - Panel2.Hide; - Splitter3.Hide; - VpWeekView1.Hide; - VpDayView1.Parent := TabEvents; - VpDayView1.Align := alClient; - VpDayView1.Show; - DaySelectorPanel.Parent := TabEvents; - DaySelectorPanel.Show; - VpDayView1.NumDays := Trackbar1.Position; - end; - - procedure ShowTasks; - begin - Pagecontrol1.ActivePage := TabTasks; - end; - - procedure ShowContacts; - begin - PageControl1.ActivePage := TabContacts; - end; - begin - case VpNavBar1.ActiveFolder of - 0: case Index of // All planner items + SetActiveView(VpNavBar1.ActiveFolder * 1000 + Index); +end; + +procedure TMainForm.SetActiveView(AValue: Integer); +var + folderIndex, itemIndex: Integer; +begin + FActiveView := AValue; + folderIndex := AValue div 1000; + itemIndex := AValue mod 1000; + case folderIndex of + 0: case itemIndex of // All planner items 0: ShowAllEvents; // show all 1: ShowEventsPerMonth; // Month view only 2: ShowEventsPerWeek; // Week view only @@ -449,14 +714,10 @@ begin 4: ShowTasks; // Tasks 5: ShowContacts; // Contacts end; - 1: case Index of // Events only - 0: ShowAllEvents; // show all - 1: ShowEventsPerMonth; // Month view only - 2: ShowEventsPerWeek; // Week view only - 3: ShowEventsPerDay; // Day view only + 1: case itemIndex of + 0: ShowResources; + 1: ShowSettings; end; - 2: ShowTasks; - 3: ShowContacts; end; end; diff --git a/components/tvplanit/languages/demo.de.po b/components/tvplanit/languages/demo.de.po index b148a56d2..fa6086de8 100644 --- a/components/tvplanit/languages/demo.de.po +++ b/components/tvplanit/languages/demo.de.po @@ -11,25 +11,195 @@ msgstr "" "X-Generator: Poedit 1.8.8\n" "Language: de\n" +#: demomain.rs10min +msgid "10 min" +msgstr "10 Min." + +#: demomain.rs12hours +msgctxt "demomain.rs12hours" +msgid "12 hours AM/PM" +msgstr "12 Std. AM/PM" + +#: demomain.rs15min +msgid "15 min" +msgstr "15 Min." + +#: demomain.rs20min +msgid "20 min" +msgstr "20 Min." + +#: demomain.rs24hours +msgid "24 hours" +msgstr "24 Std." + +#: demomain.rs30min +msgid "30 min" +msgstr "30 Min." + +#: demomain.rs5min +msgid "5 min" +msgstr "5 Min." + +#: demomain.rs60min +msgid "60 min" +msgstr "60 Min." + +#: demomain.rs6min +msgid "6 min" +msgstr "6 Min." + +#: demomain.rsconfirmdeleteres +msgid "Do you really want to delete resource %s?" +msgstr "Wollen Sie wirklich die Ressource %s löschen?" + +#: demomain.rscontacts +msgctxt "demomain.rscontacts" +msgid "Contacts" +msgstr "Kontakte" + +#: demomain.rseventsoverview +msgid "Events overview" +msgstr "Termin-Übersicht" + +#: demomain.rseventsperday +msgid "Events per day" +msgstr "Termine pro Tag" + +#: demomain.rseventspermonth +msgid "Events per month" +msgstr "Termine pro Monat" + +#: demomain.rseventsperweek +msgid "Events per week" +msgstr "Termine pro Woche" + +#: demomain.rsfriday +msgid "Friday" +msgstr "Freitag" + +#: demomain.rsmaintenance +msgctxt "demomain.rsmaintenance" +msgid "Maintenance" +msgstr "Wartung" + +#: demomain.rsmonday +msgid "Monday" +msgstr "Montag" + +#: demomain.rsplanner +msgid "Planner" +msgstr "Planer" + +#: demomain.rsresources +msgctxt "demomain.rsresources" +msgid "Resources" +msgstr "Ressourcen" + +#: demomain.rssaturday +msgid "Saturday" +msgstr "Samstag" + +#: demomain.rssettings +msgid "Program settings" +msgstr "Programm-Einstellungen" + +#: demomain.rssettings_short +msgctxt "demomain.rssettings_short" +msgid "Settings" +msgstr "Einstellungen" + +#: demomain.rssunday +msgid "Sunday" +msgstr "Sonntag" + +#: demomain.rstasks +msgctxt "demomain.rstasks" +msgid "Tasks" +msgstr "Aufgaben" + +#: demomain.rsthursday +msgid "Thursday" +msgstr "Donnerstag" + +#: demomain.rstuesday +msgid "Tuesday" +msgstr "Dienstag" + +#: demomain.rswednesday +msgid "Wednesday" +msgstr "Mittwoch" + +#: tmainform.btndeleteres.caption +msgid "Delete" +msgstr "Löschen" + #: tmainform.btneditres.caption -msgid "Edit resource" -msgstr "Ressource bearbeiten" +msgid "Edit" +msgstr "Bearbeiten" #: tmainform.btnnewres.caption -msgid "New resource" -msgstr "Neue Ressource" +msgid "New" +msgstr "Neu" #: tmainform.caption msgid "Turbo Power VisualPlanIt Demo" msgstr "Turbo Power VisualPlanIt Demo" -#: tmainform.label1.caption +#: tmainform.cbgranularity.text +msgid "30 Min" +msgstr "30 Min" + +#: tmainform.lblfirstdayofweek.caption +msgid "First day of week" +msgstr "Die Woche beginnt am" + +#: tmainform.lblgranularity.caption +msgid "Granularity" +msgstr "Raster" + +#: tmainform.lbllanguage.caption +msgctxt "tmainform.lbllanguage.caption" msgid "Language" msgstr "Sprache" -#: tmainform.label2.caption -msgid "Tage" -msgstr "" +#: tmainform.lbltimeformat.caption +msgid "Time format" +msgstr "Zeitformat" + +#: tmainform.lblvisibledays.caption +msgid "Visible days" +msgstr "Sichtbare Tage" + +#: tmainform.menuitem1.caption +msgid "File" +msgstr "Datei" + +#: tmainform.menuitem2.caption +msgid "Help" +msgstr "Hilfe" + +#: tmainform.mnuabout.caption +msgid "About Visual PlanIt" +msgstr "Über Visual PlanIt" + +#: tmainform.mnumaintenance.caption +msgctxt "tmainform.mnumaintenance.caption" +msgid "Maintenance" +msgstr "Wartung" + +#: tmainform.mnuquit.caption +msgid "Quit" +msgstr "Beenden" + +#: tmainform.mnuresources.caption +msgctxt "tmainform.mnuresources.caption" +msgid "Resources" +msgstr "Ressourcen" + +#: tmainform.mnusettings.caption +msgctxt "tmainform.mnusettings.caption" +msgid "Settings" +msgstr "Einstellungen" #: tmainform.rballtasks.caption msgid "All tasks" @@ -40,18 +210,30 @@ msgid "Hide completed tasks" msgstr "Fertiggestellte Aufgaben ausblenden" #: tmainform.tabcontacts.caption +msgctxt "tmainform.tabcontacts.caption" msgid "Contacts" msgstr "Kontakte" #: tmainform.tabevents.caption msgid "Events" -msgstr "Ereignisse" +msgstr "Termine" -#: tmainform.tabinfo.caption -msgid "Info" -msgstr "Info" +#: tmainform.tabresources.caption +msgctxt "tmainform.tabresources.caption" +msgid "Maintenance" +msgstr "Wartung" + +#: tmainform.tabsettings.caption +msgctxt "tmainform.tabsettings.caption" +msgid "Settings" +msgstr "Einstellungen" #: tmainform.tabtasks.caption +msgctxt "tmainform.tabtasks.caption" msgid "Tasks" msgstr "Aufgaben" +# No need to translate +#: tmainform.titlelbl.caption +msgid "TitleLbl" +msgstr "" diff --git a/components/tvplanit/languages/demo.po b/components/tvplanit/languages/demo.po index 4873a348c..bd708ab01 100644 --- a/components/tvplanit/languages/demo.po +++ b/components/tvplanit/languages/demo.po @@ -1,24 +1,193 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" +#: demomain.rs10min +msgid "10 min" +msgstr "" + +#: demomain.rs12hours +msgid "12 hours AM/PM" +msgstr "" + +#: demomain.rs15min +msgid "15 min" +msgstr "" + +#: demomain.rs20min +msgid "20 min" +msgstr "" + +#: demomain.rs24hours +msgid "24 hours" +msgstr "" + +#: demomain.rs30min +msgid "30 min" +msgstr "" + +#: demomain.rs5min +msgid "5 min" +msgstr "" + +#: demomain.rs60min +msgid "60 min" +msgstr "" + +#: demomain.rs6min +msgid "6 min" +msgstr "" + +#: demomain.rsconfirmdeleteres +msgid "Do you really want to delete resource %s?" +msgstr "" + +#: demomain.rscontacts +msgctxt "demomain.rscontacts" +msgid "Contacts" +msgstr "" + +#: demomain.rseventsoverview +msgid "Events overview" +msgstr "" + +#: demomain.rseventsperday +msgid "Events per day" +msgstr "" + +#: demomain.rseventspermonth +msgid "Events per month" +msgstr "" + +#: demomain.rseventsperweek +msgid "Events per week" +msgstr "" + +#: demomain.rsfriday +msgid "Friday" +msgstr "" + +#: demomain.rsmaintenance +msgctxt "demomain.rsmaintenance" +msgid "Maintenance" +msgstr "" + +#: demomain.rsmonday +msgid "Monday" +msgstr "" + +#: demomain.rsplanner +msgid "Planner" +msgstr "" + +#: demomain.rsresources +msgctxt "demomain.rsresources" +msgid "Resources" +msgstr "" + +#: demomain.rssaturday +msgid "Saturday" +msgstr "" + +#: demomain.rssettings +msgid "Program settings" +msgstr "" + +#: demomain.rssettings_short +msgctxt "demomain.rssettings_short" +msgid "Settings" +msgstr "" + +#: demomain.rssunday +msgid "Sunday" +msgstr "" + +#: demomain.rstasks +msgctxt "demomain.rstasks" +msgid "Tasks" +msgstr "" + +#: demomain.rsthursday +msgid "Thursday" +msgstr "" + +#: demomain.rstuesday +msgid "Tuesday" +msgstr "" + +#: demomain.rswednesday +msgid "Wednesday" +msgstr "" + +#: tmainform.btndeleteres.caption +msgid "Delete" +msgstr "" + #: tmainform.btneditres.caption -msgid "Edit resource" +msgid "Edit" msgstr "" #: tmainform.btnnewres.caption -msgid "New resource" +msgid "New" msgstr "" #: tmainform.caption msgid "Turbo Power VisualPlanIt Demo" msgstr "" -#: tmainform.label1.caption +#: tmainform.cbgranularity.text +msgid "30 Min" +msgstr "" + +#: tmainform.lblfirstdayofweek.caption +msgid "First day of week" +msgstr "" + +#: tmainform.lblgranularity.caption +msgid "Granularity" +msgstr "" + +#: tmainform.lbllanguage.caption +msgctxt "TMAINFORM.LBLLANGUAGE.CAPTION" msgid "Language" msgstr "" -#: tmainform.label2.caption -msgid "Tage" +#: tmainform.lbltimeformat.caption +msgid "Time format" +msgstr "" + +#: tmainform.lblvisibledays.caption +msgid "Visible days" +msgstr "" + +#: tmainform.menuitem1.caption +msgid "File" +msgstr "" + +#: tmainform.menuitem2.caption +msgid "Help" +msgstr "" + +#: tmainform.mnuabout.caption +msgid "About Visual PlanIt" +msgstr "" + +#: tmainform.mnumaintenance.caption +msgctxt "TMAINFORM.MNUMAINTENANCE.CAPTION" +msgid "Maintenance" +msgstr "" + +#: tmainform.mnuquit.caption +msgid "Quit" +msgstr "" + +#: tmainform.mnuresources.caption +msgctxt "TMAINFORM.MNURESOURCES.CAPTION" +msgid "Resources" +msgstr "" + +#: tmainform.mnusettings.caption +msgctxt "TMAINFORM.MNUSETTINGS.CAPTION" +msgid "Settings" msgstr "" #: tmainform.rballtasks.caption @@ -30,6 +199,7 @@ msgid "Hide completed tasks" msgstr "" #: tmainform.tabcontacts.caption +msgctxt "tmainform.tabcontacts.caption" msgid "Contacts" msgstr "" @@ -37,11 +207,22 @@ msgstr "" msgid "Events" msgstr "" -#: tmainform.tabinfo.caption -msgid "Info" +#: tmainform.tabresources.caption +msgctxt "TMAINFORM.TABRESOURCES.CAPTION" +msgid "Maintenance" +msgstr "" + +#: tmainform.tabsettings.caption +msgctxt "tmainform.tabsettings.caption" +msgid "Settings" msgstr "" #: tmainform.tabtasks.caption +msgctxt "tmainform.tabtasks.caption" msgid "Tasks" msgstr "" +#: tmainform.titlelbl.caption +msgid "TitleLbl" +msgstr "" + diff --git a/components/tvplanit/source/vpnavbar.pas b/components/tvplanit/source/vpnavbar.pas index 0dc58f4c8..a27bd3301 100644 --- a/components/tvplanit/source/vpnavbar.pas +++ b/components/tvplanit/source/vpnavbar.pas @@ -128,6 +128,7 @@ type constructor Create(Collection: TCollection); override; destructor Destroy; override; function GetContainer: TVpFolderContainer; + function ItemByName(AName: String): TVpNavBtnItem; property Items[Index: Integer]: TVpNavBtnItem read GetItem; property ItemCount: Integer read GetItemCount; @@ -834,6 +835,18 @@ begin end; {=====} +function TVpNavFolder.ItemByName(AName: String): TVpNavBtnItem; +var + i: Integer; +begin + for i:=0 to ItemCount-1 do begin + Result := Items[i]; + if Result.Name = AName then + exit; + end; + Result := nil; +end; + procedure TVpNavFolder.lfGetEditorCaption(var Caption: string); begin Caption := RSEditingItems;