我在Delphi中有一个包含几个TEdit框的表单。我想要一种方法来检查验证所有的盒子类型,目前我必须为每个TEdit分配一个布尔变量。 e.g。
Var
TEdit1Valid:boolean;
TEdit2Valid:boolean;
表格中的每个TEdit等等等。
对于第一种方法,它必须看起来像这样:
If TEdit1Valid then
ShowMessage('Your', Edit1.Name, 'is invalid');
每个TEdit框的等等。
这会创建许多变量,我只是想知道是否有更好的方法来实现它。我有一个想法是将一个名为Valid的属性分配给TEdit,但我不知道如何做到这一点。通过这种方法,我可以为每个TEdit编写一个TEdits数组并执行以下
for I := 1 to High(EditList) do
begin
if EditList[I].Valid = false then
ShowMessage('Your ', EditList[I].Name, 'is invalid');
end
这只是我刚刚编写的粗略代码的一个示例,可以与我可以像这样迭代地执行的其他事情一起使用。 那么有人可能会提出一个好方法,或者告诉我如何做上述方法。
答案 0 :(得分:4)
如何在TEdit控件上使用OnExit事件处理程序?例如:
procedure TForm1.Edit1Exit(Sender: TObject);
begin
with Sender as TEdit do
begin
if not IsValidEdit(Text) then
ShowMessage('Your ' + Name + ' is invalid');
end;
end;
然后将相同的OnExit事件应用于所有TEdit控件。这个例子" IsValidEdit"我上面使用的函数可以验证你的TEdit的Text值,或者你可以把你的验证代码放在OnExit事件中(但是在我看来,它会是"更清洁"使用特定的函数来验证)。
function IsValidEdit(const AValue: string): boolean;
begin
if Length(AValue) < 5 then // not valid if length less than 5
Result := False
else
Result := True;
end;
答案 1 :(得分:2)
您可以使用Tag属性。它是整数而不是布尔值。根据Embarcadero的帮助 -
标签没有预定义。 Tag属性是为 开发人员的便利。它可以用于存储额外的 整数值或它可以类型转换为任何32位值,如a 组件引用或指针。
答案 2 :(得分:1)
OnExit适用于单个字段验证,并且在您不希望用户将字段留空或具有不正确的值时非常有用。尽管它有效,但它不适用于整体表单验证。
对于表单验证,您最好创建一个在OnClose处理程序中调用的方法(例如,Validate),如果失败,则显示一条消息,将光标放在字段中问题,然后设置Action:= caNone,这将阻止表单关闭。