晕了,用tcxdbbuttonedit做了个控件,调了三天没调好.解决思路

晕了,用tcxdbbuttonedit做了个控件,调了三天没调好.
简单地说,用tcxdbbuttonedit定制成一个能显示字符的日期控件.
首先建立此类.重构creat方法,在create加上 properties.OnButtonClick:=buttonclick;
在buttonclick中,呼叫一个日期控件,因为字段的格式是'yyyymmdd',在返回的时候就用formatdatatime格式化一下再赋给控件.

使用此控件的时候,为了使它显示出日期格式,所以把它的editmask设置成!0000/00/00;1
从日期控件中返回字符型日期都没问题.问题出在删除这个控件里的值时,移到焦点到别处,就会出现'编辑值非法'的错误,这个问题花了一两天,最终找到一个解决办法:

在控件的keyup里面,判断edittext是否为空,若为空,则 databinding.DataSource.DataSet.FieldByName(databinding.DataField).Clear;
然后在onvalidate事件里,判断editmask若不为空,且长度不等于10的时候,就
showmessage('输入的日期无效');
abort;

编辑值非法的问题算是解决了,但问题又出现了.
当手动输入日期,再post的时候,就会出现:
'多步操作产生错误,请检查每一步值的状态.'

真是晕死了,花了我三四天,弄得我烦死了,哪位高手能救救我啊

一.如果有成熟的字符日期控件最好,请您发一个给我.不胜感激!
二.解决'编辑值非法'的问题有没有更好的问题.
三.最后,上面都不行,解决'多步操作产生错误,请检查每一步值的状态.'的问题,您也是我的救星啊.

------解决方案--------------------
'多步操作产生错误,请检查每一步值的状态. '这个错误应该是由于你的数据控件中字段长度跟数据库里的字段长度不一致造成的.