DBGrid中字段输入长度控制,delphi及各位大侠请进(80分)

  • 主题发起人 主题发起人 yangbo
  • 开始时间 开始时间
Y

yangbo

Unregistered / Unconfirmed
GUEST, unregistred user!
在dbgrid中输入内容,当输入的内容长度大于表中定义的长度时系统会报错,
如果在更新之前主动报错最好了,以前看见过delphi大侠的类似回答:但我
没调试正确,以下是delphi大侠的代码:
---------------
1.可以在Field对应的OnSetText事件中处理.
procedure TForm1.Table1AAASetText(Sender: TField;
const Text: String);
begin
application.messagebox(PChar(Text),'111',mb_OK);
sender.asstring := Text;
end;
----------------
我试了但onsettext属性没设正确,该怎样设置?比如table1中有'B1'字段
长度为4,具体该怎样做?
 
>>我试了但onsettext属性没设正确,该怎样设置?
怎样设置? 你在Onsettext是建立写代码呀!
比如:
if length(sender.asstring)>4 then
begin
application.messagebox('妈的!太长了!','111',mb_OK);
sender.asstring := Text;
end;
不知道这样对不对?
 
OnValidate事件。
 
人家要主动抱错嘛。
beforepost里一个个查:-)
用ip吧,虽然大了点,不过省事
 
你用的是什么数据库。我这里没出错,当你输入的字符长度等于库中的
定义的长度时,你怎么输入也输不进入。
 
首先谢谢各位大侠的回答!问题我没说清楚,现重复几个要点:
1.B1为数值型,最大9999,若为字符型时,输入到字段最大长度是不会报错的,正如
Ridolph所说,cakk的做法在字符字段上也是对的.若输入10000时,系统提示“超出
最大值".
2.cj大侠,输入要求不高,回车也可以,只要系统不出故障
3.cakk的方法是不是改改参数可以实现哪?我试了几个不行
还请各为大侠拉兄弟一把,谢谢!!
 
如果输入10000,sender.asstring的长度也应该大于4呀!
 
呵呵,告诉你用IP啦,有个PICTURE属性,很好用的说。
我现在没有IP写不来程序了的说:-)
 
1.cj大侠,IP是什么,控件吗,mail或告诉我下载地址!谢谢!!
2.cakk大侠,我试了几次,终于弄明白了,sender.value的值实际上是已经
post后的值,比如'b1'定义为4个长度的数值型,输入10000,系统已经出错
了,所以根本无法判断长度,若输入100,它先post了,长度自然就是3了,
而字符型因为无法输入大于定义长度字符,所以可行.
继续劳驾各位大侠...
 
用OnValidate事件呢?
 
呵呵!cAkk说的对,在OnValidate中可以,还有bin_star但要注意不要超过32767,
谢谢大家了!分数比较少,不好意思!
 
后退
顶部