我想添加一个分隔符在一个指定的位置在一个TEEdit作为用户正在键入。
例如,当用户输入一个四位数的信用卡到期日期时,我想在第二位和第三位数字之间添加一个斜线。当他们输入'06/10'时,它应该显示为'06/10',以获得美观的MM/YY外观。
我希望这能起作用:
procedure TForm1.Edit1ChangeTracking(Sender: TObject);
begin
if (Edit1.Text.Length = 2) then Edit1.Text := Edit1.Text + '/';
end;
但是输出'06/10/'而不是'06/10',因为指针停留在斜杠后面。我如何改变这一点?
2条答案
按热度按时间qc6wkl3g1#
添加
'/'
字符后,TEdit.CaretPosition
属性仍在当前位置,即字符的左侧。更新CaretPosition
以将插入符号移动到字符的右侧,例如:5vf7fwbs2#
Tom Brunberg正确地识别出代码属于OnTyping事件处理程序,而不是OnChangeTracking。我遇到的一个后续错误是用户不能退格到“/”后面来更正错误(因为每次他们删除“/”,都会自动插入一个新的)。下面是我用来修复该错误并获得完全预期效果的完整代码:
WriteExpiry是一个TEEdit。