我可以使用编辑掩码来格式化输出吗?(不仅仅是验证输入)

Sam*_*Sam 5 delphi

德尔福 7 问题。我正在使用具有许多数据绑定控件的表单(更改这不是一个选项)。我有一个 TDBEDIT 控件绑定到一个 TStringField(它有一个 EditMask 属性)。我知道我可以使用这个 EditMask 来强制控件验证它的输入,但是我想知道我是否可以直接用原始值填充该字段并让控件根据 EditMask 显示它?

我想用 16 位数字填充该字段,但我希望它显示为 4 个 4 位数字(即 9999 9999 9999 9999)。

如果我做 ...

dbedtABCNumber.DataSource.DataSet.Edit;
dbedtABCNumber.Field.Value := '1234567812345678';
Run Code Online (Sandbox Code Playgroud)

我只显示前 4 位数字。

我希望有人更熟悉旧数据绑定控件的内部结构。

Jer*_*ers 4

您可以使用TField.OnGetText 事件TNumericField.DisplayFormat 属性来修改文本的显示方式。

由于您有一个 TStringField 保存数字,因此您有两种选择:

  • 使用 aTNumericFieldDisplayFormat属性
  • 使用该OnGetText事件并进行您自己的字符串格式化

编辑:

萨姆使用了这种方法:

我实现了事件处理OnSetText程序OnGetText。我已经有了,Edit Mask 9999 9999 9999 9999;1;_所以OnSetText只是

TStringField(Sender).Value := Trim(Text);
Run Code Online (Sandbox Code Playgroud)

只是OnGetText

sValue := TStringField(Sender).Value;  
Text := Format('%s %s %s %s', [Copy(sValue, 1, 4), Copy(sValue, 5, 4), Copy(sValue, 9, 4), Copy(sValue, 13, 4)]);
Run Code Online (Sandbox Code Playgroud)

效果很好。谢谢。