各位朋友,小弟的窗体有多个EDIT,其中一个EDIT是让用户输入数值的,小弟想让用户输入完数字之后,自动将EDIT显示的整数部分的数字每隔3个数字就用一个逗号来隔开,请问这个该怎样实现,请各位朋友赐教,谢谢!!!
例如:用户输入 12345678.12
当用户在EDIT框里面输入完上面的数值后,会马上显示 12,345,678.12又例如,用户输入:234567.33
当用户在EDIT框里面输入完上面的数值后,会马上显示 234,567.33又例如,用户输入:1234.75
当用户在EDIT框里面输入完上面的数值后,会马上显示 1,234.75就是说,假如整数部分超过3位数字,就会每3位数字前面加一个逗号上去,依此类推,诚心请各位朋友赐教,谢谢!!!
例如:用户输入 12345678.12
当用户在EDIT框里面输入完上面的数值后,会马上显示 12,345,678.12又例如,用户输入:234567.33
当用户在EDIT框里面输入完上面的数值后,会马上显示 234,567.33又例如,用户输入:1234.75
当用户在EDIT框里面输入完上面的数值后,会马上显示 1,234.75就是说,假如整数部分超过3位数字,就会每3位数字前面加一个逗号上去,依此类推,诚心请各位朋友赐教,谢谢!!!
离开edit时,把edit1.text的内容由123456.78转为123,456.78程序运行后,自动扫描所有的edit,加上这2个事件
取edit内容时,也要先把edit1.text的内容由123,456.78转为123456.78
设置edit内容时,最后也要把edit1.text的内容由123456.78转为123,456.78
a:=StrToFloat(Edit1.Text);
NewEdit1.Text:=FormatFloat('#,###.###',a);按这个试试
var
a: Double;
tmp:string;begin
inherited;
a := StrToFloat(Edit4.Text);
tmp := FormatFloat('#,###.###', a);
edit4.Text := tmp;
end;
MyFormatStr(S:string):string;
begin
MyFormatStr:=Format('#,###.###',s);
end; 2、建议使用RX组件中的TCurrentEdit控件
(1)值存入CurrentEdit1.Value;
(2)显示格式通过设置DisPlayFormat;
(3)如DisPlayFormat为‘¥,000,00元’,Value值为123456.78,
显示 ¥123,412,345,678.97元
显示 ¥123,412,345,678.97元
2、子类化
3、使用D2010 的那个什么 类扩展
在uses 该Unit后可直接使用
type
TDataSetHelper = class helper for TDataSet
procedure Hello;//新增过程
procedure Open;//直接覆盖原来的过程
end;{ TDataSetHelper }procedure TDataSetHelper.Hello;
begin
ShowMessage('Hello');
end;procedure TDataSetHelper.Open;
begin
ShowMessage('Open');
//inherited SaveToFile (strFileName, TEncoding.UTF8);//也是可以的。
end;
1、先定义一个函数,用FormatFloat函数实现你的功能
2、在窗体的OnCreate事件中,遍历所有的控件,将你要处理的
TEDIT类的OnExit指定为你写的函数,就OK了
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
private
procedure EdtExit(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.EdtExit(Sender: TObject);
begin
(Sender as TEdit).Text := FormatFloat('#,0.00',StrToFloatDef((Sender as TEdit).Text,0));
end;procedure TForm1.FormCreate(Sender: TObject);
var
i:Integer;
begin
for i:= 0 to ComponentCount-1 do
begin
if Components[i] is Tedit then
TEdit(Components[i]).OnExit := EdtExit;
end;
end;end.
否则,后患无穷啊