使用Delphi进行货币格式化

时间:2015-06-20 10:31:57

标签: currency delphi

我正在尝试在Delphi中编写代码,它将以货币格式显示给定的数字,如下所示:

enter image description here

现在它可以填充整数和另一个字段,直到更新任何参数。 我很乐意有一个代码,当我写它时会以货币格式显示一个数字。我试着通过输入以下内容来管理它:

procedure TForm1.EditZakladChange(Sender: TObject);
var zaklad: Currency;
begin
  zaklad := StrToFloat(EditZaklad.Text);
  EditZaklad.Text := FloatToStrF(zaklad, ffCurrency, 10, 2);
end;

end.

但每当输入某些内容(zaklad字段)时,会出现此错误:

enter image description here

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

确保 edtZaklad MaxLength 为0。

var
  Form21: TForm21;
  Check:string; //to break the loop.

function GetCurrency(Num: String):string;
var
  i: Integer ;
  Str:String;
  zaklad: Currency;
begin
  Result := '';
  for i := 1 to length(Num) do
  begin
    if (Num[i] in ['0'..'9']) then
    Begin
      Str := Str + Num[i] ;
      zaklad := StrToFloat(Str);
      Result := FloatToStrF(zaklad, ffCurrency, 10, 2);
      Check := Result;
    End;
  end;
end;

function ExtractCurrencySymbol(zaklad: String):string;
var
  i: Integer ;
  Str:String;
begin
  Result := '';
  for i := 1 to length(zaklad) do
  begin
    if NOT (zaklad[i] in ['0'..'9','.',',']) then
    Begin
      Str := Str + zaklad[i];
      Result := ' '+Trim(Str);
  end;
  end;

end;

procedure TForm21.EditZakladChange(Sender: TObject);
begin
  if AnsiPos(Check,EditZaklad.Text) <> 0 then exit;
  if (Trim(EditZaklad.Text) = '') then exit
  else
  begin
    EditZaklad.Text := GetCurrency(EditZaklad.Text)+ExtractCurrencySymbol(EditZaklad.Text);
    Exit;
  end;
end;

我希望这就是你所要求的。