紧急关于怎么简化下面的代码

紧急求教:关于如何简化下面的代码
if   Self.Components[i]   is   TcxMemo   then
begin
    cArrCtlName[0]:=TcxMemo(Self.Components[i]).Name;
end
else   if   Self.Components[i]   is   TcxLabel   then
begin
    cArrCtlName[0]:=TcxLabel(Self.Components[i]).Name;
end
else   if   Self.Components[i]   is   TMemo   then
begin
    cArrCtlName[0]:=TMemo(Self.Components[i]).Name;
end;
.....
这里cArrCtlName是一个数组,这里如何才能简化掉代码,否则如果我要判断几十个控件,难不成要写几十个if   else?想听听高人的意见。

------解决方案--------------------
cArrCtlName[0]:=Self.Components[i].Name;不就行了,每个控件都有name属性,你管他是什么控件呢
------解决方案--------------------
每个从Components继承下来的组件都有Name,但是如果你要只是判断指定的几类控件,除了写if else还真没有什么好的办法。
------解决方案--------------------
探讨
引用:
cArrCtlName[0]:=Self.Components[i].Name;不就行了,每个控件都有name属性,你管他是什么控件呢

的确,是都有name属性,问题是我不仅仅是赋name的值给数组,还包括Cursor,OnClick(一些其它属性、还有事件)等...