![]() |
:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки :: | ![]() |
![]() |
Л и с о в о д ы в с е х с т р а н, о б ъ е д и н я й т е с ь !!! |
Как проверить факт существования переменной памяти, поля таблицы, метода формы | ||
---|---|---|
Вопрос
Как проверить факт существования переменной памяти, поля таблицы, метода формы и т.п. ? Ответ В большинстве случаев такая проверка может быть осуществлена с помощью функции TYPE(). В качестве вычисляемого значения в эту функцию передается тот объект, факт существования которого проверяем. Если в результате получаем значение отличное от "U", то это означает, что такой объект существует. Как проверить факт существования переменной памяти IF TYPE("m.MyVar") = "U" * Переменной памяти с именем MyVar - не существует ENDIF Как проверить факт существования поля таблицы (курсора, View) Если таблица (курсор, View) уже открыта в текущей DataSession, то IF TYPE("MyTableAlias.MyField") = "U" * Для таблицы, открытой с алиасом MyTableAlias * не существует поля с именем MyField ENDIF Если таблица включена в контейнер базы данных, то открывать саму таблицу (View) не обязательно. Проверить факт существования нужного поля можно так: IF InDBC("MyTable.MyField","FIELD") = .F. * Для таблицы, включенной в контейнер базы данных под именем MyTable * не существует поля с именем MyField ENDIF Как проверить факт существования (использования, открытия) формы IF TYPE("_VFP.Forms('MyForm')")="U" * Формы со свойством name = MyForm не существует (не открыта) ENDIF Обратите внимание, что здесь используется системная переменная _VFP. Использовать аналогичный синтаксис с системной переменной _SCREEN - не получиться. Коллекция _SCREEN.Forms() не принимает в качестве параметра символьные значения. Только числовые. Кроме того, данный способ не сработает для форм, имеющих значение совйства ShowWindow = 2 - As Top-Level Form. В этом случае придется просто перебирать весь массив _SCREEN.Forms() или _VFP.Forms() LOCAL lnI, loForm loForm = NULL FOR lnI=1 TO _SCREEN.FormCount loForm = _SCREEN.Forms(m.lnI) IF m.loForm.Name = "MyForm" * Нашли форму со свойством Name = "MyForm" EXIT ENDIF loForm = NULL ENDFOR IF IsNull(m.loForm) = .T. * Формы со свойством name = MyForm не существует (не открыта) ENDIF Как проверить факт существования метода, события или свойства в используемом объекте IF TYPE("_VFP.Forms('MyForm')")="O" AND PEMStatus(_VFP.Forms('MyForm'),'MyMethod',5) = .T. * Открыта форма со свойством name = MyForm * и в этой форме существует метод, событие или свойство с именем MyMethod ENDIF Для форм, со свойством ShowWindow = 2 - As Top-Level Form данный способ не годится. Придется также перебирать все элементы массива _SCREEN.Forms() как и в предыдущем примере. Замечание Кроме приведенных способов есть и другие варианты проверки факта существования того или иного объекта. Причем от версии к версии количество способов растет, поскольку появляются все новые команды и функции. Исправлено: Владимир Максимов, 30.12.06 15:35 ![]() |
||
Тема | Просмотров | Написано | Написано |
---|---|---|---|
![]() |
5342 | Владимир Максимов | 01.03.05 22:02 |
![]() ![]() |
9351 | Владимир Максимов | 22.03.05 10:41 |
![]() ![]() |
13041 | Владимир Максимов | 20.04.05 18:31 |
![]() ![]() |
15173 | Владимир Максимов | 01.05.05 12:17 |
![]() ![]() |
9239 | Владимир Максимов | 25.09.05 13:31 |
![]() ![]() |
7483 | Владимир Максимов | 22.02.06 22:00 |
![]() ![]() |
17388 | Владимир Максимов | 04.03.07 14:17 |
![]() ![]() |
10173 | Владимир Максимов | 25.02.08 18:32 |
© 2006 Fox Club  |