Проблема
В одном из методов формы или одного из ее объектов я создаю массив или переменную. Почему я не могу использовать этот массив или переменную в других методах и событиях, как самой формы, так и ее объектов. Например, как источник данных для ComboBox.
Причина
По умолчанию, если область видимости переменной памяти или массива не указана явно через команды PUBLIC, PRIVATE или LOCAL, то для такой переменной памяти или массива устанавливается область видимости PRIVATE. Т.е. команда DIMENSION (DECLARE) создаст массив с областью видимости PRIVATE.
Это значит, что созданный в методе формы или одного из ее объектов массив будет автоматически уничтожен по завершении того метода, в котором этот массив был создан.
Решение
Есть два принципиальных способа решения
- Установить область видимости массива PUBLIC
- Создать дополнительное свойство (Property) типа массив
По ряду причин, назначение локальному объекту области видимости PUBLIC - это не очень хорошая идея. В данном случае, под "локальным объектом" подразумевается массив, поскольку он нужен "локально", в пределах одной формы.
Наилучшим решением будет создание дополнительного свойства (Property) типа массив. Такое свойство можно создать как программно, используя метод AddProperty(), так и в дизайнере формы через пункт меню "Form", подпункт "New Property" или "Edit Property/Method".
Признаком того, что данное свойство является массивом, служит указание размерности. Например:
ThisForm.AddProperty("aArray[1,1]")
Размерность такого массива впоследствии можно изменять программно, через команду Dimension. Например:
DIMENSION ThisForm.aArray(10,2)
Теперь Вы можете из любого объекта формы обратиться к данному массиву, поскольку он является неотъемлемой частью самой формы.