Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Установка минимального и максимального времени для DateTimePicker в Delphi

Delphi , Компоненты и Классы , TDateTimePicker

В статье мы рассмотрим, как установить минимальное и максимальное время для компонента DateTimePicker в Delphi, когда свойство "kind" установлено в значение "dtkTime".

Компонент DateTimePicker в Delphi позволяет выбирать дату и время. Однако, по умолчанию, он не предоставляет возможность задать диапазон времени, в котором пользователь может выбирать время. Тем не менее, это можно реализовать с помощью некоторых трюков.

Один из способов - использовать события "OnChange" и "OnUserInput" компонента DateTimePicker. В этих событиях можно проверить выбранное время и, если оно выходит за заданные пределы, скорректировать его.

Вот пример кода, который демонстрирует, как это можно сделать:

procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
  if DateTimePicker1.Time > EncodeTime(19, 0, 0, 0) then
    DateTimePicker1.Time := EncodeTime(19, 0, 0, 0);
  if DateTimePicker1.Time < EncodeTime(8, 0, 0, 0) then
    DateTimePicker1.Time := EncodeTime(8, 0, 0, 0);
end;

procedure TForm1.DateTimePicker1UserInput(Sender: TObject; var Value: TTime);
begin
  if Value > EncodeTime(19, 0, 0, 0) then
    Value := EncodeTime(19, 0, 0, 0);
  if Value < EncodeTime(8, 0, 0, 0) then
    Value := EncodeTime(8, 0, 0, 0);
end;

В этом примере, мы устанавливаем минимальное время 8:00 и максимальное время 19:00. При изменении времени в компоненте DateTimePicker, событие "OnChange" проверяет, не выходит ли выбранное время за заданные пределы. Если да, то время устанавливается на ближайший предел. Аналогично, при вводе времени с клавиатуры в событии "OnUserInput", введенное время также проверяется и корректируется, если необходимо.

Важно отметить, что этот подход может привести к тому, что пользователь не сможет выбрать время, которое выходит за заданные пределы. Если вам нужно предоставить пользователю возможность выбрать время в заданном диапазоне, но не позволять ему выбирать время вне этого диапазона, вам придется использовать другой подход.

Например, один из пользователей форума StackOverflow предложил использовать функцию "SetTimeRange" из модуля "Winapi.CommCtrl". Вот пример кода, который демонстрирует, как это можно сделать:

uses
  System.DateUtils,
  Winapi.CommCtrl,
  Vcl.ComCtrls;

procedure SetTimeRange(CommonCalendar: TCommonCalendar; MinTime, MaxTime: TTime);
var
  STA: TSystemTimeRangeArray;
begin
  DateTimeToSystemTime(TimeOf(MinTime), STA[0]);
  DateTimeToSystemTime(TimeOf(MaxTime), STA[1]);
  Win32Check(DateTime_SetRange(CommonCalendar.Handle, GDTR_MIN or GDTR_MAX, @STA));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SetTimeRange(DateTimePicker1.CommonCalendar, EncodeTime(18, 0, 0, 0), EncodeTime(19, 0, 0, 0));
end;

В этом примере, мы устанавливаем минимальное время 18:00 и максимальное время 19:00. При создании формы, мы вызываем функцию "SetTimeRange", чтобы установить диапазон времени для компонента DateTimePicker. Теперь пользователь может выбрать время в заданном диапазоне, но не сможет выбрать время вне этого диапазона.

Создано по материалам из источника по ссылке.

Статья описывает, как установить минимальное и максимальное время для компонента DateTimePicker в Delphi, используя события OnChange и OnUserInput или функцию SetTimeRange из модуля Winapi.CommCtrl.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TDateTimePicker ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:16:54/0.0051889419555664/1