关于EditMask的问题

skipsol 2011-07-17 06:53:53
我在TValueListEditor的某一个单元格上需要做输入值的校验,校验规则如下:

1. 可以输入A,B,C,D,E,a,b,c,d,e中的任意字符
2. 最大长度暂定5个(最好可以动态指定)
3. 输入的字符不能有重复值

请问应该怎么实现?

我尝试用TValueListEditor->ItemProps[i]->EditMask = "lllll;1;";
但是这样不能限制其他的字母,而且目标单元格会有 "11111;1;" 这样的初值显示。
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
s1031129012 2011-07-18
  • 打赏
  • 举报
回复
To CppFile(..从头开始..):

谢谢你的回答,这样确实能解决问题。
我还想问一下,用EditMask能做到吗?
zjcman123 2011-07-18
  • 打赏
  • 举报
回复
用EditMask格式编辑不能实现你的3个目标,硬要实现,也需要自己写代码,
还不如用1楼的办法,毕竟目的最重要,实现方法无所谓
skipsol 2011-07-18
  • 打赏
  • 举报
回复
To CppFile(..从头开始..):

谢谢你的回答,这样确实能解决问题。
我还想问一下,用EditMask能做到吗?
CppFile 2011-07-17
  • 打赏
  • 举报
回复
bool func(String str,wchar_t &k)
{
if(str.Pos(String(k))==0) return false;
else return true;
}

void __fastcall TForm1::lst1KeyPress(TObject *Sender, wchar_t &Key)
{
if(Key=='a' || Key=='A' || Key=='b' || Key=='B' || Key=='c' || Key=='C' || Key=='d' || Key=='D' )
{
String str=lst1->Cells[ lst1->Col ][lst1->Row ];

if(func(str,Key)) Key=0;//重复
}
else Key=0;
}
//---------------------------------------------------------------------------

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