2015-06-20 105 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