我已设置此TEditMask
:
DateTimeField.EditMask := '!99/99/9999;1; ';
我有TDBEdit
链接到此字段。
掩码适用于有效日期,但当用户尝试清除输入值(使用DEL
键)时,在离开掩码时会导致EConvertError
。
如何更改此行为以清除字段值?
答案 0 :(得分:2)
我找到了使用该字段的OnSetText
事件的解决方案:
procedure TForm1.DateTimeFieldSetText(Field: TField; const Text: string);
begin
// This only works for locales where the date separator is '.'
if Text = ' . . ' then
Field.AsString := ''
else
Field.AsString := Text
end;
答案 1 :(得分:2)
您可以在基础数据字段的OnSetText
事件处理程序中针对空掩码测试编辑文本,并仅在没有匹配时设置字段值。
procedure TForm1.DataTimeFieldSetText(Sender: TField; const Text: string);
begin
if not (maskutils.FormatMaskText(Sender.EditMask, '') = Text) then
Sender.AsString := Text;
end;
您不必知道编辑掩码或特定区域设置信息。