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

Delphi 我可以使用编辑掩码格式化输出吗?(不仅仅是验证输入),delphi,Delphi,德尔菲7号问题。我正在使用一个具有许多数据绑定控件的表单(更改此控件不是一个选项)。我将TDBEDIT控件绑定到TStringField(具有EditMask属性)。我知道我可以使用此EditMask强制控件验证其输入,但我想知道的是,我是否可以直接用原始值填充字段,并让控件根据EditMask显示它 我想用16位数字填充字段,但我希望它显示为4组4位数字(即9999999999999) 如果我这样做 dbedtABCNumber.DataSource.DataSet.Edit; dbedtAB

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

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

如果我这样做

dbedtABCNumber.DataSource.DataSet.Edit;
dbedtABCNumber.Field.Value := '1234567812345678';
我只显示前4位数字

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

您可以使用或来修改文本的显示方式

由于您有一个TStringField存储数字,您有两个选择:

  • 使用
    t数值字段
    DisplayFormat
    属性
  • 使用
    OnGetText
    事件并执行您自己的字符串格式设置
编辑:

Sam采用了这种方法:

我实现了
onsetext
ongetext
事件处理程序。我已经有了
编辑掩码
9999999999999;1;_
因此,setText上的
只是

OnGetText
只是


它很好用。谢谢。

谢谢Jeroen,我会试试。@Sam:你选择了哪一个?我在SetText和OnGetText事件处理程序上实现了。我已经有了编辑掩码99999999999;1;_ 所以OnSetText就是TStringField(发送方);而OnGetText就是sValue:=TStringField(Sender.Value);文本:=格式('%s%s%s',[Copy(sValue,0,4),Copy(sValue,4,4),Copy(sValue,8,4),Copy(sValue,12,4)];它很好用。谢谢。@Jeroen,实际上字符串索引需要调整。。。文本:=格式(“%s%s%s%s”,[复制(值,0,4),复制(值,5,4),副本(值,9,4),复制(值,13,4)])@山姆:我做了一个。。。1、4以及字符串都是基于1的。
TStringField(Sender).Value := Trim(Text);
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)]);