DBEDIT 是不可以直接输入文字的所以,在KeyPress时间下写ASCII屏蔽代码是无效的.例如,下面这段代码就无效. procedure TForm1.DBEdit1KeyPress(Sender: TObject; var Key: Char); begin if (Key<>#43) and (Key<>#45)Then Key:=#0; end;但是,我们可以这么写(注意事件的不同):procedure TForm1.DBEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=VK_ADD Then //输入"+" begin DBEdit1.Text:=DBEdit1.Text+'+'; DBEdit1.SelStart:=length(DBEdit1.Text); end; if key=VK_SUBTRACT Then //输入"-" begin DBEdit1.Text:=DBEdit1.Text+'-'; DBEdit1.SelStart:=length(DBEdit1.Text); end; end;当焦点移走时: procedure TForm1.DBEdit1Exit(Sender: TObject); begin DBEdit1.Clear; end; /**********************************/ QQ:479543842(大傻瓜) /**********************************/
procedure TForm1.DBEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key<>#43) and (Key<>#45)Then
Key:=#0;
end;但是,我们可以这么写(注意事件的不同):procedure TForm1.DBEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_ADD Then //输入"+"
begin
DBEdit1.Text:=DBEdit1.Text+'+';
DBEdit1.SelStart:=length(DBEdit1.Text);
end;
if key=VK_SUBTRACT Then //输入"-"
begin
DBEdit1.Text:=DBEdit1.Text+'-';
DBEdit1.SelStart:=length(DBEdit1.Text);
end;
end;当焦点移走时:
procedure TForm1.DBEdit1Exit(Sender: TObject);
begin
DBEdit1.Clear;
end;
/**********************************/
QQ:479543842(大傻瓜)
/**********************************/
如果 只是要 "不提示出错" 那好办啊。把那段代码 放到Try语句块里
try
//你原来的代码段
...
...
//你原来的代码段
except
; //空语句
end;注:在IDE里直接调试 还是会被IDE捕获运行生成的EXE文件,就不会提示错误了
真的?
当你碰到不可实现或很难实现得功能,或者要用很大得精力和时间来实现一个并不要紧得功能时,
请注意你可能已经走错路了。
请回头换个方向吧
确实是非要用dbedit不可,因我要用它寄挂在一个与同一数据表相连的控件上。
若然不用根本不能正确显示数据。
其实我觉得只要能覆盖其出错信息即可,只不过我是新手,不会而矣。
要是在 VFP 中,这根本不是问题,你们是否觉得 DELPHI 很弱智?
IF (KEY IN['+','=']) THEN
BEGIN
END;
确实是非要用dbedit不可,因我要用它寄挂在一个与同一数据表相连的控件上。
若然不用根本不能正确显示数据。
其实我觉得只要能覆盖其出错信息即可,只不过我是新手,不会而矣。
要是在 VFP 中,这根本不是问题,你们是否觉得 DELPHI 很弱智?人家已经给你说得非常清楚明白了,自己还搞不清楚,不会多试呀? 我看不是 delphi弱智,是你弱智!
你们根本不懂我想说什么,就乱说一通,如果只是限制其输入特定字符,还用搞得这么复杂吗?
在 DBEDIT 中只输入“+”,“-” 或输入为空时,当焦点转移到其它控件之前,它是不会提示出错的.
如果在 DBEdit1Exit 中用try except end 进行出错处理,生成的EXE文件后一样会提示错误。
你还是好好看看题目的意思再说吧,难道你们答对了,我会不给分吗?
很多人都不知道我说什么,就乱说一通.
总之,以上各位的代码是不能解决这个问题。其它语言对这个问题就很好处理。
可惜,你也是一知半解,但我用 edit 来处理或用 DBedit 当作字符型字段来处理又会有其它问题,
一时之间我又说不清楚,总之我一定要用 DBedit 来处理数据型字段。