From fc0fee4e0004fcc2235a8ccc7b82f030edb29055 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Sat, 2 Jul 2016 23:14:26 +0000 Subject: [PATCH] tvplanit: Beginning to implement borderless DrawingStyle (dsNone) git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4899 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../tvplanit/examples/demo/demomain.lfm | 49 ++++++++++++++----- .../tvplanit/examples/demo/demomain.lrt | 4 +- .../tvplanit/examples/demo/demomain.pas | 30 +++++++++--- components/tvplanit/languages/demo.de.po | 16 ++++-- components/tvplanit/languages/demo.po | 16 ++++-- .../tvplanit/source/vpdayviewpainter.pas | 9 ++-- .../tvplanit/source/vpweekviewpainter.pas | 14 +++--- 7 files changed, 99 insertions(+), 39 deletions(-) diff --git a/components/tvplanit/examples/demo/demomain.lfm b/components/tvplanit/examples/demo/demomain.lfm index a369e215e..558b05aaa 100644 --- a/components/tvplanit/examples/demo/demomain.lfm +++ b/components/tvplanit/examples/demo/demomain.lfm @@ -25,9 +25,9 @@ object MainForm: TMainForm Height = 532 Top = 48 Width = 780 - ActivePage = TabEvents + ActivePage = TabSettings Align = alClient - TabIndex = 0 + TabIndex = 4 TabOrder = 0 object TabEvents: TTabSheet Caption = 'Events' @@ -473,15 +473,6 @@ object MainForm: TMainForm State = cbChecked TabOrder = 3 end - object Cb3D: TCheckBox - Left = 349 - Height = 19 - Top = 64 - Width = 107 - Caption = '3d display mode' - OnChange = Cb3DChange - TabOrder = 4 - end object LblAddressBuilder: TLabel AnchorSideTop.Control = CbAddressBuilder AnchorSideTop.Side = asrCenter @@ -507,9 +498,43 @@ object MainForm: TMainForm ) OnChange = CbAddressBuilderChange Style = csDropDownList - TabOrder = 5 + TabOrder = 4 Text = '(default)' end + object LblDrawingStyle: TLabel + Left = 349 + Height = 15 + Top = 68 + Width = 74 + Caption = 'Drawing style:' + ParentColor = False + end + object ComboBox1: TComboBox + Left = 10 + Height = 23 + Top = 10 + Width = 100 + ItemHeight = 15 + TabOrder = 5 + Text = 'ComboBox1' + end + object CbDrawingStyle: TComboBox + Left = 439 + Height = 23 + Top = 64 + Width = 113 + ItemHeight = 15 + ItemIndex = 0 + Items.Strings = ( + 'flat' + '3d' + 'borderless' + ) + OnChange = CbDrawingStyleChange + Style = csDropDownList + TabOrder = 6 + Text = 'flat' + end end end object HeaderPanel: TPanel diff --git a/components/tvplanit/examples/demo/demomain.lrt b/components/tvplanit/examples/demo/demomain.lrt index 9c0cf3dca..1aa6ec81b 100644 --- a/components/tvplanit/examples/demo/demomain.lrt +++ b/components/tvplanit/examples/demo/demomain.lrt @@ -16,9 +16,11 @@ TMAINFORM.LBLLANGUAGE.CAPTION=Language TMAINFORM.LBLTIMEFORMAT.CAPTION=Time format TMAINFORM.LBLFIRSTDAYOFWEEK.CAPTION=First day of week TMAINFORM.CBALLOWINPLACEEDITING.CAPTION=Allow inplace editing -TMAINFORM.CB3D.CAPTION=3d display mode TMAINFORM.LBLADDRESSBUILDER.CAPTION=Address builder TMAINFORM.CBADDRESSBUILDER.TEXT=(default) +TMAINFORM.LBLDRAWINGSTYLE.CAPTION=Drawing style: +TMAINFORM.COMBOBOX1.TEXT=ComboBox1 +TMAINFORM.CBDRAWINGSTYLE.TEXT=flat TMAINFORM.TITLELBL.CAPTION=TitleLbl TMAINFORM.MENUITEM1.CAPTION=File TMAINFORM.MNUQUIT.CAPTION=Quit diff --git a/components/tvplanit/examples/demo/demomain.pas b/components/tvplanit/examples/demo/demomain.pas index fb92da322..722dd31a5 100644 --- a/components/tvplanit/examples/demo/demomain.pas +++ b/components/tvplanit/examples/demo/demomain.pas @@ -9,7 +9,7 @@ uses StdCtrls, ComCtrls, LCLTranslator, Menus, VpBaseDS, VpDayView, VpWeekView, VpTaskList, VpAbout, VpContactGrid, VpMonthView, VpResEditDlg, VpContactButtons, VpBufDS, VpNavBar, - VpData; + VpData, Types; type @@ -24,10 +24,12 @@ type CbTimeFormat: TComboBox; CbFirstDayOfWeek: TComboBox; CbAllowInplaceEditing: TCheckBox; - Cb3D: TCheckBox; CbAddressBuilder: TComboBox; + ComboBox1: TComboBox; + CbDrawingStyle: TComboBox; Img: TImage; ImageList1: TImageList; + LblDrawingStyle: TLabel; LblAddressBuilder: TLabel; LblFirstDayOfWeek: TLabel; LblTimeFormat: TLabel; @@ -76,6 +78,7 @@ type procedure Cb3DChange(Sender: TObject); procedure CbAddressBuilderChange(Sender: TObject); procedure CbAllowInplaceEditingChange(Sender: TObject); + procedure CbDrawingStyleChange(Sender: TObject); procedure CbFirstDayOfWeekChange(Sender: TObject); procedure CbGranularityChange(Sender: TObject); procedure CbLanguagesChange(Sender: TObject); @@ -248,7 +251,7 @@ procedure TMainForm.Cb3DChange(Sender: TObject); var ds: TVpDrawingStyle; begin - if Cb3D.Checked then ds := ds3d else ds := dsFlat; + ds := TVpDrawingStyle(CbDrawingStyle.ItemIndex); VpTaskList1.DrawingStyle := ds; VpContactGrid1.DrawingStyle := ds; VpDayView1.DrawingStyle := ds; @@ -272,6 +275,18 @@ begin VpTaskList1.AllowInplaceEditing := CbAllowInplaceEditing.Checked; end; +procedure TMainForm.CbDrawingStyleChange(Sender: TObject); +var + ds: TVpDrawingStyle; +begin + ds := TVpDrawingStyle(CbDrawingStyle.ItemIndex); + VpTaskList1.DrawingStyle := ds; + VpContactGrid1.DrawingStyle := ds; + VpDayView1.DrawingStyle := ds; + VpWeekView1.DrawingStyle := ds; + VpMonthView1.DrawingStyle := ds; +end; + procedure TMainForm.CbFirstDayOfWeekChange(Sender: TObject); begin VpWeekView1.WeekStartsOn := TVpDayType(CbFirstDayOfWeek.ItemIndex); @@ -476,8 +491,8 @@ begin CbAllowInplaceEditing.Checked := ini.ReadBool('Settings', 'AllowInplaceEditing', CbAllowInplaceEditing.Checked); CbAllowInplaceEditingChange(nil); - Cb3D.Checked := ini.ReadBool('Settings', '3dViewstyle', false); - Cb3dChange(nil); + CbDrawingStyle.ItemIndex := ini.ReadInteger('Settings', 'DrawingStyle', CbDrawingStyle.ItemIndex); + CbDrawingStyleChange(nil); finally ini.Free; @@ -510,7 +525,7 @@ begin ini.WriteInteger('Settings', 'VisibleDays', FVisibleDays); ini.WriteBool('Settings', 'AllTasks', VpTaskList1.DisplayOptions.ShowAll); ini.WriteBool('Settings', 'AllowInplaceEditing', CbAllowInplaceEditing.Checked); - ini.WriteBool('Settings', '3dViewStyle', Cb3D.Checked); + ini.WriteInteger('Settings', 'DrawingStyle', CbDrawingStyle.ItemIndex); finally ini.Free; end; @@ -645,7 +660,8 @@ begin CbAddressBuilder.Left := CbLanguages.Left; LblAddressBuilder.Left := CbAddressBuilder.Left - 8 - GetLabelWidth(LblAddressBuilder); CbAllowInplaceEditing.Left := CbLanguages.Left + CbLanguages.Width + 32; - Cb3D.Left := CbAllowInplaceEditing.Left; + LblDrawingStyle.Left := CbAllowInplaceEditing.Left; + CbDrawingStyle.Left := LblDrawingStyle.Left + GetLabelWidth(LblDrawingStyle) + 8; RbHideCompletedTasks.Left := RbAllTasks.Left + RbAllTasks.Width + 48; // Next settings work correctly only for Windows. diff --git a/components/tvplanit/languages/demo.de.po b/components/tvplanit/languages/demo.de.po index fecb4d698..bc508f9cd 100644 --- a/components/tvplanit/languages/demo.de.po +++ b/components/tvplanit/languages/demo.de.po @@ -199,10 +199,6 @@ msgstr "Neu" msgid "Turbo Power VisualPlanIt Demo" msgstr "Turbo Power VisualPlanIt Demo" -#: tmainform.cb3d.caption -msgid "3d display mode" -msgstr "3D-Anzeige" - #: tmainform.cbaddressbuilder.text msgid "(default)" msgstr "" @@ -211,14 +207,26 @@ msgstr "" msgid "Allow inplace editing" msgstr "Editieren an Ort und Stelle erlauben" +#: tmainform.cbdrawingstyle.text +msgid "flat" +msgstr "" + #: tmainform.cbgranularity.text msgid "30 Min" msgstr "30 Min" +#: tmainform.combobox1.text +msgid "ComboBox1" +msgstr "" + #: tmainform.lbladdressbuilder.caption msgid "Address builder" msgstr "Aufbau der Adresse:" +#: tmainform.lbldrawingstyle.caption +msgid "Drawing style:" +msgstr "" + #: tmainform.lblfirstdayofweek.caption msgid "First day of week" msgstr "Die Woche beginnt am" diff --git a/components/tvplanit/languages/demo.po b/components/tvplanit/languages/demo.po index 800caaf87..cdb129516 100644 --- a/components/tvplanit/languages/demo.po +++ b/components/tvplanit/languages/demo.po @@ -188,10 +188,6 @@ msgstr "" msgid "Turbo Power VisualPlanIt Demo" msgstr "" -#: tmainform.cb3d.caption -msgid "3d display mode" -msgstr "" - #: tmainform.cbaddressbuilder.text msgid "(default)" msgstr "" @@ -200,14 +196,26 @@ msgstr "" msgid "Allow inplace editing" msgstr "" +#: tmainform.cbdrawingstyle.text +msgid "flat" +msgstr "" + #: tmainform.cbgranularity.text msgid "30 Min" msgstr "" +#: tmainform.combobox1.text +msgid "ComboBox1" +msgstr "" + #: tmainform.lbladdressbuilder.caption msgid "Address builder" msgstr "" +#: tmainform.lbldrawingstyle.caption +msgid "Drawing style:" +msgstr "" + #: tmainform.lblfirstdayofweek.caption msgid "First day of week" msgstr "" diff --git a/components/tvplanit/source/vpdayviewpainter.pas b/components/tvplanit/source/vpdayviewpainter.pas index daa170423..2cf522490 100644 --- a/components/tvplanit/source/vpdayviewpainter.pas +++ b/components/tvplanit/source/vpdayviewpainter.pas @@ -1089,12 +1089,13 @@ begin dvDayUpBtn.Width := dvDayDownBtn.Width; w := dvWeekDownBtn.Width + dvWeekUpBtn.Width + dvDaydownBtn.Width + dvDayUpBtn.Width; - if DrawingStyle = dsFlat then begin - dvTodayBtn.Left := 1 + (RealRowHeadWidth - w) div 2; - dvTodayBtn.Top := 1; - end else begin + if DrawingStyle = ds3d then begin dvTodayBtn.Left := 2 + (RealRowHeadWidth - w) div 2; dvTodayBtn.Top := 2; + end else + begin + dvTodayBtn.Left := 1 + (RealRowHeadWidth - w) div 2; + dvTodayBtn.Top := 1; end; { size and place the WeekDown button } diff --git a/components/tvplanit/source/vpweekviewpainter.pas b/components/tvplanit/source/vpweekviewpainter.pas index 9b001703e..383bad02b 100644 --- a/components/tvplanit/source/vpweekviewpainter.pas +++ b/components/tvplanit/source/vpweekviewpainter.pas @@ -526,12 +526,8 @@ var begin RenderCanvas.Brush.Color := RealHeadAttrColor; RenderCanvas.Font.Assign(TFont(FWeekView.HeadAttributes.Font)); + { draw the header cell and borders } - if FWeekView.DrawingStyle = dsFlat then begin - { draw simple border rectangle } - HeadRect := Rect(RealLeft, RealTop, RealRight, RealTop + TVpWeekViewOpener(FWeekView).wvHeaderHeight + 2); - TPSFillRect(RenderCanvas, Angle, RenderIn, HeadRect); - end else if FWeekView.DrawingStyle = ds3d then begin { draw a 3d bevel } HeadRect.Left := RealLeft + 2; @@ -545,8 +541,12 @@ begin BevelHighlightColor, BevelDarkShadow ); - end else - raise Exception.Create('DrawingStyle not supported.'); + end else begin +// if FWeekView.DrawingStyle = dsFlat then begin +// { draw simple border rectangle } + HeadRect := Rect(RealLeft, RealTop, RealRight, RealTop + TVpWeekViewOpener(FWeekView).wvHeaderHeight + 2); + TPSFillRect(RenderCanvas, Angle, RenderIn, HeadRect); + end; { build header caption } weekNo := GetWeekOfYear(StartDate);