Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 在TDateTimePicker中选择两(2)个日期触发启用TButton_Delphi_Tdatetimepicker - Fatal编程技术网

Delphi 在TDateTimePicker中选择两(2)个日期触发启用TButton

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

我已将TButton设置为“not enabled”(未启用),当选择两个日期时,应由两(2)个TDateTimePicker启用该按钮

My TDateTimePicker日期默认为now()日期。因此,在OnChange中,我创建了以下代码,但无法正确执行:

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()包括时间。非常感谢!