CalLite: Add new option coPersistentSelectedDates

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7604 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz 2020-08-15 20:58:28 +00:00
parent 4109836a16
commit 58ee5bae50
6 changed files with 59 additions and 45 deletions

View File

@ -76,7 +76,6 @@
<Linking>
<Debugging>
<DebugInfoType Value="dsDwarf2Set"/>
<UseExternalDbgSyms Value="True"/>
</Debugging>
<Options>
<Win32>

View File

@ -320,7 +320,7 @@ object Form1: TForm1
Left = 49
Height = 15
Top = 157
Width = 88
Width = 89
Caption = 'Past/next month'
ParentColor = False
end
@ -366,7 +366,7 @@ object Form1: TForm1
Left = 49
Height = 15
Top = 229
Width = 66
Width = 65
Caption = 'Today frame'
ParentColor = False
end
@ -396,7 +396,7 @@ object Form1: TForm1
Left = 49
Height = 15
Top = 253
Width = 43
Width = 42
Caption = 'Top row'
ParentColor = False
end
@ -647,39 +647,25 @@ object Form1: TForm1
left = 336
top = 432
Bitmap = {
4C69010000001000000010000000FFFFFF00FFFFFF00FFFFFF0000BBC74800C7
D3C7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000BBC74800C7
D3C7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000D3DAF630F1
F3FF00BBC77CFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000D3DAF630F1
F3FF00BBC77CFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0007D2D8FF67F5
F6FF06D2D8FEFFFFFF0000BBC74800C7D3C7FFFFFF00FFFFFF0007D2D8FF67F5
F6FF06D1D7FEFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0097BCADFF57C4
C3FF83B5A8F7C2C2C2DA07D2D9FF30F1F3FF5CBEC5ECC2C2C2B094B19FFF55BF
BCFF78A794E5FFFFFF00FFFFFF00FFFFFF00C2C2C224C2C2C28EEDBB9DFFEFC8
AFFFE8B696FFF6F6F6FF07D2D8FF67F5F6FF07D2D7FFECECECFFE5A983FFEAB7
98FFDB9569EBC2C2C224FFFFFF00FFFFFF00B1C2C6A1E3E3E3FFEBB999FFEEC3
AAFFEBB495FFFFFFFFFF94B3A1FF55BFBCFF86B1A0FFFFFFFFFFE5A37BFFE9B2
92FFDE9A72FFB1C2C6A1FFFFFF00FFFFFF00BEC2C3FCFCFCFCFFEEC1A6FFEAB2
92FFF1CEBBFFFFFFFFFFE6AA85FFEAB898FFE5A57FFFFFFFFFFFE8AF98FFE39D
76FFEABEAFFFB9C2C4F8FFFFFF00FFFFFF00B5C2C5FEFAFAFAFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFE5A47EFFE9B493FFE3A278FFFFFFFFFFFFFFFFFFFDFD
FDFFEAEAEAFF7CC9DBFCFFFFFF00FFFFFF0072CEE3FDD7D9DAFFE3E3E3FFFFFF
FFFFFFFFFFFFFCFCFCFFE7B098FFE39E78FFEDC2B2FFFFFFFFFFEEEEEEFFD6D8
D9FFB5DEE8FF29C7EBFCFFFFFF00FFFFFF000DC5EFFC84E1F7FFD7DBDCFFECEC
ECFFE7E7E7FFDFE2E3FFE3E4E4FFE3E4E4FFE3E3E3FFEBEBEBFFDCDFE0FF9BE1
F1FF84E1F7FF0DC5EFFCFFFFFF00FFFFFF002C80E6FE67A0ECFF89DCF4FFC2E3
EBFFA4E2F1FF86E2F7FF86E2F7FF86E2F7FF8DE2F6FFA8E3F0FF8CE2F5FF83DC
F6FF67A0ECFF2C80E6FEFFFFFF00FFFFFF0014B4EDFC5F8FEAFF5372E5FF6396
EBFF71B4F0FF7CCDF4FF83DCF6FF83DCF6FF7CCDF4FF71B4F0FF6396EBFF5372
E5FF5F8FEAFF14B4EDFCFFFFFF00FFFFFF000DC5EFF882E1F7FF75BEF1FF659A
EBFF577CE6FF4C63E2FF4554E0FF4554E0FF4C63E2FF577CE6FF659AEBFF75BE
F1FF82E1F7FF0DC5EFF8FFFFFF00FFFFFF000DC5EFA14FD5F3FF81E1F7FF86E2
F7FF86E2F7FF86E2F7FF86E2F7FF86E2F7FF86E2F7FF86E2F7FF86E2F7FF81E1
F7FF4FD5F3FF0DC5EFA1FFFFFF00FFFFFF000DC5EF240DC5EF8E0DC5EFF747D3
F3FF60D9F4FF73DEF6FF80E1F7FF80E1F7FF73DEF6FF60D9F4FF47D3F3FF0DC5
EFF70DC5EF8E0DC5EF24FFFFFF00FFFFFF00FFFFFF00FFFFFF000DC5EF3E0DC5
EF7C0DC5EFB00DC5EFDA0DC5EFF50DC5EFF50DC5EFDA0DC5EFB00DC5EF7C0DC5
EF3EFFFFFF00FFFFFF00FFFFFF00
4C7A010000001000000010000000330200000000000078DA9D92DF6B526118C7
BDCAABEEFA13BC09BAE82FD85DD445D045C56E828211A3CB8C42486ACD1A04B5
A0DCB2C56AD66A3F20D4A5D570181D67D6458394F2276E9EB3A3EE1C7513F528
A27E7B9F338F9C8637F5C017DEF7F97E3F3CCF7939000CE8C9E00F9F3284A361
E87AF8173F9A548E57AA6039EBFFF8C6481CA375058722F1EEA0797DFF67AC3B
887FBAF60EC3EB41D87C8B0D8EE392C6480234EF4220546477B7DDF312E73FAF
C1B26017F51CF34C4C9325FF2C76BFB950F8300D4551A0CD33466228168B1097
6C903E3A909ABA2213A3F11EEEAB531004C8ABCF500E2E43F64E81CAFEDEA9CE
9BF0CCA977F1F54DECAC3C4666C60C62343EC005DBAC50FEF21612F32B1B7E35
9F5BBE07E99303E29BDBEABDE0724098BD0129E0C22AB7DED4781F17EAB65A2D
1C2C71FE1676BC4F20BCB2F47B9D4E079224C1FA3DD5D678F386D0892592A06F
D08AF6C9BBD9BC171694B815B5572E97F13B9E802F53C0D1B0DCE70F8776DB77
B30DC45269F59DF2F93C367901C2F6F6BEE86D6419E9CD2D3CCF5640596234FE
D858AE3B3A57C4FD740D9C20639EAF60826FF4F59057B028ECE1015F872DAD80
B2C468FC116FA97DF19184B3661123D332AE7AF760FD5153B3243A538F3CCA50
9618DDFECD71B6D3F540059767640C5B73383DC2E3C4B92D5574A61E799419DF
DFBFA9E39D677E557127DBF86BEF41A20C6589D1F126A649A6C6C96815971235
5CCB28186359129DA9471E657A59D3C1FF9FF58698AC4C6EA62453BDA764AF47
DE909EF9036C470F74
}
end
object PopupMenu1: TPopupMenu

