0

私はこれを設定しましたTEditMask

DateTimeField.EditMask := '!99/99/9999;1; ';

TDBEditこのフィールドにリンクされている があります。

DELマスクは有効な日付に対して機能しますが、ユーザーが (キーを使用して) 入力値をクリアしようとするとEConvertError、マスクを離れるときにエラーが発生します。

代わりにこの動作を変更してフィールド値をクリアするにはどうすればよいですか?

4

2 に答える 2

3

基になるデータ フィールドのイベント ハンドラーで空のマスクに対して編集テキストをテストし、OnSetText一致しない場合にのみフィールド値を設定できます。

procedure TForm1.DataTimeFieldSetText(Sender: TField; const Text: string);
begin
  if not (maskutils.FormatMaskText(Sender.EditMask, '') = Text) then
    Sender.AsString := Text;
end;

編集マスクや特定のロケール情報を知る必要はありません。

于 2016-09-11T23:55:37.330 に答える