读书人

关于EditMask的有关问题

发布时间: 2012-03-07 09:13:51 作者: rapoo

关于EditMask的问题
我在TValueListEditor的某一个单元格上需要做输入值的校验,校验规则如下:

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

请问应该怎么实现?

我尝试用TValueListEditor->ItemProps[i]->EditMask = "lllll;1;";
但是这样不能限制其他的字母,而且目标单元格会有 "11111;1;" 这样的初值显示。

[解决办法]
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;
}
//---------------------------------------

[解决办法]
用EditMask格式编辑不能实现你的3个目标,硬要实现,也需要自己写代码,
还不如用1楼的办法,毕竟目的最重要,实现方法无所谓

读书人网 >C++ Builder

热点推荐