jvcllaz: In JvTimeFramework demo, make first day of week and prime time settings user-configurable.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7116 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2019-08-10 17:09:21 +00:00
parent 93c3a3bf73
commit 3297b8d309
4 changed files with 180 additions and 8 deletions

View File

@ -22,9 +22,9 @@ object MainForm: TMainForm
Height = 515
Top = 73
Width = 477
ActivePage = TabSheet3
ActivePage = TabSheet1
Align = alClient
TabIndex = 2
TabIndex = 0
TabOrder = 0
object TabSheet1: TTabSheet
Caption = 'Day View'

View File

@ -161,6 +161,13 @@ begin
JvTFDays1.FancyRowHdrAttr.Hr2400 := Hr2400;
JvTFDays1.SelFancyRowHdrAttr.Hr2400 := Hr2400;
JvTFDaysPrinter1.FancyRowHdrAttr.Hr2400 := Hr2400;
JvTFWeeks1.StartOfWeek := FirstDayOfWeek;
JvTFMonths1.StartOfWeek := FirstDayOfWeek;
JvTFDays1.PrimeTime.StartTime := PrimeTimeStart;
JvTFDays1.PrimeTime.EndTime := PrimeTimeEnd;
JvTFDays1.PrimeTime.Color := PrimeTimeColor;
end;
end;
@ -779,6 +786,10 @@ begin
DaysCombo.ItemIndex := ini.ReadInteger('MainForm', 'DaysCombo', 0);
GlobalSettings.Hr2400 := ini.ReadBool('Settings', 'Hr2400', GlobalSettings.Hr2400);
GlobalSettings.FirstDayOfWeek := TTFDayofWeek(ini.ReadInteger('Settings', 'FirstDayOfWeek', ord(GlobalSettings.FirstDayOfWeek)));
GlobalSettings.PrimeTimeStart := ini.ReadTime('Settings', 'PrimeTimeStart', GlobalSettings.PrimeTimeStart);
GlobalSettings.PrimeTimeEnd := ini.ReadTime('Settings', 'PrimeTimeEnd', GlobalSettings.PrimeTimeEnd);
GlobalSettings.PrimeTimeColor := TColor(ini.ReadInteger('Settings', 'PrimeTimeColor', Integer(GlobalSettings.PrimeTimeColor)));
ApplySettings;
finally
ini.Free;
@ -798,6 +809,10 @@ begin
ini.WriteInteger('MainForm', 'DaysCombo', DaysCombo.ItemIndex);
ini.WriteBool('Settings', 'Hr2400', GlobalSettings.Hr2400);
ini.WriteInteger('Settings', 'FirstDayOfWeek', ord(GlobalSettings.FirstDayOfWeek));
ini.WriteTime('Settings', 'PrimeTimeStart', GlobalSettings.PrimeTimeStart);
ini.WriteTime('Settings', 'PrimeTimeEnd', GlobalSettings.PrimeTimeEnd);
ini.WriteInteger('Settings', 'PrimeTimeColor', GlobalSettings.PrimeTimeColor);
finally
ini.Free;
end;

View File

@ -7,7 +7,9 @@ object SettingsForm: TSettingsForm
ClientHeight = 299
ClientWidth = 403
OnClose = FormClose
OnCreate = FormCreate
OnShow = FormShow
Position = poMainFormCenter
LCLVersion = '2.1.0.0'
object ButtonPanel1: TButtonPanel
Left = 6
@ -36,6 +38,17 @@ object SettingsForm: TSettingsForm
ClientHeight = 253
ClientWidth = 403
TabOrder = 1
object Bevel1: TBevel
AnchorSideTop.Control = edPrimeTimeStart
AnchorSideBottom.Control = edPrimeTimeEnd
AnchorSideBottom.Side = asrBottom
Left = 288
Height = 50
Top = 62
Width = 37
Anchors = [akTop, akLeft, akBottom]
Shape = bsSpacer
end
object cbTimeFormat: TComboBox
AnchorSideTop.Control = Panel1
Left = 132
@ -67,5 +80,108 @@ object SettingsForm: TSettingsForm
FocusControl = cbTimeFormat
ParentColor = False
end
object lblFirstDayOfWeek: TLabel
AnchorSideTop.Control = cbFirstDayOfWeek
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = lblTimeFormat
AnchorSideRight.Side = asrBottom
Left = 36
Height = 15
Top = 39
Width = 88
Anchors = [akTop, akRight]
Caption = 'First day of week'
FocusControl = cbFirstDayOfWeek
ParentColor = False
end
object cbFirstDayOfWeek: TComboBox
AnchorSideLeft.Control = cbTimeFormat
AnchorSideTop.Control = cbTimeFormat
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = cbTimeFormat
AnchorSideRight.Side = asrBottom
Left = 132
Height = 23
Top = 35
Width = 124
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 4
ItemHeight = 15
Style = csDropDownList
TabOrder = 1
end
object edPrimeTimeStart: TTimeEdit
AnchorSideLeft.Control = cbTimeFormat
AnchorSideTop.Control = cbFirstDayOfWeek
AnchorSideTop.Side = asrBottom
Left = 132
Height = 23
Top = 62
Width = 103
ButtonWidth = 23
BorderSpacing.Top = 4
NumGlyphs = 1
MaxLength = 0
TabOrder = 2
Text = 'edPrimeTimeStart'
end
object edPrimeTimeEnd: TTimeEdit
AnchorSideLeft.Control = cbTimeFormat
AnchorSideTop.Control = edPrimeTimeStart
AnchorSideTop.Side = asrBottom
Left = 132
Height = 23
Top = 89
Width = 103
ButtonWidth = 23
BorderSpacing.Top = 4
NumGlyphs = 1
MaxLength = 0
TabOrder = 3
Text = 'edPrimeTimeEnd'
end
object lblPrimeTimeStart: TLabel
AnchorSideTop.Control = edPrimeTimeStart
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = lblTimeFormat
AnchorSideRight.Side = asrBottom
Left = 40
Height = 15
Top = 66
Width = 84
Anchors = [akTop, akRight]
Caption = 'Prime time start'
ParentColor = False
end
object lblPrimeTimeEnd: TLabel
AnchorSideTop.Control = edPrimeTimeEnd
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = lblTimeFormat
AnchorSideRight.Side = asrBottom
Left = 43
Height = 15
Top = 93
Width = 81
Anchors = [akTop, akRight]
Caption = 'Prime time end'
ParentColor = False
end
object clbPrimeTimeColor: TColorButton
AnchorSideLeft.Control = edPrimeTimeStart
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Bevel1
AnchorSideTop.Side = asrCenter
Left = 239
Height = 25
Top = 75
Width = 104
BorderSpacing.Left = 4
BorderWidth = 2
ButtonColorAutoSize = False
ButtonColorSize = 16
ButtonColor = clBlack
Caption = 'Prime time'
Margin = 4
end
end
end

