:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки ::
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  


Форумы  :: FAQ FoxPro

Почему созданный массив или переменную не "видно" в других методах формы
Дата: 30.03.05 15:37:04 ОтветитьЦитировать

Проблема

В одном из методов формы или одного из ее объектов я создаю массив или переменную. Почему я не могу использовать этот массив или переменную в других методах и событиях, как самой формы, так и ее объектов. Например, как источник данных для ComboBox.

Причина

По умолчанию, если область видимости переменной памяти или массива не указана явно через команды PUBLIC, PRIVATE или LOCAL, то для такой переменной памяти или массива устанавливается область видимости PRIVATE. Т.е. команда DIMENSION (DECLARE) создаст массив с областью видимости PRIVATE.

Это значит, что созданный в методе формы или одного из ее объектов массив будет автоматически уничтожен по завершении того метода, в котором этот массив был создан.

Решение

Есть два принципиальных способа решения

  1. Установить область видимости массива PUBLIC
  2. Создать дополнительное свойство (Property) типа массив

По ряду причин, назначение локальному объекту области видимости PUBLIC - это не очень хорошая идея. В данном случае, под "локальным объектом" подразумевается массив, поскольку он нужен "локально", в пределах одной формы.

Наилучшим решением будет создание дополнительного свойства (Property) типа массив. Такое свойство можно создать как программно, используя метод AddProperty(), так и в дизайнере формы через пункт меню "Form", подпункт "New Property" или "Edit Property/Method".

Признаком того, что данное свойство является массивом, служит указание размерности. Например:

ThisForm.AddProperty("aArray[1,1]")
Размерность такого массива впоследствии можно изменять программно, через команду Dimension. Например:

DIMENSION ThisForm.aArray(10,2)
Теперь Вы можете из любого объекта формы обратиться к данному массиву, поскольку он является неотъемлемой частью самой формы.



Отредактировано (20.07.05 20:46)


------------------
Ratings: 0 negative/0 positive


Тема Просмотров Написано Написано
  Form 4669 Владимир Максимов 01.03.05 21:13
  Почему созданный массив или переменную не "видно" в других методах формы 6571 Владимир Максимов 30.03.05 15:37
  Как перехватить нажатие на крестик в правом верхнем углу формы 8494 Владимир Максимов 01.04.05 07:45
  Почему параметры, переданные в форму "видно" только в INIT-формы 5269 Владимир Максимов 22.08.05 18:43
  Как из модальной формы вернуть несколько значений 7090 Владимир Максимов 05.11.06 23:46
  Как из модальной формы, открытой через Show(1) вернуть значение 5053 Владимир Максимов 05.11.06 23:51


Извините, но у вас нет прав для того, чтобы писать в этом форуме.

On-line: 50 and Guests: 50


© 2006 Fox Club 
Яндекс.Метрика