有一种方法可以用Tcomponent做一个case语句吗?我的意思是:
begin
case Form1.Components[i] of
TEdit: //do something;
TMenuItem: //Do Something;
TButton: //Do Somtehing;
end;
end;
我知道可以这样做:
if (Form1.components[i] is TEdit) then
...
但我想知道if case语句是否可能。
问候。
答案 0 :(得分:6)
不,那是不可能的。案例陈述仅支持ordinal types。序数类型是预定义类型Integer,Char,WideChar,Boolean和声明的枚举类型,因此不包括类,字符串甚至浮点数。
案例陈述
case语句可能提供深度嵌套的可读替代方法 如果条件限制。案例陈述的格式为:
case selectorExpression of caseList1: statement1; ... caseListn: statementn; end
其中 selectorExpression 是序数类型的任何表达式 小于32位(字符串类型和大于32位的序数 无效)....
答案 1 :(得分:4)
Case IndexStr(Form1.Components[i].classname, ['TEdit', 'TButton', 'TmenuItem', 'etc...']) of
0: ..code..; // TEdit
1: ..code..; // TButton
2: ..code..; // TMenuItem
-1: ShowMessage('Not Present'); // not present in array
else
ShowMessage('Default Option'); // present, but not handled above
end;
答案 2 :(得分:1)
不,那是不可能的。 case语句需要枚举类型,类类型不是。