在Delphi 2010中有没有办法迭代任何类型的索引属性(比如Pages of TPageControl)?
答案 0 :(得分:2)
如果我理解正确,您希望通过RTTI迭代这些属性,而无需了解有关属性及其索引值的任何信息。 因为有效的索引值不能是整数值序列,所以这是不可能的。可能存在具有字符串索引或使用对象引用作为索引值的属性。并且RTTI中没有机制来查询可用于迭代的有效索引值。
答案 1 :(得分:1)
不,这是不可能的,因为没有标准模式:
这就是为什么某些类具有枚举器的原因:它是告诉for ... in语句如何枚举它的模式。
然而,您可以做的是最佳估计:
最后,可以"retrofit" TPageControl with a GetEnumertor using class helpers(或者如果基础类型是记录,则记录助手)。