我有一个自绘的组合框,可以在其中的多列中显示字符串。如果能够通过某种方式将列规格传递给OnDrawItem事件,那么绘图例程就可以在多个组合框之间共享。一个自然的方法是将列宽度数组存储在ComboBox.Tag属性中并将其强制转换回数组。
当我定义列数组时:
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);
我可以看到数组元素,但是数组不知道它的长度。它似乎比实际长度要长,而且包含各种随机值。
我已经尝试使用动态数组,但是那样的话,我甚至无法得到正确的列值。