You've already forked lazarus-ccr
Add property Cascade (patch by teejaydub - #22989)
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2598 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -108,6 +108,7 @@ type
|
|||||||
accidentally added in first release. }
|
accidentally added in first release. }
|
||||||
property DateMode;
|
property DateMode;
|
||||||
property UseDefaultSeparators;
|
property UseDefaultSeparators;
|
||||||
|
property Cascade;
|
||||||
//events:
|
//events:
|
||||||
property OnChange;
|
property OnChange;
|
||||||
property OnCheckBoxChange;
|
property OnCheckBoxChange;
|
||||||
|
@ -115,6 +115,7 @@ type
|
|||||||
|
|
||||||
TCustomZVDateTimePicker = class(TCustomControl)
|
TCustomZVDateTimePicker = class(TCustomControl)
|
||||||
private
|
private
|
||||||
|
FCascade: Boolean;
|
||||||
FCenturyFrom, FEffectiveCenturyFrom: Word;
|
FCenturyFrom, FEffectiveCenturyFrom: Word;
|
||||||
FDateDisplayOrder: TDateDisplayOrder;
|
FDateDisplayOrder: TDateDisplayOrder;
|
||||||
FKind: TDateTimeKind;
|
FKind: TDateTimeKind;
|
||||||
@ -341,6 +342,7 @@ type
|
|||||||
property Time: TTime read GetTime write SetTime;
|
property Time: TTime read GetTime write SetTime;
|
||||||
property Date: TDate read GetDate write SetDate;
|
property Date: TDate read GetDate write SetDate;
|
||||||
property DateMode: TDTDateMode read FDateMode write SetDateMode;
|
property DateMode: TDTDateMode read FDateMode write SetDateMode;
|
||||||
|
property Cascade: Boolean read FCascade write FCascade default False;
|
||||||
|
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
@ -401,6 +403,7 @@ type
|
|||||||
property Date;
|
property Date;
|
||||||
property Time;
|
property Time;
|
||||||
property UseDefaultSeparators;
|
property UseDefaultSeparators;
|
||||||
|
property Cascade;
|
||||||
// events:
|
// events:
|
||||||
property OnChange;
|
property OnChange;
|
||||||
property OnCheckBoxChange;
|
property OnCheckBoxChange;
|
||||||
@ -430,6 +433,8 @@ function IsNullDate(DT: TDateTime): Boolean;
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
uses DateUtils;
|
||||||
|
|
||||||
function NumberOfDaysInMonth(const Month, Year: Word): Word;
|
function NumberOfDaysInMonth(const Month, Year: Word): Word;
|
||||||
begin
|
begin
|
||||||
Result := 0;
|
Result := 0;
|
||||||
@ -2059,18 +2064,22 @@ var
|
|||||||
N: Word;
|
N: Word;
|
||||||
begin
|
begin
|
||||||
SelectMonth;
|
SelectMonth;
|
||||||
YMD := GetYYYYMMDD(True);
|
if Cascade then
|
||||||
|
SetDateTime(IncMonth(DateTime))
|
||||||
|
else begin
|
||||||
|
YMD := GetYYYYMMDD(True);
|
||||||
|
|
||||||
if YMD.Month >= 12 then
|
if YMD.Month >= 12 then
|
||||||
YMD.Month := 1
|
YMD.Month := 1
|
||||||
else
|
else
|
||||||
Inc(YMD.Month);
|
Inc(YMD.Month);
|
||||||
|
|
||||||
N := NumberOfDaysInMonth(YMD.Month, YMD.Year);
|
N := NumberOfDaysInMonth(YMD.Month, YMD.Year);
|
||||||
if YMD.Day > N then
|
if YMD.Day > N then
|
||||||
YMD.Day := N;
|
YMD.Day := N;
|
||||||
|
|
||||||
SetYYYYMMDD(YMD);
|
SetYYYYMMDD(YMD);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomZVDateTimePicker.IncreaseYear;
|
procedure TCustomZVDateTimePicker.IncreaseYear;
|
||||||
@ -2092,14 +2101,18 @@ var
|
|||||||
YMD: TYMD;
|
YMD: TYMD;
|
||||||
begin
|
begin
|
||||||
SelectDay;
|
SelectDay;
|
||||||
YMD := GetYYYYMMDD(True);
|
if Cascade then
|
||||||
|
SetDateTime(IncDay(DateTime))
|
||||||
|
else begin
|
||||||
|
YMD := GetYYYYMMDD(True);
|
||||||
|
|
||||||
if YMD.Day >= NumberOfDaysInMonth(YMD.Month, YMD.Year) then
|
if YMD.Day >= NumberOfDaysInMonth(YMD.Month, YMD.Year) then
|
||||||
YMD.Day := 1
|
YMD.Day := 1
|
||||||
else
|
else
|
||||||
Inc(YMD.Day);
|
Inc(YMD.Day);
|
||||||
|
|
||||||
SetYYYYMMDD(YMD);
|
SetYYYYMMDD(YMD);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomZVDateTimePicker.DecreaseMonth;
|
procedure TCustomZVDateTimePicker.DecreaseMonth;
|
||||||
@ -2108,18 +2121,22 @@ var
|
|||||||
N: Word;
|
N: Word;
|
||||||
begin
|
begin
|
||||||
SelectMonth;
|
SelectMonth;
|
||||||
YMD := GetYYYYMMDD(True);
|
if Cascade then
|
||||||
|
SetDateTime(IncMonth(DateTime, -1))
|
||||||
|
else begin
|
||||||
|
YMD := GetYYYYMMDD(True);
|
||||||
|
|
||||||
if YMD.Month <= 1 then
|
if YMD.Month <= 1 then
|
||||||
YMD.Month := 12
|
YMD.Month := 12
|
||||||
else
|
else
|
||||||
Dec(YMD.Month);
|
Dec(YMD.Month);
|
||||||
|
|
||||||
N := NumberOfDaysInMonth(YMD.Month, YMD.Year);
|
N := NumberOfDaysInMonth(YMD.Month, YMD.Year);
|
||||||
if YMD.Day > N then
|
if YMD.Day > N then
|
||||||
YMD.Day := N;
|
YMD.Day := N;
|
||||||
|
|
||||||
SetYYYYMMDD(YMD);
|
SetYYYYMMDD(YMD);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomZVDateTimePicker.DecreaseYear;
|
procedure TCustomZVDateTimePicker.DecreaseYear;
|
||||||
@ -2139,14 +2156,18 @@ var
|
|||||||
YMD: TYMD;
|
YMD: TYMD;
|
||||||
begin
|
begin
|
||||||
SelectDay;
|
SelectDay;
|
||||||
YMD := GetYYYYMMDD(True);
|
if Cascade then
|
||||||
|
SetDateTime(IncDay(DateTime, -1))
|
||||||
|
else begin
|
||||||
|
YMD := GetYYYYMMDD(True);
|
||||||
|
|
||||||
if YMD.Day <= 1 then
|
if YMD.Day <= 1 then
|
||||||
YMD.Day := NumberOfDaysInMonth(YMD.Month, YMD.Year)
|
YMD.Day := NumberOfDaysInMonth(YMD.Month, YMD.Year)
|
||||||
else
|
else
|
||||||
Dec(YMD.Day);
|
Dec(YMD.Day);
|
||||||
|
|
||||||
SetYYYYMMDD(YMD);
|
SetYYYYMMDD(YMD);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomZVDateTimePicker.IncreaseHour;
|
procedure TCustomZVDateTimePicker.IncreaseHour;
|
||||||
@ -2154,14 +2175,18 @@ var
|
|||||||
HMSMs: THMSMs;
|
HMSMs: THMSMs;
|
||||||
begin
|
begin
|
||||||
SelectHour;
|
SelectHour;
|
||||||
HMSMs := GetHMSMs(True);
|
if Cascade then
|
||||||
|
SetDateTime(IncHour(DateTime))
|
||||||
|
else begin
|
||||||
|
HMSMs := GetHMSMs(True);
|
||||||
|
|
||||||
if HMSMs.Hour >= 23 then
|
if HMSMs.Hour >= 23 then
|
||||||
HMSMs.Hour := 0
|
HMSMs.Hour := 0
|
||||||
else
|
else
|
||||||
Inc(HMSMs.Hour);
|
Inc(HMSMs.Hour);
|
||||||
|
|
||||||
SetHMSMs(HMSMs);
|
SetHMSMs(HMSMs);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomZVDateTimePicker.IncreaseMinute;
|
procedure TCustomZVDateTimePicker.IncreaseMinute;
|
||||||
@ -2169,14 +2194,18 @@ var
|
|||||||
HMSMs: THMSMs;
|
HMSMs: THMSMs;
|
||||||
begin
|
begin
|
||||||
SelectMinute;
|
SelectMinute;
|
||||||
HMSMs := GetHMSMs(True);
|
if Cascade then
|
||||||
|
SetDateTime(IncMinute(DateTime))
|
||||||
|
else begin
|
||||||
|
HMSMs := GetHMSMs(True);
|
||||||
|
|
||||||
if HMSMs.Minute >= 59 then
|
if HMSMs.Minute >= 59 then
|
||||||
HMSMs.Minute := 0
|
HMSMs.Minute := 0
|
||||||
else
|
else
|
||||||
Inc(HMSMs.Minute);
|
Inc(HMSMs.Minute);
|
||||||
|
|
||||||
SetHMSMs(HMSMs);
|
SetHMSMs(HMSMs);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomZVDateTimePicker.IncreaseSecond;
|
procedure TCustomZVDateTimePicker.IncreaseSecond;
|
||||||
@ -2184,14 +2213,18 @@ var
|
|||||||
HMSMs: THMSMs;
|
HMSMs: THMSMs;
|
||||||
begin
|
begin
|
||||||
SelectSecond;
|
SelectSecond;
|
||||||
HMSMs := GetHMSMs(True);
|
if Cascade then
|
||||||
|
SetDateTime(IncSecond(DateTime))
|
||||||
|
else begin
|
||||||
|
HMSMs := GetHMSMs(True);
|
||||||
|
|
||||||
if HMSMs.Second >= 59 then
|
if HMSMs.Second >= 59 then
|
||||||
HMSMs.Second := 0
|
HMSMs.Second := 0
|
||||||
else
|
else
|
||||||
Inc(HMSMs.Second);
|
Inc(HMSMs.Second);
|
||||||
|
|
||||||
SetHMSMs(HMSMs);
|
SetHMSMs(HMSMs);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomZVDateTimePicker.IncreaseMiliSec;
|
procedure TCustomZVDateTimePicker.IncreaseMiliSec;
|
||||||
@ -2199,14 +2232,18 @@ var
|
|||||||
HMSMs: THMSMs;
|
HMSMs: THMSMs;
|
||||||
begin
|
begin
|
||||||
SelectMiliSec;
|
SelectMiliSec;
|
||||||
HMSMs := GetHMSMs(True);
|
if Cascade then
|
||||||
|
SetDateTime(IncMilliSecond(DateTime))
|
||||||
|
else begin
|
||||||
|
HMSMs := GetHMSMs(True);
|
||||||
|
|
||||||
if HMSMs.MiliSec >= 999 then
|
if HMSMs.MiliSec >= 999 then
|
||||||
HMSMs.MiliSec := 0
|
HMSMs.MiliSec := 0
|
||||||
else
|
else
|
||||||
Inc(HMSMs.MiliSec);
|
Inc(HMSMs.MiliSec);
|
||||||
|
|
||||||
SetHMSMs(HMSMs);
|
SetHMSMs(HMSMs);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomZVDateTimePicker.DecreaseHour;
|
procedure TCustomZVDateTimePicker.DecreaseHour;
|
||||||
@ -2214,14 +2251,18 @@ var
|
|||||||
HMSMs: THMSMs;
|
HMSMs: THMSMs;
|
||||||
begin
|
begin
|
||||||
SelectHour;
|
SelectHour;
|
||||||
HMSMs := GetHMSMs(True);
|
if Cascade then
|
||||||
|
SetDateTime(IncHour(DateTime, -1))
|
||||||
|
else begin
|
||||||
|
HMSMs := GetHMSMs(True);
|
||||||
|
|
||||||
if HMSMs.Hour <= 0 then
|
if HMSMs.Hour <= 0 then
|
||||||
HMSMS.Hour := 23
|
HMSMS.Hour := 23
|
||||||
else
|
else
|
||||||
Dec(HMSMs.Hour);
|
Dec(HMSMs.Hour);
|
||||||
|
|
||||||
SetHMSMs(HMSMs);
|
SetHMSMs(HMSMs);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomZVDateTimePicker.DecreaseMinute;
|
procedure TCustomZVDateTimePicker.DecreaseMinute;
|
||||||
@ -2229,14 +2270,18 @@ var
|
|||||||
HMSMs: THMSMs;
|
HMSMs: THMSMs;
|
||||||
begin
|
begin
|
||||||
SelectMinute;
|
SelectMinute;
|
||||||
HMSMs := GetHMSMs(True);
|
if Cascade then
|
||||||
|
SetDateTime(IncMinute(DateTime, -1))
|
||||||
|
else begin
|
||||||
|
HMSMs := GetHMSMs(True);
|
||||||
|
|
||||||
if HMSMs.Minute <= 0 then
|
if HMSMs.Minute <= 0 then
|
||||||
HMSMs.Minute := 59
|
HMSMs.Minute := 59
|
||||||
else
|
else
|
||||||
Dec(HMSMs.Minute);
|
Dec(HMSMs.Minute);
|
||||||
|
|
||||||
SetHMSMs(HMSMs);
|
SetHMSMs(HMSMs);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomZVDateTimePicker.DecreaseSecond;
|
procedure TCustomZVDateTimePicker.DecreaseSecond;
|
||||||
@ -2244,14 +2289,18 @@ var
|
|||||||
HMSMs: THMSMs;
|
HMSMs: THMSMs;
|
||||||
begin
|
begin
|
||||||
SelectSecond;
|
SelectSecond;
|
||||||
HMSMs := GetHMSMs(True);
|
if Cascade then
|
||||||
|
SetDateTime(IncSecond(DateTime, -1))
|
||||||
|
else begin
|
||||||
|
HMSMs := GetHMSMs(True);
|
||||||
|
|
||||||
if HMSMs.Second <= 0 then
|
if HMSMs.Second <= 0 then
|
||||||
HMSMs.Second := 59
|
HMSMs.Second := 59
|
||||||
else
|
else
|
||||||
Dec(HMSMs.Second);
|
Dec(HMSMs.Second);
|
||||||
|
|
||||||
SetHMSMs(HMSMs);
|
SetHMSMs(HMSMs);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomZVDateTimePicker.DecreaseMiliSec;
|
procedure TCustomZVDateTimePicker.DecreaseMiliSec;
|
||||||
@ -2259,14 +2308,18 @@ var
|
|||||||
HMSMs: THMSMs;
|
HMSMs: THMSMs;
|
||||||
begin
|
begin
|
||||||
SelectMiliSec;
|
SelectMiliSec;
|
||||||
HMSMs := GetHMSMs(True);
|
if Cascade then
|
||||||
|
SetDateTime(IncMilliSecond(DateTime, -1))
|
||||||
|
else begin
|
||||||
|
HMSMs := GetHMSMs(True);
|
||||||
|
|
||||||
if HMSMs.MiliSec <= 0 then
|
if HMSMs.MiliSec <= 0 then
|
||||||
HMSMs.MiliSec := 999
|
HMSMs.MiliSec := 999
|
||||||
else
|
else
|
||||||
Dec(HMSMs.MiliSec);
|
Dec(HMSMs.MiliSec);
|
||||||
|
|
||||||
SetHMSMs(HMSMs);
|
SetHMSMs(HMSMs);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomZVDateTimePicker.ChangeAMPM;
|
procedure TCustomZVDateTimePicker.ChangeAMPM;
|
||||||
@ -3253,6 +3306,7 @@ begin
|
|||||||
FTextEnabled := True;
|
FTextEnabled := True;
|
||||||
FCalendarForm := nil;
|
FCalendarForm := nil;
|
||||||
FDoNotArrangeControls := True;
|
FDoNotArrangeControls := True;
|
||||||
|
FCascade := False;
|
||||||
|
|
||||||
AdjustEffectiveDateDisplayOrder;
|
AdjustEffectiveDateDisplayOrder;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user