powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Форма не ждет реакции пользователя
6 сообщений из 6, страница 1 из 1
Форма не ждет реакции пользователя
    #33617770
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Подозреваю, что построение моей программы "хромает", но никак не могу додуматься почему. Поэтому спрашиваю совета.
Программа базируется на форме as top level с меню.
В main.prg
Код: plaintext
1.
DO FORM mainbody
mainbody.do
В методе DO этой формы
Код: plaintext
1.
...
READ EVENTS
Соответственно команда CLEAR EVENTS находится в методе формы, который обрабатывает выход.
Из меню запускаю разные методы. В том числе запускаю MyFormSet.Do (WindowsType=Modal) и выполняю SHOW для нужной формы этого FormSet'a. Форма появляется. Это все присказка. А теперь сказка.
На форме из formset'a нажимаю кнопку cmd1. По click выставляются нужные свойства и выполняется код THISFORM.Hide. В методе Hide ничего не записано. Форма скрывается, объект formset остается. И программа зависает. Она теряет цепь выполнения команд. В Debuger'e stack пуст. Указатель следующей команды выполнения отсутствует. Почему так? Следующими командами в MyFormSet.Do я хочу обработать ответ пользователя ...
...
Рейтинг: 0 / 0
Форма не ждет реакции пользователя
    #33617858
АлександрК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убери метод с READ EVENTS и вынеси его за форму. Примерно так:

DO FORM mainbody
...
READ EVENTS

* Здесь действия по завершению приложения
CLOSE DATABASES ALL
...........

Вот здесь хорошая статья по организации стартового файла.
...
Рейтинг: 0 / 0
Форма не ждет реакции пользователя
    #33618017
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
1. Статью читал.
2. Все оказалось проще: вместо THISFORM.Hide стал использовать THISFORM.Release
PS Извиняюсь за название топика. Хотел спросить про одно, а в итоге спросил про другое.
...
Рейтинг: 0 / 0
Форма не ждет реакции пользователя
    #33618785
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Игорь!

> В том числе запускаю MyFormSet.Do (WindowsType=Modal) и выполняю SHOW для
> нужной формы этого FormSet'a.
> На форме из formset'a нажимаю кнопку cmd1. По click выставляются нужные
> свойства и выполняется код THISFORM.Hide.

Спрятав форму формсета, ты никак не повлиял на формсет в целом - даже БЕЗ
видимых форм он остаётся "видимым" - а т.к. он модальный, то исполнение
программы останавливается на команде запуска формсета. Так что "прятать"
надо весь формсет.
Почему работает Form.Release() - потому что свойство AutoRelease формсета
очевидно у тебя установлено по умочанию в .T. - и упомянутая форма является
для формсета единственной (ну или все прочие к тому моменту уже тоже
уничтожены) - поэтому по её убиении закрывается и весь формсет.
Это одна из причин почему я вообще не советую использовать формсеты -
слишком мало пользы при слишком большом числе вредных последствий (которые
надо учитывать, т.е. раздувать свой код - иначе будут вот такие "чудеса"
происходить).

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форма не ждет реакции пользователя
    #33618938
Кузнецов Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Igor Korolyov
Да действительно свойство AutoRelease формсета установлено по умочанию в .T., так как ожидаю что формсет поведет себя соответственно описанию этого свойства. А именно: формсет будет уничтожен, когда будет уничтожена последняя из его форм. Уничтожена, а не скрыта как у меня. К моменту описанного явления формсет не уничтожен и имеет Visible=.T., а три его формы имеют Visible=.F. и тоже не уничтожены. С одной формой поработал, а вернутся в метод формсета сумел, только уничтожив форму с которой поработал.
В общем то меня в основном интересует на какую команду какого метода программа попыталась перескочить в моем случае? Наверное больше для самообразования, так как практически выход из ситуации уже нащупан.
...
Рейтинг: 0 / 0
Форма не ждет реакции пользователя
    #33625529
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Игорь!

> В общем то меня в основном интересует на какую команду какого метода
> программа попыталась перескочить в моем случае?

Видимо ни на какую не переходит - т.е. она "висит" на Formset.Show(1) или DO
FORM ... - смотря что за формсет и как он "запущен".

Если тебе не нужен формсет после "прятанья" формы, то видимо стоит вместо
Form.Hide вызывать другой метод, который проверит - а не является ли
"скрываемая" форма "последней видимой" в формсете, и если это так то
вызывать ThisFormset.Hide() - иначе просто ThisForm.Hide()
Наверное можно попытаться перекрыть собственно Hide формы - но учитывать
там, что при входе в метод текущая форма ещё не спрятана... Хотя мне это
кажется не столь надёжно.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Форма не ждет реакции пользователя
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]