From f97126e5d7ace9c09a649ddd5a1c651a60716c19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=BDeljan=20Rikalo?= Date: Sat, 23 Jul 2022 14:48:30 +0200 Subject: [PATCH] Qt5: Implemented SetMinMaxDate for QtCalendar --- lcl/interfaces/qt5/qtwidgets.pas | 24 ++++++++++++++++++++++++ lcl/interfaces/qt5/qtwscalendar.pp | 12 ++++++++++++ 2 files changed, 36 insertions(+) diff --git a/lcl/interfaces/qt5/qtwidgets.pas b/lcl/interfaces/qt5/qtwidgets.pas index d1dda5b9e0..a6153ed8aa 100644 --- a/lcl/interfaces/qt5/qtwidgets.pas +++ b/lcl/interfaces/qt5/qtwidgets.pas @@ -1865,6 +1865,8 @@ type function GetDateTime: TDateTime; procedure SetDateTime(const AValue: TDateTime); procedure SetSelectedDate(const AValue: QDateH); + procedure SetMinDate(AMinDate: TDateTime); + procedure SetMaxDate(AMaxDate: TDateTime); protected function CreateWidget(const AParams: TCreateParams):QWidgetH; override; public @@ -1886,6 +1888,8 @@ type procedure SignalSelectionChanged; cdecl; procedure SignalCurrentPageChanged(p1, p2: Integer); cdecl; property DateTime: TDateTime read GetDateTime write SetDateTime; + property MinDate: TDateTime write SetMinDate; + property MaxDate: TDateTime write SetMaxDate; end; // for page control / notebook @@ -17782,6 +17786,26 @@ begin QCalendarWidget_setSelectedDate(QCalendarWidgetH(Widget), AValue); end; +procedure TQtCalendar.SetMinDate(AMinDate: TDateTime); +var + Date: QDateH; +begin + DecodeDate(AMinDate, AYear, AMonth, ADay); + Date := QDate_create(AYear, AMonth, ADay); + QCalendarWidget_setMinimumDate(QCalendarWidgetH(Widget),Date); + QDate_destroy(Date); +end; + +procedure TQtCalendar.SetMaxDate(AMaxDate: TDateTime); +var + Date: QDateH; +begin + DecodeDate(AMaxDate, AYear, AMonth, ADay); + Date := QDate_create(AYear, AMonth, ADay); + QCalendarWidget_setMaximumDate(QCalendarWidgetH(Widget),Date); + QDate_destroy(Date); +end; + {------------------------------------------------------------------------------ Function: TQtCalendar.CreateWidget Params: None diff --git a/lcl/interfaces/qt5/qtwscalendar.pp b/lcl/interfaces/qt5/qtwscalendar.pp index 7a1c475197..dbb85330df 100644 --- a/lcl/interfaces/qt5/qtwscalendar.pp +++ b/lcl/interfaces/qt5/qtwscalendar.pp @@ -42,6 +42,7 @@ type class procedure SetDateTime(const ACalendar: TCustomCalendar; const ADateTime: TDateTime); override; class procedure SetDisplaySettings(const ACalendar: TCustomCalendar; const ADisplaySettings: TDisplaySettings); override; class procedure SetFirstDayOfWeek(const ACalendar: TCustomCalendar; const ADayOfWeek: TCalDayOfWeek); override; + class procedure SetMinMaxDate(const ACalendar: TCustomCalendar; AMinDate, AMaxDate: TDateTime); override; end; @@ -143,4 +144,15 @@ begin QtCalendar.EndUpdate; end; +class procedure TQtWSCustomCalendar.SetMinMaxDate(const ACalendar: TCustomCalendar; AMinDate, AMaxDate: TDateTime); +var + QtCalendar: TQtCalendar; +begin + QtCalendar := TQtCalendar(ACalendar.Handle); + QtCalendar.BeginUpdate; + QtCalendar.MinDate := AMinDate; + QtCalendar.MaxDate := AMaxDate; + QtCalendar.EndUpdate; +end; + end.