我有一个所有者绘制组合框,显示列中的字符串。如果我能以某种方式将列规格传递给OnDrawItem事件,则可以在组合中共享绘图例程。一种自然的方法是,将ComboBox.Tag属性中的列宽度数组传递给数组,然后将其转换回数组。如何将数组转换为指针并返回到Delphi?
当我定义列阵列为:
const arrWidth :array[1..4] of integer = (100,100,100,70);
和Tag属性设置为:
ComboBox.Tag := integer(@arrWidth);
,然后在的OnDrawItem事件,将它转换回的数组:
Widths :array of integer;
Widths := pointer(ComboBox.Tag);
我可以看到数组元素罚款,但数组不知道它的长度。随着各种随机值的出现似乎要长得多。
我一直在使用动态数组试过,但后来我甚至不得到适当的列值。
替代不涉及存储在标签阵列的指针包括写入存储在专用于任务属性的值的后代,并存储在一个关联阵列(像TDictionary)列宽映射combo-框实例转换为宽度数组。 – 2011-12-14 17:41:20