可是我在提交的时候写了这样的语句: procedure TFrm_Gz.Tb_GzBeforePost(DataSet: TDataSet); var i:integer; begin for i:=0 to dbgrid.Columns.Count-1 do begin if length(dbgrid.Columns[i].Field.Asstring)>9 then begin showmessage('sfs'); exit; end; end;end; 可是我如果输入多于number(8,2)的记录的时候,系统就报错,根本不执行上面的事件
后加入FIELD
选中某个FIELD后设置其属性
EDITFORMAT和DISPFORMAT
好象是 #######.00 or 00000.00
自己试下吧!
procedure TFrm_Gz.Tb_GzBeforePost(DataSet: TDataSet);
var i:integer;
begin
for i:=0 to dbgrid.Columns.Count-1 do
begin
if length(dbgrid.Columns[i].Field.Asstring)>9 then
begin
showmessage('sfs');
exit;
end;
end;end;
可是我如果输入多于number(8,2)的记录的时候,系统就报错,根本不执行上面的事件
如果一定要用DBGrid控件,可以考虑该控件的OnColExit事件。
if myfieldbyname('Myfield'').asfloat>99999999.99 then
raise exception.create('数据益出');
后加入FIELD
选中某个FIELD后在其OnSetText事件中控制输入,
在其OnGetText事件中控制显示
begin
Text := F(Table.FieldByName('field').AsString);//其中F是转换函数,把输入的值
//转换成(8.2)的格式,需要自己写。
end;