ValidationOptions
下的 TcxTextEdit.Properties
包含evoRaiseException
,evoShowErrorIcon
和evoAllowLoseFocus
。
如何将这些内容设置为True
或False
?
例如:
procedure TfrmMain.cxTextEdit1Exit(Sender: TObject);
begin
if cxTextEdit1.Text = EmptyStr then
begin
evoRaiseException := true; ????
end
end;
答案 0 :(得分: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用法示例。