以编程方式为 TcxTextEdit 设置验证选项

Programmatically set Validation Options for a TcxTextEdit

TcxTextEdit.Properties 下的

ValidationOptions 包含 evoRaiseExceptionevoShowErrorIconevoAllowLoseFocus.

如何将这些设置为 TrueFalse

例如:

procedure TfrmMain.cxTextEdit1Exit(Sender: TObject);
begin
  if cxTextEdit1.Text = EmptyStr then
    begin
      evoRaiseException := true; ????
    end
end;

TcxTextEdit.Properties.ValidationOptions 定义为:

TcxEditValidationOptions = set of (evoRaiseException, evoShowErrorIcon, evoAllowLoseFocus);

TcxTextEdit.Properties.ValidationOptions 作为一个 set 它可以包含一个或多个在枚举中定义的值。

这允许只向集合添加一个值而不影响其他值:

procedure TForm1.cxTextEdit1Exit(Sender: TObject);
begin
  if cxTextEdit1.Text = EmptyStr then begin
    cxTextEdit1.Properties.ValidationOptions := cxTextEdit1.Properties.ValidationOptions + [evoRaiseException];//adds a value
  end;
end;

这些是有效的分配:

cxTextEdit1.Properties.ValidationOptions := []; //empty

cxTextEdit1.Properties.ValidationOptions := [evoRaiseException, evoShowErrorIcon]; //assigns 2 values to the set

cxTextEdit1.Properties.ValidationOptions := cxTextEdit1.Properties.ValidationOptions - [evoRaiseException]; //removes a value

这会检查一个集合是否包含一个值:

if evoRaiseException in cxTextEdit1.Properties.ValidationOptions then
  . . .

您并未将所有值分配给 TrueFalse,但这些值已添加到集合中或未添加到集合中。

aset的元素是序数,其值可以通过System.Ord函数获取:

anIntVariable := Ord(evoShowErrorIcon);

set 中的元素没有明确赋值时,元素以 0 开头。

一个值可以显式分配给 set 中的一个元素,如下所示:

TMyCustomSet = set of (mcsTriangle = 3, mcsHexagon = 6, mcsNonagon = 9);

另请参阅 Structured Types (Delphi) - Sets, System.Ord and System.Include and System.Exclude 用法示例。