gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:07 25 4
gpt4 key购买 nike

我是 C++ Builder XE8 的新手。

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

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

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

我们将不胜感激!

(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;
}
}

最佳答案

TEdit 有一个 NumbersOnly属性:

Allows only numbers to be typed into the text edit.

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

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, System::WideChar &Key)
{
// set this at design-time, or at least
// in the Form's constructor. It does not
// belong here...
//Edit1->MaxLength = 6;

if( Key == VK_BACK )
return;

if( (Key < L'0') || (Key > L'9') )
{
ShowMessage("Please enter numerals only");
Key = 0;
}
}

关于c++ - C++ Builder XE8 上的 TEdit 输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31800094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com