Ваш код требует, чтобы оба DTP были установлены на Now
для отключения кнопки, а не либо DTP, являющийся Now
.
Для исправьте существующий код, используйте оператор or
вместо оператора and
:
procedure TfrmPayroll.EnableButton;
begin
if (dtpFrom.Date = Now()) or
(dtpTo.Date = Now()) then
begin
btnOpen.Enabled := False;
end else begin
btnOpen.Enabled := True;
end;
end;
Это можно упростить, если переписать условие для использования оператора <>
вместо =
operator:
procedure TfrmPayroll.EnableButton;
begin
btnOpen.Enabled := (dtpFrom.Date <> Now()) and (dtpTo.Date <> Now());
end;
И, к вашему сведению, вы должны использовать Date()
вместо Now()
, поскольку свойство TDateTimePicker.Date
не должно включать время, а Now()
. И вам следует использовать локальную переменную, чтобы избежать состояния гонки, если локальные часы изменяют дату между двумя Date()
вызовами:
uses
..., DateUtils;
procedure TfrmPayroll.EnableButton;
var
CurrentDate: TDate;
begin
CurrentDate := Date();
btnOpen.Enabled := (DateOf(dtpFrom.Date) <> CurrentDate) and (DateOf(dtpTo.Date) <> CurrentDate);
end;