powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с обработкой ошибки во внешней форме
17 сообщений из 17, страница 1 из 1
Проблема с обработкой ошибки во внешней форме
    #39994503
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В процессе работы программы вызывается внешняя форма
Код: vbnet
1.
2.
3.
4.
5.
6.
try
	DO FORM (_formname) TO rc
CATCH TO _oerr
	rc=.f.
	=MESSAGEBOX(catcherr(_oerr))
ENDTRY 


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

Кто-нить сталкивался с такой проблемой?
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39994678
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamis,

Вполне возможно чего то не знаю.
Но что такое
Код: sql
1.
DO FORM (_formname) TO rc 



Что вообще вы имели ввиду этими "TO"

Изобретение собственного синтаксиса?
И фокс не ругается?
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39994679
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdor, в хэлп загляни
http://www.foxclub.ru/rhproject/project/html/a727f12a-4d9f-45ca-aa01-c1bea7de9749.htm TO VarName

Указывает переменную для хранения значения, возвращаемого формой. Если переменная еще не существует, Visual FoxPro автоматически создаст ее. Используйте команду RETURN в процедуре события Unload формы для указания возвращаемого значения. Если вы не указали возвращаемое значение, то будет возвращено дефолтное true (.T.). Если вы используете TO, то свойство формы WindowType должно быть установлено в 1 (Modal). Если процедура события Init формы возвращает .F., экземпляр формы не будет создан,и процедура события Unload не вернет значения в VarName.

glamis, думаю надо пример кода с демонстрацией ошибки.
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39994680
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
asdor, в хэлп загляни
http://www.foxclub.ru/rhproject/project/html/a727f12a-4d9f-45ca-aa01-c1bea7de9749.htm%5DTO]http://www.foxclub.ru/rhproject/project/html/a727f12a-4d9f-45ca-aa01-c1bea7de9749.htm]TO VarName



Сорян. И правда. Просто не использую модальных форм. Никогда. Потому конструкция вызвала удивление)
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39994689
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос решил: помогла конструкция NAME:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
_vName=sys(2015)
try
	Do FORM (_formname) NAME (_vName) to rc
catch to _oerr
	messagebox(catcherr(_oerr))
	&_vName..release
Endtry



При штатном завершении
isnull(&_vName)=.t.

PS. макрос использую, тк в моем случае возможно рекурсивное использование
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39994984
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamis
макрос использую, тк в моем случае возможно рекурсивное использование

Рекурсивное использование модальной формы?
Ох... готовьтесь хлебнуть)
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39995354
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdor,
Использую, давно и очень успешно. Только не надо понимать рекурсию как расчет факториала.
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39995452
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamis
PS. макрос использую, тк в моем случае возможно рекурсивное использование

Тут достаточно объявить переменную как LOCAL
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39995457
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamis
asdor,
Использую, давно и очень успешно.

Вызов из одной модальной формы, другой, неизбежно приведет к "недоразумениям".
Модальная форма, она потому и модальная, что кроме нее, больше ничего на экране не доступно.
Вы же нарушаете этот принцип.
И говорите что все ок.
Ну-ну)

Если же речь, об обычных формах, то конечно все в порядке, сколько угодно, но тогда вызов в первом топике, не верен.
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39995462
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdor
Вызов из одной модальной формы, другой, неизбежно приведет к "недоразумениям".

С чего вдруг? Например одна форма вызвала форму выбора из справочника, там вызвали форму добавления в справочник, там выбор из другого справочника и т.д. В чем криминал?

