Delphi 当字段具有EditMask时,如何允许空TDBEdit?
我已设置此Delphi 当字段具有EditMask时,如何允许空TDBEdit?,delphi,delphi-xe3,input-mask,Delphi,Delphi Xe3,Input Mask,我已设置此TEditMask: DateTimeField.EditMask := '!99/99/9999;1; '; 我有一个链接到此字段的TDBEdit 掩码适用于有效日期,但当用户尝试清除输入值(使用DEL键)时,离开掩码时将导致EConvertError 如何更改此行为以清除字段值?我使用字段的OnSetText事件找到了一个解决方案: procedure TForm1.DateTimeFieldSetText(Field: TField; const Text: string);
TEditMask
:
DateTimeField.EditMask := '!99/99/9999;1; ';
我有一个链接到此字段的TDBEdit
掩码适用于有效日期,但当用户尝试清除输入值(使用DEL
键)时,离开掩码时将导致EConvertError
如何更改此行为以清除字段值?我使用字段的
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;
我使用字段的
onsetext
事件找到了一个解决方案:
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;
您可以根据基础数据字段的
OnSetText
事件处理程序中的空掩码测试编辑文本,并仅在不匹配时设置字段值
procedure TForm1.DataTimeFieldSetText(Sender: TField; const Text: string);
begin
if not (maskutils.FormatMaskText(Sender.EditMask, '') = Text) then
Sender.AsString := Text;
end;
您不必知道编辑掩码或特定的区域设置信息。您可以在基础数据字段的
事件处理程序的上对空掩码测试编辑文本,并仅在不匹配时设置字段值
procedure TForm1.DataTimeFieldSetText(Sender: TField; const Text: string);
begin
if not (maskutils.FormatMaskText(Sender.EditMask, '') = Text) then
Sender.AsString := Text;
end;
您不必知道编辑掩码或特定的区域设置信息。请清除基础字段<代码>日期时间字段。清除
。我通常提供一个按钮来清除这些字段(例如tbuttonedit
中的一个,或者我们在内部编写的一个用于DB感知的按钮,但是正常的TButton或TSpeedButton也可以)。这是一个很好的解决方法。请清除底层字段<代码>日期时间字段。清除
。我通常会提供一个按钮来清除这些字段(比如tbuttonedit
中的一个,或者我们在内部编写的一个用于DB感知的按钮,但是正常的TButton或TSpeedButton也可以),这是一个很好的解决方法。