View File

@ -6,21 +6,44 @@ interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ButtonPanel, StdCtrls,
ExtCtrls, JvTFDays;
ExtCtrls, EditBtn, JvTFUtils, JvTFDays;
type
TGlobalSettings = record
Hr2400: Boolean;
Hr2400: Boolean; // 24 hour or 12 hour AM/PM format
FirstDayOfWeek: TTFDayOfWeek;
PrimeTimeStart: TTime;
PrimeTimeEnd: TTime;
PrimeTimeColor: TColor;
end;
var
GlobalSettings: TGlobalSettings = (
Hr2400: false;
FirstDayOfWeek: dowSunday;
PrimeTimeStart: 8 * ONE_HOUR;
PrimeTimeEnd: 17 * ONE_HOUR;
PrimeTimeColor: $00C4FFFF;
);
type
{ TSettingsForm }
TSettingsForm = class(TForm)
Bevel1: TBevel;
ButtonPanel1: TButtonPanel;
cbTimeFormat: TComboBox;
cbFirstDayOfWeek: TComboBox;
clbPrimeTimeColor: TColorButton;
lblPrimeTimeStart: TLabel;
lblPrimeTimeEnd: TLabel;
lblFirstDayOfWeek: TLabel;
lblTimeFormat: TLabel;
Panel1: TPanel;
edPrimeTimeStart: TTimeEdit;
edPrimeTimeEnd: TTimeEdit;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure OKButtonClick(Sender: TObject);
private
@ -33,10 +56,6 @@ type
var
SettingsForm: TSettingsForm;
GlobalSettings: TGlobalSettings = (
Hr2400: false
);
implementation
{$R *.lfm}
@ -44,6 +63,10 @@ implementation
procedure TSettingsForm.ControlsToSettings;
begin
GlobalSettings.Hr2400 := cbTimeFormat.ItemIndex = 0;
GlobalSettings.FirstDayOfWeek := TTFDayOfWeek(cbFirstDayOfWeek.ItemIndex);
GlobalSettings.PrimeTimeStart := frac(edPrimeTimeStart.Time);
GlobalSettings.PrimeTimeEnd := frac(edPrimeTimeEnd.Time);
GlobalSettings.PrimeTimeColor := clbPrimeTimeColor.ButtonColor;
end;
procedure TSettingsForm.SettingsToControls;
@ -52,6 +75,10 @@ begin
cbTimeFormat.ItemIndex := 0
else
cbTimeFormat.ItemIndex := 1;
cbFirstDayOfWeek.ItemIndex := ord(GlobalSettings.FirstDayOfWeek);
edPrimeTimeStart.Time := GlobalSettings.PrimeTimeStart;
edPrimeTimeEnd.Time := GlobalSettings.PrimeTimeEnd;
clbPrimeTimeColor.ButtonColor := GlobalSettings.PrimeTimeColor;
end;
procedure TSettingsForm.FormClose(Sender: TObject;
@ -61,6 +88,20 @@ begin
ControlsToSettings;
end;
procedure TSettingsForm.FormCreate(Sender: TObject);
var
i: Integer;
begin
cbFirstDayOfWeek.Items.BeginUpdate;
try
cbFirstDayOfWeek.Clear;
for i:=1 to 7 do
cbFirstDayOfWeek.Items.Add(DefaultFormatSettings.LongDayNames[i]);
finally
cbFirstDayOfWeek.Items.EndUpdate;
end;
end;
procedure TSettingsForm.FormShow(Sender: TObject);
begin
FOKPressed := false;