德尔福 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 位数字。
我希望有人更熟悉旧数据绑定控件的内部结构。
您可以使用TField.OnGetText 事件或TNumericField.DisplayFormat 属性来修改文本的显示方式。
由于您有一个 TStringField 保存数字,因此您有两种选择:
TNumericField
和DisplayFormat
属性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)
效果很好。谢谢。