繁体   English   中英

TEdit属性变量delphi

[英]TEdit property variable delphi

我在Delphi中有一个包含几个TEdit框的表单。 我想要一种方法来检查验证所有的盒子类型,目前我必须为每个TEdit分配一个布尔变量。 例如

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

这只是我刚刚编写的粗略代码的一个示例,可以与我可以像这样迭代地执行的其他事情一起使用。 因此,有人可以建议这样做的一种好方法还是向我展示如何执行上述方法。

如何在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;

您可以使用Tag属性。 它是整数而不是布尔值。 根据Embarcadero的帮助 -

标签没有预定义。 提供Tag属性是为了方便开发人员。 它可以用于存储其他整数值,也可以将其类型转换为任何32位值,例如组件引用或指针。

OnExit适用于单个字段验证,并且在您不希望用户将字段留空或具有不正确的值时非常有用。 虽然它有效,但不建议进行整体表单验证。

对于表单验证,最好创建一个在OnClose处理程序中调用的方法(例如,Validate),如果它失败,则显示一条消息,将光标放在相关字段上,然后设置Action:= caNone,这将阻止表单关闭。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM