Delphi 我可以使用编辑掩码格式化输出吗?(不仅仅是验证输入)
德尔菲7号问题。我正在使用一个具有许多数据绑定控件的表单(更改此控件不是一个选项)。我将TDBEDIT控件绑定到TStringField(具有EditMask属性)。我知道我可以使用此EditMask强制控件验证其输入,但我想知道的是,我是否可以直接用原始值填充字段,并让控件根据EditMask显示它 我想用16位数字填充字段,但我希望它显示为4组4位数字(即9999999999999) 如果我这样做Delphi 我可以使用编辑掩码格式化输出吗?(不仅仅是验证输入),delphi,Delphi,德尔菲7号问题。我正在使用一个具有许多数据绑定控件的表单(更改此控件不是一个选项)。我将TDBEDIT控件绑定到TStringField(具有EditMask属性)。我知道我可以使用此EditMask强制控件验证其输入,但我想知道的是,我是否可以直接用原始值填充字段,并让控件根据EditMask显示它 我想用16位数字填充字段,但我希望它显示为4组4位数字(即9999999999999) 如果我这样做 dbedtABCNumber.DataSource.DataSet.Edit; dbedtAB
dbedtABCNumber.DataSource.DataSet.Edit;
dbedtABCNumber.Field.Value := '1234567812345678';
我只显示前4位数字
我希望有人更熟悉旧数据绑定控件的内部界面。您可以使用或来修改文本的显示方式
由于您有一个TStringField存储数字,您有两个选择:
- 使用
和t数值字段
属性DisplayFormat
- 使用
事件并执行您自己的字符串格式设置OnGetText
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)]);