TEdit属性变量delphi

时间:2015-01-25 15:05:27

标签: validation delphi properties boolean

我在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

这只是我刚刚编写的粗略代码的一个示例,可以与我可以像这样迭代地执行的其他事情一起使用。 那么有人可能会提出一个好方法,或者告诉我如何做上述方法。

3 个答案:

答案 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,这将阻止表单关闭。