希望达到如同edit的maxlength一样的效果,
即没有办法输入第五个字符??

解决方案 »

  1.   

    这么写为什么不去
    TEdit(dbgrid1.Columns[0]).Maxlength:=4;
      

  2.   

    数据绑定的数据长度好像不能在数据集打开的状态下设置,否则会报错。
    假如你要限制的长度跟数据库设计时的长度不一样,那只能在ADODataset等的Fields Editor里面修改相应字段的Size(并且只能小于或等于数据库字段的设计长度)。如果要限制的长度跟数据库设计的长度是一致的,那不需要做什么设置,DBGrid会自动根据字段的长度来做限制。
      

  3.   

    不可以在dataset中设定
    说,不能这样操作在一个开的数据集中
      

  4.   

    在dbgrid中的操作是对数据集的操作;除非你设定了该字段的长度为4;
    然后在beforepost中给点提示还可以;
      

  5.   

    其它的放开不算,
    是不是想在dbgrid中实现像edit的maxlength一样的控制不能实现阿?用户需求如下(起因)
    用dbgrid完成 输入信息 ;其中一个字段是时间字段(分:妙)
    我只能限制输入的为“数值”信息(dbgrid的keypress)
    然后在beforepost中判断是否为正确的时间信息,如正确插入,错误 提示错误信息
    问题是
    正确的格式为 4位数,前两位位“十分”,后两位位“妙”
    这样的话用户可以无限的输入多个数字,而只有当离开该cell时候,才发出错误提示信息
    我像限制一下用户的输入,
    或者当输入两个字符的时候能自动的出来一个“:”间隔一下我也尝试用dbgrid。的一个colums 的buttonstyle设成cbsEliispe用一个maskedit来完成
    然后在dbgride的ditbuttonclick完成可出现的问题是
    1:点击了dbgrid的需要设定的colums出现maskedit了,但是如何当在maskedit中
    输入的信息转存到dbgrid中那(每次都出现问题)?在maskedit的exit中如何完成那?
    2:如何控制maskedit每次显示的位置?在当前“cell”上?且仅用一个maskedit来完成
    我不定个数的“行”的添加??如能解决上面的问题也可
    谢谢
      

  6.   

    //控制数据的存储最好还是控制DataSet而不是控制其所对应的数据控件~~
    procedure TForm1.Table1AfterOpen(DataSet: TDataSet);
    begin
    //如果你的字段是整数类型可以这样~~
      TIntegerField(Table1.FieldByName('整数字段')).MaxValue := 1000;
    //如果你的字段是字符类型可以这样~~
      TStringField(Table1.FieldByName('字符字段')).Size := 4;
    end;
      

  7.   

    upbeforepost好象不让改?就是说,我写完事件代码,指定时没有此事件名称?请指教!!!