2015-06-20 64 views
1

我试图软件写在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

有人能帮助我的是,请?

+0

你不可能真的希望这样做。一个OnChange处理程序,用于修改它所连接的编辑。太乱了。也许你需要一个蒙面编辑。 –

+0

Thak你的回复David!我应该如何使用蒙面编辑?我是Deplhi的新手,没有经验。 –

+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; 

我希望这个你问什么。

+1

所以我可以写'1A2B3C'并且你返回'123'?这与问题的距离很远(问题是,除了其他人,输入字符串中的区域设置货币符号)。除了你没有考虑负面价值。除了你正在格式化循环内的刚连接的输出字符串。 – TLama

+0

@TLama答案已更新,我的英语不太好。我希望我能回答他现在所要求的。 – RepeatUntil

+1

货币符号由'TFormatSettings.CurrencyString'成员存储。而且您仍然在每次迭代时都会提供格式化文本的Result Result变量。并且该'Check'全局变量除去,直到有人注意到并开始downvote ;-)解析文本回到'CurrToStr'输出的内容并不那么容易。哦,而且还没有负面的数字考虑。我只是让用户将他们的值作为浮点数输入到一个标签中的编辑框和货币符号显示中。 – TLama