ilikenba 发表于 2004-7-10 15:46

使Edit控件只能输入数字!

<P>void __fastcall TForm1::Edit1Change(TObject *Sender)
{
char *string;
int i,j,k;
char ch;
bool flag=false;

k=Edit1-&gt;Text.Length();
string=new char;
strcpy(string,Edit1-&gt;Text.c_str());
for(i=0;i&lt;k;i++)
{
ch=string;
if(!(ch&gt;='0' &amp;&amp; ch&lt;='9' || ch=='.'))
{
for(j=i;j&lt;k;j++)
string=string;
k--;
flag=true;
}
}
if(flag)
Edit1-&gt;Text=AnsiString(string);
delete[] string;
//GlobalText=Edit1-&gt;Text;
}
//---------------------------------------------------------------------------
*************************************************************************************************</P>
<P>void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &amp;Key)
{
    if(!(Key&gt;='0' &amp;&amp; Key&lt;='9' || Key=='.' || Key=='\b'))
        Key=0;
}
//--------------------------------------------------------------------------- </P>
<P>*************************************************************************************************</P>
<P>void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &amp;Key)
{
switch(Key)
{
case '0': //接受数字键0~9的输入
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case 8: //这是一个BackSpace键,不能禁止,否则不能实现删除功能了
break;
case '.': //检查是否已存在小数点
if(DotInStr(Edit1-&gt;Text))
Key=0;
break;
case '+': //检查是否已存在符号
case '-':
if(SignInStr(Edit1-&gt;Text))
Key=0;
break;
default: //对于其他输入键,置Key=0
Key=0;
break;
}
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::DotInStr(AnsiString ass)
{
int ii,ll;
ll=ass.Length();
for(ii=0;ii&lt;ll;ii++)
{
if(ass.c_str()=='.')
{
return True;
}
}
return False;
}
//该函数检查字符串前面是否已存在"+、-"符号
bool __fastcall TForm1::SignInStr(AnsiString ass)
{
int ii,ll;
ll=ass.Length();
for(ii=0;ii&lt;ll;ii++)
{
if((ass.c_str()=='+')||(ass.c_str()=='-'))
{
return True;
}
}
return False;
}
</P>
页: [1]
查看完整版本: 使Edit控件只能输入数字!