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 编写一个 TEdit 数组并执行以下

for I := 1 to High(EditList) do
begin
if EditList[I].Valid = false then
    ShowMessage('Your ', EditList[I].Name, 'is invalid');
end

这只是我刚刚编写的一些粗略代码示例,可以与我可以像这样迭代执行的其他操作一起使用。 那么有人可以建议一个好的方法来做这件事,或者告诉我如何做上述方法。

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

Tag has no predefined meaning. The Tag property is provided for the convenience of developers. It can be used for storing an additional integer value or it can be typecast to any 32-bit value such as a component reference or a pointer.

在 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 的文本值,或者您可以将验证代码放在 OnExit 事件中(但我认为 "cleaner",以使用要验证的特定功能)。

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;

OnExit 适用于单个字段验证,当您不希望用户将字段留空或使用不正确的值时非常有用。整体表单验证是不可取的,尽管它可以工作。

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