FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9207
Вход
Form.Release и Form.Refresh для активной формы

Бывают случаи, когда несколько форм обращаются к одним и те же процедурам, по окончании работы которых, форма должна или обновиться или закрыться.


 
Прислал: Каратаев   Категория: Разное


Form.Release и Form.Refresh для активной формы

Бывают случаи, когда несколько форм обращаются к одним и те же процедурам, по окончании работы которых, форма должна или обновиться или закрыться.
Я долго мучался, пытаясь прописать в этих процедурах какая же форма в данный момент у меня открыта (активна) и что именно ее надо закрыть (обновить). Потом нашел выход, который и предлагаю тем, кто подобно мне еще на стадии "мучений".
Две маленькие програмки:
win_rele для закрытия формы
win_ref для обновления
Вызываются из процедуры, формы, откуда угодно.
Do win_rele
Do win_ref
Ниже сами prg-шники (они в принципе одинаковы)

*** win_rele.prg
PRIVATE cWin
cWin = alltrim(WOUTPUT())
if not empty(cWin)
oper = cWin+'.Release'
&oper
endif
RETURN

*** win_ref.prg
PRIVATE cWin
cWin = alltrim(WOUTPUT())
if not empty(cWin)
oper = cWin+'.Refresh'
&oper
endif
RETURN

Конечно это не верх творчества, за что и приношу извинения опытным FoxPro-шникам, но кому то это может и пригодиться.
 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (4.885)
Дополнения пользователей
Form.Release и Form.Refresh для активной формы
[+][?]
Долгих Павел
02.06.02 06:39:58

Вообще такие процедуры лучше всего всавлять в родительский класс для форм и тогда нет нужды
определять к какой это форме, все обращение будет через Thisform. Если необходимо несколько типов
процедур в зависимости от окон, то либо делается несколько родительских классов форм или в одном
процедура делится на несколько ветвей do case. Вообще при работе на Visual Fox необходимо
избавляться от методов работы с неVisual.
Александр
03.06.02 08:16:27

Спасибо за совет. Я согласен, но не до всего сразу доходишь.

Владимир Максимов
25.06.02 11:58:32

Альтернативой может быть использование свойства _SCREEN.ActiveForm примерно так:

IF TYPE("_SCREEN.ActiveForm")="O"
_SCREEN.ActiveForm.Refresh()
ENDIF
Александр
25.06.02 15:33:27

А если просто:
_SCREEN.ActiveForm.Refresh()

[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика