2016-02-01 2 views
0

ValidationOptions под TcxTextEdit.Properties содержит evoRaiseException, evoShowErrorIcon и evoAllowLoseFocus.Программно заданные параметры проверки для TcxTextEdit

Как можно установить их либо True, либо False?

Например:

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

Несомненно, это неправильный способ проверки. Задав параметры проверки при выходе. Чего вы пытаетесь достичь? –

ответ

3

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 пример использования.

Смежные вопросы