Если использовать просто DO FORM, то проблем нет, а если код-обертку glamis`а, то будет проблема с используемыми переменными т.к. по умолчанию область видимости PRIVATE.
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39995467
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
В чем криминал?

Криминала нет, если форма не модальная.
В случае модальной первой, и последующих форм, регулярно происходит, не знаю каким образом, но модальная форма прячется за основную, основная недоступно, программа висит.
Это основное что вспомнил. На фоксклубе обсуждали как то это. Не помню какие еще глюки.
Кстати, трудно воспроизводимые при отладке. Но когда пользователей много, то это регулярно.
Я просто отказался от модальных. Только messagebox)))

В фреймвоке, реализовал "псевдомодальность".
Т.е. при вызове, "псевдомодальной" формы, делаю недоступной вызывающую (enable=.f.)
При закрытии, обратно все разрешаю.
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39995475
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdor
Dima T
В чем криминал?

Криминала нет, если форма не модальная.
В случае модальной первой, и последующих форм, регулярно происходит, не знаю каким образом, но модальная форма прячется за основную, основная недоступно, программа висит.

Моя прога на 6 фоксе (учет товара в магазине) из только модальных форм отработала более 10 лет в ежедневном режиме на 20+ рабочих местах и ни разу не было ничего подобного.

Нынче тоже использую модальные для ожидания ввода из справочников, только вызываю через Form.Show(1), тут тоже никогда не видел данной проблемы.

Такую проблему я наблюдал, но причиной ее был вызов SetFocus() на контрол первой формы, вроде по таймеру на той же первой форме, может по событию какому-то, не помню.
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39995511
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Это не единственная проблема.
Работает - повезло)
Подход, в принципе, не верный. ИМХО.

Но я бы, работающее, трогать не стал))))

вот навскидку, первое попавшееся
http://forum.foxclub.ru/read.php?29,614664,page=1
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39995585
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdor
Это не единственная проблема.
Работает - повезло)
Подход, в принципе, не верный. ИМХО.

Отчасти согласен, иногда работать с такой прогой не очень удобно, но писать в таком стиле проще. Той проги уже нет. В нынешних модальные вызовы свел к минимуму, но они есть. Сейчас у меня все формы немодальные, но если надо чтобы форма что-то вернула, и потом с этим чем-то дальше в коде надо работать, то тут я ее вызываю модально.
В общем я криминалом модальные формы не считаю.

asdor
вот навскидку, первое попавшееся
http://forum.foxclub.ru/read.php?29,614664,page=1

По ссылке похоже тот же старый косяк с фокусом, только фокус не явно в коде отправляется не туда, а с помощью свойств AllwaysOnTop, AllwaysOnBottom.

К сожалению VFP9 дописывали быстро-быстро, а потом вообще забросили, поэтому не успели все косяки нормально устранить.
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39995873
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
У модальной формы есть одно, я считаю, главное преимущество - она управляет процессом. Переключиться из нее можно только туда, куда она разрешит (прописано в сценарии). Иначе - начинается бардак в работе пользователя. Мало ли что ему взбредет в голову... Видел я таких пользователей, которые чуть не экран пытались пододвинуть под курсор от мыши.
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39995949
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamis
Dima T,
У модальной формы есть одно, я считаю, главное преимущество - она управляет процессом. Переключиться из нее можно только туда, куда она разрешит (прописано в сценарии). Иначе - начинается бардак в работе пользователя. Мало ли что ему взбредет в голову... Видел я таких пользователей, которые чуть не экран пытались пододвинуть под курсор от мыши.

Нет такого преимущества.
Модальная форма, останавливает ход программы, на своем вызове, и продолжает после ее закрытия.

Я понимаю старье, нет смысла дорабатывать.
Но новое так писать... Оглянитесь немного, на другие языки. Везде - модальность зло. Почти что паблик)))
...
Рейтинг: 0 / 0
Проблема с обработкой ошибки во внешней форме
    #39995975
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdor,
Спор о преимуществах и недостатках метода не имеет смысла в отрыве от конкретики. Модальная форма живет по принципу - можно только то что разрешено, модлес - можно то что доступно.

Кто сказал, что модал останавливает программу - модал переключает программу на исполнение конкретного действия. И только. Грубо говоря во время ввода наименования контрагента или его ИНН можно переключиться и начать ввод наименование номенклатуры. И не закончив с номенклатурой начать просматривать курс валют. Но зачем? Закончи с контрагентом, переключись на номенклатуру, и тд. Хотя никто не запрещает предусмотреть все эти возможности в модале.

Главное не мода на тип формы, а конкретные потребности системы. В конце-концов в каждый конкретный квант времени человек делает какое-то одно действие. Вот и пусть сделает. А прога его подождет.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с обработкой ошибки во внешней форме
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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