作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在TEdit中格式化##.###.###-#
,我使用以下代码:
procedure TfrmPropiedad.edtRUTChangeTracking(Sender: TObject);
var
texto, digito: string;
begin
with Sender as TEdit do
begin
if Length(Text) > 1 then
begin
texto := ReplaceStr(ReplaceStr(Text, '.', ''), '-', '');
if Length(texto) > 1 then
begin
digito := Copy(texto, Length(texto), 1);
texto := FormatFloat(',0', StrToFloat(Copy(texto, 1, Length(texto) - 1)));
texto := ReplaceStr(texto, ',', '.');
texto := texto + '-' + digito;
OnChangeTracking := nil;
Text := '';
Text := AnsiUpperCase(texto);
OnChangeTracking := edtRUTChangeTracking;
GoToTextEnd;
end;
end;
end;
end;
但是 GotoTextEnd
并不总是有效。
最佳答案
问题是您放置在 OnChange 中的代码设置为编辑组件的新文本,并在那里引发了一个新的 OnChange 事件。如果您将代码移至 ChangeTracking 事件,那么它就会起作用:
procedure TForm15.edtRUTChangeTracking(Sender: TObject);
var
texto, digito: string;
begin
with Sender as TEdit do
begin
if Length(Text) > 1 then
begin
texto := String(Text).Replace('.', '').Replace( '-', '');
if Length(texto) > 1 then
begin
digito := Copy(texto, Length(texto), 1);
texto := FormatFloat(',0', StrToFloat(Copy(texto, 1, Length(texto) - 1)));
texto := texto.Replace(',', '.');
texto := texto + '-' + digito;
OnChangeTracking := nil;
Text := '';
Text := AnsiUpperCase(texto);
OnChangeTracking := edtRUTChangeTracking;
GoToTextEnd;
end;
end;
end;
end;
关于delphi - TEdit OnChangeTracking,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29710800/
我想在TEdit中格式化##.###.###-#,我使用以下代码: procedure TfrmPropiedad.edtRUTChangeTracking(Sender: TObject); var
我是一名优秀的程序员,十分优秀!