BCB新手问题,关于Edit只能输入数字,在线急等!!!

时间:2021-04-01 18:44:16
我是这么做的
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
        if     ((Key <char( &apos;0 &apos;) | |Key >char( &apos;9 &apos;)))   //只能输入数字
        {
                if   ((Key!=8)&&(Key!=13))//支持回车和退格
                {
                        Key=0;
                }
        }
}

这些都是我从这里找到的,但是为什么我一编译就报告Undefined symbol 'apos',是不是少加入了什么文件呢?

10 个解决方案

#1


使用api函数吧

long Style = GetWindowLong(Edit->Handle,GWL_STYLE);
     Style |= ES_NUMBER;
     SetWindowLong(Edit->Handle,GWL_STYLE,Style); 

#2


关于Edit只能输入数字的问题有过讨论,可以搜索一下。
注意一点的是,是否还要屏蔽粘贴

#3


由于KeyPress事件发生在Onchange以前,故可利用Keypress事件,判断按键是不是从零到九,或是backspace
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if ((Key<'0'||Key>'9')&&Key!='\b')
       Key='\0';
}

#4


另外你可以直接用maskedit控件就行了

#5


大家附代码时请用:插入源代码方式。

#6


使用api函数 也可以直接用maskedit控件 就可以完成了

#7


maskedit控件.

#8


void __fastcall TForm2::Edit1KeyPress(TObject *Sender, char &Key)
{
if((Key<'0'||Key>'9')&&Key!=13&&Key!=VK_BACK) Key=NULL;  
}

#9


复制到这里代码就变形了?晕


void __fastcall TForm2::Edit1KeyPress(TObject *Sender, char &Key)
{
if((Key<'0'||Key>'9')&&Key!=13&&Key!=VK_BACK) Key=NULL;  
}

#10


楼上正解。

#1


使用api函数吧

long Style = GetWindowLong(Edit->Handle,GWL_STYLE);
     Style |= ES_NUMBER;
     SetWindowLong(Edit->Handle,GWL_STYLE,Style); 

#2


关于Edit只能输入数字的问题有过讨论,可以搜索一下。
注意一点的是,是否还要屏蔽粘贴

#3


由于KeyPress事件发生在Onchange以前,故可利用Keypress事件,判断按键是不是从零到九,或是backspace
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if ((Key<'0'||Key>'9')&&Key!='\b')
       Key='\0';
}

#4


另外你可以直接用maskedit控件就行了

#5


大家附代码时请用:插入源代码方式。

#6


使用api函数 也可以直接用maskedit控件 就可以完成了

#7


maskedit控件.

#8


void __fastcall TForm2::Edit1KeyPress(TObject *Sender, char &Key)
{
if((Key<'0'||Key>'9')&&Key!=13&&Key!=VK_BACK) Key=NULL;  
}

#9


复制到这里代码就变形了?晕


void __fastcall TForm2::Edit1KeyPress(TObject *Sender, char &Key)
{
if((Key<'0'||Key>'9')&&Key!=13&&Key!=VK_BACK) Key=NULL;  
}

#10


楼上正解。