View File

@ -1,11 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="11"/>
<Version Value="12"/>
<PathDelim Value="\"/>
<General>
<Flags>
<CompatibilityMode Value="True"/>
</Flags>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="main"/>
<Scaled Value="True"/>
<ResourceType Value="res"/>
@ -24,7 +26,6 @@
</PublishOptions>
<RunParams>
<FormatVersion Value="2"/>
<Modes Count="0"/>
</RunParams>
<RequiredPackages Count="2">
<Item1>
@ -43,6 +44,7 @@
<Filename Value="selectiondemo.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="SelectionDemo"/>
</Unit1>

View File

@ -71,6 +71,20 @@ object Form1: TForm1
State = cbChecked
TabOrder = 1
end
object CbPersistentSelectedDates: TCheckBox
AnchorSideLeft.Control = CbMultiselect
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = CbMultiselect
AnchorSideTop.Side = asrCenter
Left = 110
Height = 19
Top = 225
Width = 148
BorderSpacing.Left = 6
Caption = 'Persistent selected dates'
OnChange = CbPersistentSelectedDatesChange
TabOrder = 2
end
end
object Splitter1: TSplitter
Left = 278

View File

@ -15,11 +15,13 @@ type
TForm1 = class(TForm)
CalendarLite1: TCalendarLite;
CbMultiselect: TCheckBox;
CbPersistentSelectedDates: TCheckBox;
ListBox1: TListBox;
Panel1: TPanel;
Splitter1: TSplitter;
procedure CalendarLite1DateChange(Sender: TObject);
procedure CbMultiselectChange(Sender: TObject);
procedure CbPersistentSelectedDatesChange(Sender: TObject);
private
public
@ -56,5 +58,13 @@ begin
CalendarLite1.MultiSelect := cbMultiSelect.Checked;
end;
procedure TForm1.CbPersistentSelectedDatesChange(Sender: TObject);
begin
if CbPersistentSelectedDates.Checked then
CalendarLite1.Options := CalendarLite1.Options + [coPersistentSelectedDates]
else
CalendarLite1.Options := CalendarLite1.Options - [coPersistentSelectedDates];
end;
end.

View File

@ -88,7 +88,8 @@ type
TCalOption = (coBoldDayNames, coBoldHolidays, coBoldToday, coBoldTopRow,
coBoldWeekend, coDayLine, coShowBorder, coShowHolidays,
coShowTodayFrame, coShowTodayName, coShowTodayRow,
coShowWeekend, coShowDayNames, coShowTopRow, coUseTopRowColors
coShowWeekend, coShowDayNames, coShowTopRow, coUseTopRowColors,
coPersistentSelectedDates
);
TCalOptions = set of TCalOption;
@ -1503,7 +1504,8 @@ begin
case ASelMode of
smFirstSingle:
begin
FSelDates.Clear;
if not (coPersistentSelectedDates in FOptions) then
FSelDates.Clear;
FSelDates.AddDate(ADate);
FPrevDate := ADate;
end;
@ -1518,7 +1520,7 @@ begin
begin
if (DayOfWeek(ADate) in [ord(dowSunday), ord(dowSaturday)]) then
exit;
if ASelMode = smFirstWeek then
if (ASelMode = smFirstWeek) and not (coPersistentSelectedDates in FOptions) then
FSelDates.Clear;
// Collect all weekdays
if ASelMode = smNextWeekRange then begin
@ -1546,7 +1548,7 @@ begin
smFirstRange, smNextRange:
begin
if (ASelMode = smFirstRange) then
if (ASelMode = smFirstRange) and not (coPersistentSelectedDates in FOptions) then
FSelDates.Clear;
if FPrevDate < ADate then begin
d1 := FPrevDate + ord(ASelMode = smNextRange);
@ -1971,7 +1973,8 @@ begin
oldMonth := MonthOf(FDate);
FDate := AValue;
FPrevDate := AValue;
FSelDates.Clear;
if not (coPersistentSelectedDates in FOptions) then
FSelDates.Clear;
DateChange;
if MonthOf(FDate) <> oldMonth then
MonthChange;