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
. . .
Вы не назначаете все значения True
или False
, но значения добавляются в набор или они не являются.
Элементы set
являются порядковые значения которых могут быть получены с помощью функции System.Ord
:
anIntVariable := Ord(evoShowErrorIcon);
При отсутствии явного значения не присвоен элементу в set
, элементы начинаются с 0
.
Значение может быть явно назначен элементу в set
нравится следующим образом:
TMyCustomSet = set of (mcsTriangle = 3, mcsHexagon = 6, mcsNonagon = 9);
Смотри также Structured Types (Delphi) - Sets, System.Ord и System.Include and System.Exclude пример использования.
Несомненно, это неправильный способ проверки. Задав параметры проверки при выходе. Чего вы пытаетесь достичь? –