delphi - 如何确保输入到 TcxDateEdit 的日期在 MinDate/MaxDate 范围内?

标签 delphi validation date devexpress

TcxDateEdit 允许设置 MinDateMaxDate 的属性。但是我找不到一个键可以使控件自动验证输入的日期并确保日期在指定的范围内。

例如:

MinDate := EncodeDate(1900, 1, 1);
MaxDate := EncodeDate(2100, 1, 1);

当我输入日期 1.1.1111 时,它会抛出错误,而不是将其放入范围 01.01.1900 .. 01.01.2100

最佳答案

以下代码位于 Properties.OnValidate做的工作:

procedure TForm.deDatePropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
var
  ed: TcxDateEdit; //So we can use single handler for different controls
  dt: TDateTime;
begin
  ed := TcxDateEdit(Sender); 
  dt := StrToDateDef(DisplayValue, ed.Properties.MinDate);

  if not InRange(dt, ed.Properties.MinDate, ed.Properties.MaxDate) then
  begin
    DisplayValue := EnsureRange(dt, ed.Properties.MinDate, ed.Properties.MaxDate);
    ed.EditValue := DisplayValue;
  end;

  Error := False;
  ErrorText := '';
end;

关于delphi - 如何确保输入到 TcxDateEdit 的日期在 MinDate/MaxDate 范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21872687/

相关文章:

hibernate - 使用本地时区存储的日期 - Hibernate JPA

java - IF 语句中的日期类

delphi - 用于检查 Delphi 项目中循环依赖的任何工具

html - play1.2.4框架html中无法显示错误信息

javascript - 文本框的按键限制为小数点后两位?

javascript - 如何调用自定义约束验证作为 native 验证事件流的一部分?

java.util.Date 到 XMLGregorianCalendar

delphi - 配置MSBuild以调用XE2 dcc32.exe

delphi - 连接4 : Check for winner

ios - 将 TiniFile 从应用程序保存到 iOS