У меня есть нарисованный владельцем комбобокс, который отображает строки в колонках. Процедура рисования может быть общей для всех комбобоксов, если я могу каким-то образом передать спецификации столбцов в событие 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);
Я могу видеть элементы массива нормально, но массив не знает своей длины. Он кажется намного длиннее со всевозможными случайными значениями.
Я пробовал использовать динамический массив, но тогда я даже не получаю нужных значений столбцов.