2015-07-22 49 views
0

我一直在做研究很多,仍然沒有線索如何顯示數字(特別是用兩個逗號或美分的貨幣數字)輸入作爲數字分組輸入即百萬= 1000000.25到1,000,000.25直接通過OnChange或OnKeyPress在德爾福7.德爾福7編輯框數字用逗號分組

我不想使用命令按鈕來改變,我希望它的行爲像Windows 7的計算器輸入框(通過OnChange,OnKeyPress)。它有數字分組,它有逗號(點)。

如果我看看Windows 7的計算器輸入框,並激活數字分組,這就是我也希望我的編輯框在德爾福7的行爲。有沒有任何方法或解決方案呢?

+0

Windows計算器沒有您直接輸入的編輯框,它使用按鈕按鈕和截取的按鍵來跟蹤用戶的輸入,然後使用相當於Delphi的'SysUtils的函數在顯示框中顯示計算出的數字.FormatCurr()'函數。如果您想在實際編輯字段上完成分組,請使用「TMaskEdit」而不是「TEdit」。 –

+0

所以它實際上攔截數字鍵盤,我實際上設法讓onkeypress工作,用戶可以輸入0到9只有單點(。)逗號,即10000.25,編輯框中不允許雙點。我只需要應用數字分組。 如果在這方面沒有解決方法,那麼我必須使用tmaskedit – Jon1024

+0

同樣,計算器沒有實際的編輯框,所以它的運行方式與您正在嘗試的不同(並且更簡單)。如果你真的需要在TEdit中顯示數字分組,可以嘗試使用它的OnChange或OnExit事件來調用value:= StrToCurr(Edit.Text),後面跟着Edit.Text:= FormatCurr(' #,## 0。##',value)'或'Edit.Text:= CurrToStrF(value,ffNumber,2)'來解析用戶的輸入並根據需要重新格式化。 –

回答

1

可能容易,因爲:

label1.caption:= FormatFloat('。#,###,### 00,10000000.25);

問候。 Pau。

+0

THX,但我需要改變的格式,而它在編輯框中 @pau – Jon1024

+0

試試這個,它的作品對我來說類型。 –

+0

procedure TForm2.Edit1ChangeTracking(Sender:TObject); var value:擴展; c:String; begin FormatSettings.DecimalSeparator:='。'; FormatSettings.ThousandSeparator:=','; c:= StringReplace(Edit1.text,',','',[rfReplaceall]); Value:= StrToFloat(c); Edit1.text:= FormatFloat('#,###,###。##',值); 結束; –