stringgrid栏位输入money型数据 |
答題得分者是:gyl
|
baby2321
初階會員 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
stringgrid1.cells[2,i]中
1.如何实现USER在stringgrid1.cells[2,i]输入字母或非money型时 将其强制转换为0显示?不知在StringGrid1MouseDown中如何写 2.在stringgrid1.cells[2,i]输入的数据 如何隔三位就加上逗号分割? 3.小数点后如何保留小数点后两位和 小数点后第两位 根据USER在小数点后输入的第三位四舍五入? 对于四舍五入 不知道是不是与
Trunc(stringgrid1.cells[2,i] * 100 0.5) / 100;
有关 但具体应如何写呢? 看到有朋友这样写
double d = 1234567.01;
DecimalFormat df = new DecimalFormat("#,###,###.##");
String str1 = df.format(d);
System.out.println(str1);
但不知这如何和stringgrid[2,i]的输入确认结合起来 谢谢大家
|
gyl
一般會員 發表:0 回覆:15 積分:13 註冊:2005-01-10 發送簡訊給我 |
|
baby2321
初階會員 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
我想这些应该是在stringgrid1KeyPress下体现
我写了个
procedure tform1.stringgrid1KeyPress(Sender: TObject; var Key: Char); begin if (not (key in ['0'..'9'])) then key:=#0; end;可以不响应字母键 但回车键也响应不了 在stringgrid1KeyPress中加入 FormatFloat('##,###,##0.##', StrToFloat(StringGrid1.Cells[2,j]));提示无法通过 另 问题一是不是涉及要使用F1book控件来实现? 不会用F1book 發表人 - |
gyl
一般會員 發表:0 回覆:15 積分:13 註冊:2005-01-10 發送簡訊給我 |
引言: 我想这些应该是在stringgrid1KeyPress下体现 我写了个procedure tform1.stringgrid1KeyPress(Sender: TObject; var Key: Char); begin if (not (key in ['0'..'9'])) then key:=#0; end;可以不响应字母键 但回车键也响应不了 在stringgrid1KeyPress中加入 FormatFloat('##,###,##0.##', StrToFloat(StringGrid1.Cells[2,j]));提示无法通过 另 问题一是不是涉及要使用F1book控件来实现? 不会用F1book 發表人 - >>< face="Verdana, Arial, Helvetica"> 我沒有DELPHI測試不了,問題是什麼,過不了是肯定的,StringGrid1的名字改成跟你的stringgrid1一樣,Cells[2,j]似乎也要小寫 如果還不能,把錯誤訊息說一下吧 key的問題我還是不會解,要想想 |
baby2321
初階會員 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
......
procedure TInput.StringGrid1KeyPress(Sender: TObject; var Key: Char); var i:integer;//以前这里加了 但把StringGrid1.cells[2,i] 写成 StringGrid1.cells[2,j] 所以以前通过不了 begin FormatFloat('##,###,##0.##', StrToFloat(StringGrid1.cells[2,i])); if (not (key in ['0'..'9'])) then key:=#0; end;这样 以上代码是通过的 但 运行F9后 我在StringGrid1.cells[2,i]上只要一写数字 就提示: Project xxx.exe raised exception class ECnvertError with message ''' is not a valid floating point value'.Process stopped.Use Step or Run to continue. 也就是 not a valid floating point value错误 怎么回事? |
gyl
一般會員 發表:0 回覆:15 積分:13 註冊:2005-01-10 發送簡訊給我 |
|
gyl
一般會員 發表:0 回覆:15 積分:13 註冊:2005-01-10 發送簡訊給我 |
現在的做法是輸入的同時檢查該KEY是否合理,但是改變型態是在ENTER之後發生,也就是說輸入完畢用滑鼠點其他地方... FormatFloat就不會被執行,有甚麼好意見嗎? (在輸入的時候不斷改變型態似乎不太好,如果有"離開輸入欄位"類似的EVENT就好辦了)
// ======== stringgrid1keypress ======== if ( Key == 13 ) //Enter { // 我從SetEditText Event那裡取得ACol, ARow - 目前編輯的欄位 int a = StrToInt(str_currency[0]); int b = StrToInt(str_currency[1]); // ******** METHOD ********* if (str_currency[2] != "") //避免沒有修改的情況下按ENTER { double result; result = StrToFloat(str_currency[2]); StringGrid1->Cells[a][b] = FormatFloat("#,##0.##", result); } str_currency[2] = ""; } else if ( !((Key >= 48 && Key <= 57) || Key == 46) ) // 48-57 for 0-9; 46 for Period { Key = 0; //Neglect keys } else { str_currency[2] = (AnsiString)Key; }發表人 - gyl 於 2005/11/23 20:45:05 |
baby2321
初階會員 發表:52 回覆:165 積分:48 註冊:2005-06-11 發送簡訊給我 |
我在对stringgrid[2,i]中输入数据时 写了个函数 主要是实现输入的时候是string型 在执行adocommand时将string型cast成money 型
procedure TInput.insert(opname: string); var i:integer; input:string; begin for i:=1 to 100 do//这里我设定是100行 begin if stringgrid1.Cells[0,i]='' then continue; input:=stringgrid1.cells[2,i]; adocommand1.CommandText:='insert into 表(...[收入],...) values(...cast(''' input ''' as money),...)'; adocommand1.Execute; end; end; procedure TInput.StringGrid1KeyPress(Sender: TObject; var Key: Char); var i:integer; begin FormatFloat('##,###,##0.##', StrToFloat(StringGrid1.cells[2,i])); if (not (key in ['0'..'9','.'])) then key:=#0; end;我想是不是 FormatFloat('##,###,##0.##', StrToFloat(StringGrid1.cells[2,i])); if (not (key in ['0'..'9','.'])) then key:=#0;我写的不是地方 不知道这里怎么统一起来 还有...就是...{...}SORRY...看不太明白... 發表人 - baby2321 於 2005/11/24 17:57:50 看到有朋友对类似的问题 for i:=0 to query1.fields.count-1 do begin if query1.fields[i].name='需要格式化的字段' then query1.fields[i].displayformat := ¥,#.00; end; 这样处理 如果这样有效 不知这里具体如何结合? 發表人 - baby2321 於 2005/11/24 18:34:44 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |