From a6b4323addd2144f857abc435d260eeb8de25f1e Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Sat, 22 Jul 2023 10:54:38 +0000 Subject: [PATCH] TvPlanIt: Add example for DayView.WrapStyle git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8892 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../examples/dayview_wrapstyle/project1.lpi | 87 +++++++ .../examples/dayview_wrapstyle/project1.lpr | 26 ++ .../examples/dayview_wrapstyle/unit1.lfm | 245 ++++++++++++++++++ .../examples/dayview_wrapstyle/unit1.pas | 85 ++++++ 4 files changed, 443 insertions(+) create mode 100644 components/tvplanit/examples/dayview_wrapstyle/project1.lpi create mode 100644 components/tvplanit/examples/dayview_wrapstyle/project1.lpr create mode 100644 components/tvplanit/examples/dayview_wrapstyle/unit1.lfm create mode 100644 components/tvplanit/examples/dayview_wrapstyle/unit1.pas diff --git a/components/tvplanit/examples/dayview_wrapstyle/project1.lpi b/components/tvplanit/examples/dayview_wrapstyle/project1.lpi new file mode 100644 index 000000000..782f44e2a --- /dev/null +++ b/components/tvplanit/examples/dayview_wrapstyle/project1.lpi @@ -0,0 +1,87 @@ + + + + + + + + + <Scaled Value="True"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <XPManifest> + <DpiAware Value="True"/> + </XPManifest> + <Icon Value="0"/> + </General> + <BuildModes> + <Item Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <UseFileFilters Value="True"/> + </PublishOptions> + <RunParams> + <FormatVersion Value="2"/> + </RunParams> + <RequiredPackages> + <Item> + <PackageName Value="laz_visualplanit_design"/> + </Item> + <Item> + <PackageName Value="laz_visualplanit"/> + </Item> + <Item> + <PackageName Value="LCL"/> + </Item> + </RequiredPackages> + <Units> + <Unit> + <Filename Value="project1.lpr"/> + <IsPartOfProject Value="True"/> + </Unit> + <Unit> + <Filename Value="unit1.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="Form1"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="Unit1"/> + </Unit> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="project1"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Debugging> + <DebugInfoType Value="dsDwarf3"/> + </Debugging> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions> + <Item> + <Name Value="EAbort"/> + </Item> + <Item> + <Name Value="ECodetoolError"/> + </Item> + <Item> + <Name Value="EFOpenError"/> + </Item> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/components/tvplanit/examples/dayview_wrapstyle/project1.lpr b/components/tvplanit/examples/dayview_wrapstyle/project1.lpr new file mode 100644 index 000000000..105af63d3 --- /dev/null +++ b/components/tvplanit/examples/dayview_wrapstyle/project1.lpr @@ -0,0 +1,26 @@ +program project1; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX} + cthreads, + {$ENDIF} + {$IFDEF HASAMIGA} + athreads, + {$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, unit1 + { you can add units after this }; + +{$R *.res} + +begin + RequireDerivedFormResource:=True; + Application.Title:='project1'; + Application.Scaled:=True; + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff --git a/components/tvplanit/examples/dayview_wrapstyle/unit1.lfm b/components/tvplanit/examples/dayview_wrapstyle/unit1.lfm new file mode 100644 index 000000000..18fe78e83 --- /dev/null +++ b/components/tvplanit/examples/dayview_wrapstyle/unit1.lfm @@ -0,0 +1,245 @@ +object Form1: TForm1 + Left = 314 + Height = 394 + Top = 130 + Width = 670 + Caption = 'Form1' + ClientHeight = 394 + ClientWidth = 670 + OnCreate = FormCreate + LCLVersion = '3.99.0.0' + object VpDayView1: TVpDayView + Left = 132 + Height = 394 + Top = 0 + Width = 538 + PopupMenu = VpDayView1.default + DataStore = VpIniDatastore1 + ControlLink = VpControlLink1 + Align = alClient + TabOrder = 0 + TimeSlotColors.Active = clWhite + TimeSlotColors.ActiveRange.RangeBegin = h_00 + TimeSlotColors.ActiveRange.RangeEnd = h_00 + HeadAttributes.Font.Height = -13 + RowHeadAttributes.HourFont.Height = -24 + RowHeadAttributes.MinuteFont.Height = -12 + IconAttributes.RecurringImageIndex = 3 + NumDays = 2 + WrapStyle = wsNoFlow + RowHeight = 50 + end + object Panel1: TPanel + Left = 8 + Height = 378 + Top = 8 + Width = 116 + Align = alLeft + AutoSize = True + BorderSpacing.Around = 8 + BevelOuter = bvNone + ClientHeight = 378 + ClientWidth = 116 + TabOrder = 1 + object RadioGroup1: TRadioGroup + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = Panel1 + Left = 0 + Height = 77 + Top = 0 + Width = 116 + AutoFill = True + AutoSize = True + Caption = 'WrapStyle' + ChildSizing.LeftRightSpacing = 16 + ChildSizing.EnlargeHorizontal = crsHomogenousChildResize + ChildSizing.EnlargeVertical = crsHomogenousChildResize + ChildSizing.ShrinkHorizontal = crsScaleChilds + ChildSizing.ShrinkVertical = crsScaleChilds + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 1 + ClientHeight = 57 + ClientWidth = 112 + Items.Strings = ( + 'wsNone' + 'wsIconFlow' + 'wsNoFlow' + ) + OnClick = RadioGroup1Click + TabOrder = 0 + end + object seRowHeight: TSpinEdit + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = Label1 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = RadioGroup1 + AnchorSideRight.Side = asrBottom + Left = 16 + Height = 23 + Top = 110 + Width = 100 + Alignment = taRightJustify + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 16 + BorderSpacing.Top = 2 + OnChange = seRowHeightChange + TabOrder = 1 + end + object Label1: TLabel + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = RadioGroup1 + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 15 + Top = 93 + Width = 60 + BorderSpacing.Top = 16 + Caption = 'Row height' + end + object Label2: TLabel + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = seRowHeight + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 15 + Top = 141 + Width = 48 + BorderSpacing.Top = 8 + Caption = 'Columns' + end + object seColumns: TSpinEdit + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = Label2 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = RadioGroup1 + AnchorSideRight.Side = asrBottom + Left = 16 + Height = 23 + Top = 158 + Width = 100 + Alignment = taRightJustify + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 16 + BorderSpacing.Top = 2 + OnChange = seColumnsChange + TabOrder = 2 + end + end + object VpControlLink1: TVpControlLink + DataStore = VpIniDatastore1 + Printer.DayStart = h_08 + Printer.DayEnd = h_05 + Printer.Granularity = gr30Min + Printer.MarginUnits = imAbsolutePixel + Printer.PrintFormats = <> + Left = 147 + Top = 66 + end + object VpIniDatastore1: TVpIniDatastore + CategoryColorMap.Category0.Description = 'Category 0' + CategoryColorMap.Category0.ImageIndex = 0 + CategoryColorMap.Category1.Description = 'Category 1' + CategoryColorMap.Category2.Description = 'Category 2' + CategoryColorMap.Category3.Description = 'Category 3' + CategoryColorMap.Category4.Description = 'Category 4' + CategoryColorMap.Category5.Description = 'Category 5' + CategoryColorMap.Category6.Description = 'Category 6' + CategoryColorMap.Category7.Description = 'Category 7' + CategoryColorMap.Category8.Description = 'Category 8' + CategoryColorMap.Category9.Description = 'Category 9' + HiddenCategories.BackgroundColor = clSilver + HiddenCategories.Color = clGray + Images = ImageList2 + AutoConnect = True + FileName = 'data.ini' + Left = 147 + Top = 120 + end + object ImageList1: TImageList + Left = 256 + Top = 118 + Bitmap = { + 4C7A0400000010000000100000003E0300000000000078DAED574D485451143E + A9FD69F4ABB50A42459D19675284CA82B245818B36F6B769EDA29D154899CEA3 + 361104FD91DA0F33D8A2E63D292C88A08551541416945A8B1663A404D1B252A3 + 387DE7799FDC1E336F7CD384052D3EDEBDE7DEEF9E73BE73DE9BB9CC4CFC9B18 + 4C90910D1CFE90499C0D72C9D7F3A1165E98699C8E4F1DDC8ACC2E7B8D33F0DB + 8046AFB117FF7FFCB31FFF4C90CBFECD35C2615E5659C9BBAAAAF84020C02D32 + AEA9E1A599786565BC129C8BC037805D105B57793997A4E206831CC2FA3B6002 + 385351C1EB22112E12606DBDD8D4DA88EC4DE157B8A38835922E3E9CB956F6C8 + 1918173B76CCBB81715927E23C8C37CA73BA27341B7CD7623C095D3A654D7491 + DC303F2D73F8DFA4F28DC97EC58D894DD694BFF3724669292F513AB3E4ABF98A + A933E20AD3E7C91EF8DAA06C4DC021198742BC488B778ECAC9D13EAEE7237B95 + FDA0829B9FA7F995B8AFC396EFACA3868BC52EBD81E74EBFF1635CEFC4EFE807 + 9CCD463FAD7E133EEB7741CBA7447A427A033AD4A4EB1FC51D0392C08A14FD2B + 674C02E72447D154695DEFC42C5CD88269FAB358FA4AED73BF3F76CC6EBFA920 + BA88B6521F55A32647AB74DFA2D9FEFDFD9B7EFFB3F97EE7825F6D702468F0AD + 4094FB9DB580C171D84C01D61BBCF8750617D635F3DC60949F4CF7A5C177FDC6 + FF0B3FCA37810460850D2EF5CBA7DD53DF8D603BD722965EBF7C07D5477815EC + F7BCF85506AF515A7DB2F56AE3D5E0F461DC85E7C350076FF55BBF06830B4206 + 2F976FEA9FAEFFBFFEFFA1BF9F0A862CDA3F68D2739C3F0E8C007DAF4CDA9289 + FBC2A412EC7D24710D9BF418383994A04B788EDA368BAE2663B4C0BE6F58B41D + 36CBE1BEECA122EC1B80ED0BEE157BF473DFDEA1F988E928D67E000F642E770F + 977EDDE07F878FC6B4771C93F6DA6758144FC17F0FFBB18C354B50BBADBD45D7 + 743E7CCFF3BC5F99B40DDC56E47D18BC0F987FF5533FD12A8BEFA7E5A717A5DE + C8E3E3602FEA66D109A9911747CF59D744349A818EC745739D6FD704B5911A49 + AD3CB83B640F6ADDE9E6DBBD821EB1EB8C3864EEBAE7EE1B9ED2FEE9C06D2AD4 + F575F2951EC59E1EA5C918FC5CC1F314F04CF5F6FD373728E36FF8EB046D9677 + 0748029FC527B8CDA649F9B97C677F02967D0FC4 + } + end + object ImageList2: TImageList + Height = 24 + Width = 24 + Left = 216 + Top = 228 + Bitmap = { + 4C7A040000001800000018000000960500000000000078DAED595D685C45143E + F5A7E2BF2F2A8AE243157D525111C420C67F04ADD65A412CF82A1524B6D4DF87 + BC547C5054FC41452D84B4CDDEDD358AD81789FD332D4ADACD6637A1250FFA22 + 3E3446D06E4B9BB8EBF7DD9C5927B773F7CEDDBD2B411238DCBB73CF7C3373CE + 77CE999988FCFB570DA491462A814C4C06728178FE69BF1FAA79793351A89B93 + BFF1DCE73B4638A79CF4A7D0CDE1790A327AF86BB9B00BF8FD58C313BE63B483 + 1FBE7B8E91161F76DF4DFD701D8104F4077D9E157E9C6481EFFAD3752CE3FF4F + F0A1FB06FA9CE0B31BF8D03FA99C3CD925FC459CEF367E27F9ADD19015F8F60C + 72C04B4DB1E3D66AA71EF5D3E023AFAC4F597BD62F25FCA67DA235CC88D5DE8E + 7DBAEDDFCCF819C8778B38E210D4959E76E3CBCB77BA469FFCD0802396255ED2 + EE09DB14BF3D611A21A6C587ACED62B8D40A9F7B31C4C35359E34F15E51AE0BE + 363D2CABF07D1BE2E95AAC797396F307DEA7F8F633C6294DE6E4578E11D5290F + C8F9687F994F5F7CEAE2F7C7DC478E6F93DEB00D63406F2BDAD745B077A3BDC6 + 67748C24FBA0FD6DE49AEDD5A2F4721DA5825C373D2817F1FBD837721EDABEE7 + D9A2B25D2EC77384EFF4970F3EFB60FE07D0FE16EC54A5ADE88F2836CF2D56DB + A231E2F077ED92B3A677CA398702B9B4B243AE9ECCCBE7A13D8A7295B189CB1E + D16F2E7C7CBB1DBFFFC25C1F37FDCC1C5B61BBC600E6161B9F38789F8614E933 + 7B0C1F6C87DF7FB1F1215FB0BDD12F6710DB8C9106DB1EC3C60FCF3681CCD2DE + 4D1FEB1890F134D8167FB6587BA313F0E393511DB4AD06F6505A6C077F4ADDCC + 6FE0F748524D4F2BE13EE13FA82DCB357C694B65485621069E452CBC02CE6DC2 + FB4326277522CC759A475CBCF8139CFEA0FCA55C961E5B56A0EFEBC0A85B78BF + 81CF7BF02CEB3D8C69FF7D2A27F745E6B512F211F45F70EEB772F2A1E90FBD31 + D8E55E8E69BE8F057231FBE2FB51D59B439F0D167E8F6977C4F4AB16F667639F + C8D971EB3CBC43AE84DE4FD679E8B910232F77BB620B73B81398F3FA6DAB3DE7 + 38D91FC8B9D0FD4AFB9C02466F2C7E20478C4D5ACD3B2AACBD98FB41C59C9928 + C8632E7CD673D600EC45AE4FCD61D40D62EBFCBE75E61ED42DD6F514FC5D09EE + DC45FE50F0FB5DCDC5F52C721B39D8CDDCA91C9DF3C54F98CB5C5CBC64758EA1 + 3D32C137FEC9C93BC677F423FDE98B15F2047C89C1DFA9EF47EDFD8AAF80FF37 + 847B1DF0DD85AFFB9E197D3FC8F849336FF43BA458479CF8886FD8E21E932731 + C630F3804FDE45FE1A347C9808E48E387CCD471B2CFFFEC87CD62AD698B32C1B + 6F76F8774E79D263F57BDEE2F80CC6EC2B0DCB2576CCA3ED41EE219B3CCBCB7B + 71F1420E467982F6FBE9AF482C54B826D6178BBFF369CF80CDFD30EA2030DE0F + EBE2E9B1413E8F4C0DC92D9DD6E4F05C92970730D717F51EE8699ED596FA1E25 + 08E44CF2079CBB95C277B6758A8BBCF030CFEF11FF1A9925DFA9D3466EBF9967 + 4D0BABA6F7210595516D33DFF75687E426CF73C13AAB6F09FE5CE38ADFF0CCBB + F07F29C3FD9AEB0CE4C0AEEB9EA6CF95034FBBAB800E7037EADEA31E3786DAA4 + A6D88FC4E5F0B8BB1CF47F54C7A8550A72A3A3EF3ECDFB7DAD6A44ABBB28AE43 + 73E21E074F427B476D92063FCC47EA0FEEB32DBB0F6AEE5C9354E392EED280BB + 56F1074CECE0F71FB45B522DF1C1D7F3FE71E63EAE47F7A9B4CDA84F8DF6B90B + 04FE7EEA22375D015FDFA6F8791F7CFB7FA64678BE89E831061B269F287EA1DD + 3D4C782FB258AF18CE1F393B8D7D52E497A67DD4BFB33EFEF5AD11B67F6D7E32 + 9F743C77E4079B9F91F81A6F155F89B2105FE5687CA94FF66AFDDFD8C19DCC26 + 97BF437CE46FBD2B9D67AE6AC32EAB35BF1D73E537CB76F5700CAEC3C756BCAF + 5B38D7CF6BDFB51EFE31F5A5CCDF2E5EB14D75CBAA7B2C09DBB6959ED74DFC1C + 574E336E8A7C570E36E32BCE260971C2BB8C017B9F66DF0DF05B9427EDF28EB1 + 68F209DF7D79FC0F8C3AAA2B + } + end +end diff --git a/components/tvplanit/examples/dayview_wrapstyle/unit1.pas b/components/tvplanit/examples/dayview_wrapstyle/unit1.pas new file mode 100644 index 000000000..e74b2144c --- /dev/null +++ b/components/tvplanit/examples/dayview_wrapstyle/unit1.pas @@ -0,0 +1,85 @@ +unit Unit1; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, Spin, + StdCtrls, VpBaseDS, VpIniDs, VpDayView, VpData; + +type + + { TForm1 } + + TForm1 = class(TForm) + ImageList1: TImageList; + ImageList2: TImageList; + Label1: TLabel; + Label2: TLabel; + Panel1: TPanel; + RadioGroup1: TRadioGroup; + seRowHeight: TSpinEdit; + seColumns: TSpinEdit; + VpControlLink1: TVpControlLink; + VpDayView1: TVpDayView; + VpIniDatastore1: TVpIniDatastore; + procedure FormCreate(Sender: TObject); + procedure RadioGroup1Click(Sender: TObject); + procedure seColumnsChange(Sender: TObject); + procedure seRowHeightChange(Sender: TObject); + private + + public + + end; + +var + Form1: TForm1; + +implementation + +{$R *.lfm} + +{ TForm1 } + +procedure TForm1.FormCreate(Sender: TObject); +var + d: TDate; +begin + if VpIniDatastore1.Resources.Count = 0 then + VpDayView1.CheckCreateResource; + if VpIniDatastore1.Resources.Count > 0 then + VpIniDatastore1.Resource := VpIniDatastore1.Resources.Items[0]; + + d := Date(); + if VpIniDatastore1.Resource.Schedule.EventCountByDay(d) = 0 then + with VpIniDatastore1.Resource.Schedule.AddEvent( + VpIniDatastore1.GetNextID('Resource'), + d + EncodeTime(8,0,0,0), + d + EncodeTime(8,30,0,0) + ) do + Description := 'Test1 test2 test3 test4 test5 test6 test7'; + + RadioGroup1.ItemIndex := Integer(VpDayView1.WrapStyle); + seRowHeight.Value := VpDayView1.RowHeight; + seColumns.Value := VpDayView1.NumDays; +end; + +procedure TForm1.RadioGroup1Click(Sender: TObject); +begin + VpDayView1.WrapStyle := TVpDVWrapStyle(Radiogroup1.ItemIndex); +end; + +procedure TForm1.seColumnsChange(Sender: TObject); +begin + VpDayView1.NumDays := seColumns.Value;; +end; + +procedure TForm1.seRowHeightChange(Sender: TObject); +begin + VpDayView1.RowHeight := seRowHeight.Value; +end; + +end. +