自做一桌面数据库,数据源是dbf表,其中一字段为数值型(8,2)结构,发现无论在dbgrid或dbedit输入或修改数据时,对输入的长度和格式都无法控制,比如整数位是5位,但在输入时可以随便超过,且一回车更新时程序就死机,把table控件的fields的editformat和displayformat属性都定义成9999.99;1;_也无用...
怎么办,高手救命,在线...
怎么办,高手救命,在线...
解决方案 »
- outlook2003发送到附件变为winmail
- 如何取得Windows文件操作的记录,也就是说复制粘贴这些操作的日志记录
- delphi中调用标准c接口(dll)的问题!
- 如何实现窗体刷新的时候防止闪烁?帮帮忙啊!谢谢!
- “另一个用户在用”导致无法操作的问题,谁能解决?
- 如果一个人技术水平很差,但很会拍领导马屁,很会装腔作势,很会邀功,让他作系统分析员,你作他手下的程序员,你怎么看他????(wpg
- 那位大哥提供一下像TMxOutLookBar一样的控件,要用Delphi7的!
- 动态创建ACCESS数据库
- 请问SQL有没有宏替换功能,是什么字符代表它?
- 请问换页符的ASCII码是多少?
- 关于TClientDataSet的Filter问题
- 关于数据类型的疑问?
procedure TfrmMainBuild.edtBuildHeightKeyPress(Sender: TObject;
var Key: Char);
begin
if not (Key in ['0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', Char(8), '.']) then
begin
Key := Char(8);
Beep;
end;
end;
((TNumericField *)ADOQuery2->Fields->Fields[2])->DisplayFormat = "#.########"
delphi中我没试过,我想可能是:
var
TempField:TNumericField;
TempField := (ADOQuery2.Fields.Fields[2]) as TNumericField;
TempField.DisplayFormat := '#.#####';ADOQuery2通过DataSource绑定到DBGrid
Table1.Fields[9].EditMask:='9999.99';
如果严格输一个"1234.56"之类的数就没问题,但输 "123" 或 "123.45" 之类反正
不是严格的"9999.99"样子就要死机,我怎么办啊!
使用ADODataSetDSDesignerGetText方法
对Sender引出的值做格式化后写入text值
DBGRID中:
function InputNumberInDBGrid(DBGrid : TDBGrid; var Key : char):Boolean;
var
p:integer; tp:TPoint;
begin
if key in ['0'..'9','.'] then //这里要加上‘+’和‘-’
begin
if key in ['+','-'] then
begin
p:=pos('+',DBGrid.SelectedField.Text)+pos('-',DBGrid.SelectedField.Text);
if p>0 then
key:=#0
else begin
GetCaretPos(tp);
if tp.x>1 then
key:=#0;
end;
end else
if key='.' then
begin
p:=pos('.',DBGrid.SelectedField.Text);
if p>0 then
key:=#0;
end;
end else
if key>#31 then //这条语句要去掉吧
key:=#0;
end;