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?想听听高人的意见。

解决方案 »

  1.   

    cArrCtlName[0]:=Self.Components[i].Name;不就行了,每个控件都有name属性,你管他是什么控件呢
      

  2.   

    每个从Components继承下来的组件都有Name,但是如果你要只是判断指定的几类控件,除了写if else还真没有什么好的办法。
      

  3.   

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

  4.   

    再有一种办法就是用RTTI去赋值,有就赋值,没有也没事
      

  5.   


    ...对。用.tag。每个控件都有一个vcl控件都有一个.tag属性。可写可读的。