私はこれを設定しましたTEditMask
:
DateTimeField.EditMask := '!99/99/9999;1; ';
TDBEdit
このフィールドにリンクされている があります。
DEL
マスクは有効な日付に対して機能しますが、ユーザーが (キーを使用して) 入力値をクリアしようとするとEConvertError
、マスクを離れるときにエラーが発生します。
代わりにこの動作を変更してフィールド値をクリアするにはどうすればよいですか?
私はこれを設定しましたTEditMask
:
DateTimeField.EditMask := '!99/99/9999;1; ';
TDBEdit
このフィールドにリンクされている があります。
DEL
マスクは有効な日付に対して機能しますが、ユーザーが (キーを使用して) 入力値をクリアしようとするとEConvertError
、マスクを離れるときにエラーが発生します。
代わりにこの動作を変更してフィールド値をクリアするにはどうすればよいですか?
基になるデータ フィールドのイベント ハンドラーで空のマスクに対して編集テキストをテストし、OnSetText
一致しない場合にのみフィールド値を設定できます。
procedure TForm1.DataTimeFieldSetText(Sender: TField; const Text: string);
begin
if not (maskutils.FormatMaskText(Sender.EditMask, '') = Text) then
Sender.AsString := Text;
end;
編集マスクや特定のロケール情報を知る必要はありません。