Delphi 在TDateTimePicker中选择两(2)个日期触发启用TButton
我已将TButton设置为“not enabled”(未启用),当选择两个日期时,应由两(2)个TDateTimePicker启用该按钮 My TDateTimePicker日期默认为now()日期。因此,在OnChange中,我创建了以下代码,但无法正确执行:Delphi 在TDateTimePicker中选择两(2)个日期触发启用TButton,delphi,tdatetimepicker,Delphi,Tdatetimepicker,我已将TButton设置为“not enabled”(未启用),当选择两个日期时,应由两(2)个TDateTimePicker启用该按钮 My TDateTimePicker日期默认为now()日期。因此,在OnChange中,我创建了以下代码,但无法正确执行: procedure TfrmPayroll.EnableButton; //my created procedure begin if (dtpFrom.Date = Now()) and (dtpTo.Date = No
procedure TfrmPayroll.EnableButton; //my created procedure
begin
if (dtpFrom.Date = Now()) and
(dtpTo.Date = Now()) then
begin
btnOpen.Enabled := False;
end
else
begin
btnOpen.Enabled := True;
end;
结果是,即使我只选择了我设置的两个条件中的一个日期,也会启用TButton 你可以简单地写:
procedure TfrmPayroll.EnableButton; //my created procedure
begin
btnOpen.Enabled := (dtpFrom.Date <> Now()) and (dtpTo.Date <> Now());
end;
程序TfrmPayroll.EnableButton//我创建的过程
开始
btnOpen.Enabled:=(dtpFrom.Date Now()和(dtpTo.Date Now());
结束;
您可以简单地编写:
procedure TfrmPayroll.EnableButton; //my created procedure
begin
btnOpen.Enabled := (dtpFrom.Date <> Now()) and (dtpTo.Date <> Now());
end;
程序TfrmPayroll.EnableButton//我创建的过程
开始
btnOpen.Enabled:=(dtpFrom.Date Now()和(dtpTo.Date Now());
结束;
您的代码要求将两个DTP都设置为Now
才能禁用按钮,而不是将两个DTP都设置为Now
要修复现有代码,请使用或
运算符而不是和
运算符:
程序TfrmPayroll.EnableButton;
开始
如果(dtpFrom.Date=Now())或
(dtpTo.Date=Now())然后
开始
btnOpen.Enabled:=False;
结束,否则开始
btnOpen.Enabled:=True;
结束;
结束;
如果将条件重写为使用
运算符而不是=
运算符,则可以简化:
程序TfrmPayroll.EnableButton;
开始
btnOpen.Enabled:=(dtpFrom.Date Now()和(dtpTo.Date Now());
结束;
仅供参考,您应该使用Date()
而不是Now()
,因为TDateTimePicker.Date
属性不应该包括时间,但Now()不应该包括时间。如果本地时钟在两个date()
调用之间更改日期,则应使用本地变量来避免争用情况:
使用
…,DateUtils;
程序TfrmPayroll.EnableButton;
变量
当前日期:TDate;
开始
CurrentDate:=日期();
btnOpen.Enabled:=(DateOf(dtpFrom.Date)CurrentDate)和(DateOf(dtpTo.Date)CurrentDate);
结束;
您的代码要求将两个DTP都设置为Now
才能禁用按钮,而不是将两个DTP都设置为Now
要修复现有代码,请使用或
运算符而不是和
运算符:
程序TfrmPayroll.EnableButton;
开始
如果(dtpFrom.Date=Now())或
(dtpTo.Date=Now())然后
开始
btnOpen.Enabled:=False;
结束,否则开始
btnOpen.Enabled:=True;
结束;
结束;
如果将条件重写为使用
运算符而不是=
运算符,则可以简化:
程序TfrmPayroll.EnableButton;
开始
btnOpen.Enabled:=(dtpFrom.Date Now()和(dtpTo.Date Now());
结束;
仅供参考,您应该使用Date()
而不是Now()
,因为TDateTimePicker.Date
属性不应该包括时间,但Now()不应该包括时间。如果本地时钟在两个date()
调用之间更改日期,则应使用本地变量来避免争用情况:
使用
…,DateUtils;
程序TfrmPayroll.EnableButton;
变量
当前日期:TDate;
开始
CurrentDate:=日期();
btnOpen.Enabled:=(DateOf(dtpFrom.Date)CurrentDate)和(DateOf(dtpTo.Date)CurrentDate);
结束;
CurrentDate有效!忘了看到now()包括时间。非常感谢!当前日期有效!忘了看到now()包括时间。非常感谢!