C ++ Builder XE8上的TEdit输入验证

时间:2015-08-04 03:18:58

标签: c++ c++builder c++builder-xe8

我是C ++ Builder XE8的新手。

我希望必须输入的最小和最大数字长度多达六个数字,我还需要确保只输入数字(0是异常),而不是字母字符,退格,标点符号,等

如果输入了除数字以外的任何内容,我还想生成一个错误框。

我尝试了几种代码组合,其中三种可以在下面看到,但这些代码都不起作用。

任何帮助肯定会受到赞赏!

(1)。

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, System::WideChar &Key)
{
  Edit1->MaxLength = 6;

  if (!((int)Key == 1-9)) {
  ShowMessage("Please enter numerals only");
  Key = 0;
  }
}

(2)。

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, System::WideChar &Key)
{
  Edit1->MaxLength = 6;

  if (Key <1 && Key >9) {
  ShowMessage("Please enter numerals only");
  Key = 0;
  }
}

(3)。

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, System::WideChar &Key)
{
  Edit1->MaxLength = 6;

  if( Key == VK_BACK )
   return;

  if( (Key >= 1) && (Key <= 9) )
   {
  if(Edit1->Text.Pos(1-9) != 1 )
   ShowMessage("Please enter numerals only");
   Key = 1;
  return;
  }
}

2 个答案:

答案 0 :(得分:1)

PXSelect<PX.Objects.AR.ARInvoice, Where<PXSelectGroupBy<PX.Objects.AR.ARAdjust, Where<PX.Objects.AR.ARAdjust.adjdRefNbr, Equal<PX.Objects.AR.ARInvoice.refNbr>, Aggregate<Count>>, Greater<Zero>>>>.Select(new PXGraph()); 有一个NumbersOnly属性:

  

只允许在文本编辑中键入数字。

将其设置为true并让操作系统为您处理验证。但是,如果您想手动验证它,请使用:

TEdit

答案 1 :(得分:0)

结帐TMaskEdithttp://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devwin32/idh_useop_textcontrols_xml.html

  

TMaskEdit是一个特殊的编辑控件,用于验证针对掩码输入的文本,该掩码对文本可以采用的有效表单进行编码。掩码还可以格式化显示给用户的文本。

编辑:设置最小长度

void __fastcall TForm1::MaskEdit1Exit(TObject *Sender)
{
   if (MaskEdit1->Text.length() < 6)
   {
     //your error message, or throw an exception.
   }
}