0

我正在编写一个检查TcxDateEdit(来自 DevExpress)输入的例程。输入数字后,它应该检查它并尝试自动完成其余内容。在这种情况下,如果用户在空TcxDateEdit控件中键入日期,它应该自动填写当前月份和年份。

问题是我需要在用户输入数字并在TcxDateEdit控件中直观地添加数字后触发此自动完成方法。这样我就可以检查实际输入。但为此,我正在搜索该控件用于实际更新TcxDateEdit. 我的意思不是意味着失去焦点的方法,我的意思是在每个键入的键被添加到带有该控件内容的字符串变量之后(或同时)通过简单地键入控件来调用的方法。我很确定即使在常见的 TEdit 控件中也存在类似的方法。因此,如果有人能告诉我这种方法的名称,我将非常感激。

先谢谢了!

4

1 回答 1

1

OnChange使用 的事件可以实现您的要求Properties,如下图所示

TcxDateEdit 属性的 OnChange 事件

使用此事件和EditingText属性进行编辑,您可以使用以下代码:

uses DateUtils, StrUtils;

procedure TForm1.cxDateEdit1PropertiesChange(Sender: TObject);
var
  Month : Word;
  Year  : Word;
  Day : Word;
  BarPos : integer;
  DateEdit : TcxDateEdit;
begin
  DateEdit := (Sender as TcxDateEdit);
  BarPos := Pos('/', DateEdit.EditingText);
  if BarPos > 0 then
  begin
    Month := MonthOf(Now);
    Year  := YearOf(Now);
    Day   := StrToInt(LeftStr(DateEdit.EditingText, BarPos -1 ));
    DateEdit.Date := EncodeDate(Year, Month, Day);
  end;
end;

当用户输入 Day 时,此代码会自动分配当前的月份和年份,但您可以根据您的要求对其进行调整。

我在 Delphi 2006 上使用 DevExpress ExpressEditors 库的 6.42 版对此进行了测试。

于 2013-08-08T08:57:02.307 回答