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

5

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

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

如果我这样做...

dbedtABCNumber.DataSource.DataSet.Edit;
dbedtABCNumber.Field.Value := '1234567812345678';

我只能看到前4位数字。

希望有更熟悉旧数据绑定控件的人能够提供帮助。

1个回答

4
您可以使用TField.OnGetText事件TNumericField.DisplayFormat属性来修改文本的显示方式。
由于您有一个包含数字的TStringField,您有两个选择:
  • 使用TNumericField和DisplayFormat属性
  • 使用OnGetText事件并自己格式化字符串
编辑:
Sam使用了这种方法:
我实现了OnSetText和OnGetText事件处理程序。我已经有了Edit Mask 9999 9999 9999 9999;1;_,因此OnSetText只是
TStringField(Sender).Value := Trim(Text);

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)]);

它运行良好。谢谢。


@Sam:你选了哪一个? - Jeroen Wiert Pluimers
1
我实现了OnSetText和OnGetText事件处理程序。我已经有了编辑掩码9999 9999 9999 9999;1;_,所以OnSetText只是TStringField(Sender).Value := Trim(Text);,而OnGetText只是sValue := TStringField(Sender).Value; Text := Format('%s %s %s %s', [Copy(sValue, 0, 4), Copy(sValue, 4, 4), Copy(sValue, 8, 4), Copy(sValue, 12, 4)]); 它工作得很好。谢谢。 - Sam
@Jeroen,实际上需要调整字符串索引... Text:=Format('%s %s %s %s',[Copy(sValue,0,4),Copy(sValue,5,4),Copy(sValue,9,4),Copy(sValue,13,4)]); - Sam
@Sam:我把那个改成了...1、4以及字符串都是基于1的。 - Jeroen Wiert Pluimers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接