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


Форумы  :: FAQ FoxPro

Почему созданный массив или переменную не "видно" в других методах формы
Дата: 30.03.05 16: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 5123 Владимир Максимов 01.03.05 22:13
  Почему созданный массив или переменную не "видно" в других методах формы 7467 Владимир Максимов 30.03.05 16:37
  Как перехватить нажатие на крестик в правом верхнем углу формы 9586 Владимир Максимов 01.04.05 08:45
  Почему параметры, переданные в форму "видно" только в INIT-формы 5906 Владимир Максимов 22.08.05 19:43
  Как из модальной формы вернуть несколько значений 8133 Владимир Максимов 06.11.06 00:46
  Как из модальной формы, открытой через Show(1) вернуть значение 5897 Владимир Максимов 06.11.06 00:51


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

On-line: 1 (Гостей: 1)

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