:: Visual Foxpro, Foxpro for DOS
не работает Clear Events
Михаил С
Господа может кто поможет ?!

В главной программе стоит:
oErr=CreateObject('Obr') && класс Obr перед этим создал, с методом ObrabError()
On Error oErr.ObrabError(...)
....
DO FORM form1
Read Events

В методе ObrabError(...) объекта oErr после некоторых действий стоит
Clear Events
По всем описаниям вроде должна программа перейти к команде следующей
за Read Events (где-то читал что это работает как Return to master)
Ни фига не переходит!Проскакавает Clear Events и идёт дальше.
Может я что-то не понимаю?
Ratings: 0 negative/0 positive
Re: не работает Clear Events
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Михаил С!

Например у тебя есть модальная форма, модальный диалог или иное "состояние
ожидания" помимо READ EVENTS - которые и мешают. Если твоя цель корректно
завершить работу - то надо явно позакрывать все формы (если используются
фоксовые репорты то и их), все диалоги (MessageBox в т.ч.) тогда уж и
завершится программа.




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: не работает Clear Events
dushes

Сообщений: 243
Откуда: Россия,Кострома
Дата регистрации: 13.03.2002
Игорь уже предположил возможное местонахождение проблемы, я бы порекомендовал продебажить код...
В методе ObrabError на выражении Clear Events тоставь брякпоинт, и удостоверься, что выполнение кода все-такие доходит до заданной точки, описание твоей проблемы очень скудное, никто не может точнго знать, что у тебя в коде метода ObrabError , может быть у тебя там вообще Exception ;)///




------------------
пиво я не пью...я его ем...
Ratings: 0 negative/0 positive
Re: не работает Clear Events
Михаил С
Спасибо Игорь! К сожалению днём не могу долго быть в форуме.
Форма, в которой произошла ошибка, действительно модальная.
Но, как тогда её закрыть (или удалить, а лучше всё приложение) не возвращаясь в
код, который вызвал ошибку. Имя этой формы я вроде словил по _Screen.Forms(1).Name.

For Dushes: метод ObrabError() просто протоколирует ошибку, а затем мне
нужно выйти из приложения совсем, не возвращаясь в ошиб.код. Давая Clear Events
я и предполагал этого добиться. Брякпойнт я как раз ставил и своими глазками
видел, что после Clear Events ничего не происходит!
Ratings: 0 negative/0 positive
Re: не работает Clear Events
Михаил С
Ура!Спасибо Centory в теме ...Завершить процесс.
Сделал как у него через ExitProcess перед этим сделав Close All
Это то, что мне и надо!
Ratings: 0 negative/0 positive
Re: не работает Clear Events
dushes

Сообщений: 243
Откуда: Россия,Кострома
Дата регистрации: 13.03.2002
на все 100% соглашусь с Игорем, который ответил Centory в той же ветке, что использование ExitProcess не то чтобы не лучшее решение, оно вообще неприемлемое, имхо...использование функций winapi для стандартных вообщем-то ситуаций не есть хорошо, если не получается добиться решения стандартными способами, предусмотренными в самом языке - стоит подумать о пересмотре архитектуры твоего приложения...




------------------
пиво я не пью...я его ем...
Ratings: 0 negative/0 positive
Re: не работает Clear Events
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Михаил С!

Для затравки:

FOR ln1 = _SCREEN.FormCount TO 1 STEP -1
IF TYPE("_SCREEN.Forms(m.ln1).Name") = "C" AND ;
UPPER(_SCREEN.Forms(m.ln1).BaseClass) == "FORM"
* Это форма. Тулбары игнорируем (они никак не помешают закрытию)
loFrm = _SCREEN.Forms(m.ln1)
* Можно что-то сделать с формой - дёрнуть скажем её метод
* чтобы КОРРЕКТНО её закрыть. Хотя можно попробовать и вот так достаточно "жестоко"
m.loFrm.Release()
ENDIF
ENDFOR

Кстати есть такой подход, когда просто ВООБЩЕ исключаются модальные формы из использования - через "блокировки" нужных форм/или даже контролов на них, перекрёстные ссылки (для того чтобы "вернуть результат кому нужно") и т.п.

Из оставшихся проблем - MessageBox (можно прибить по KEYBOARD {Enter} PLAIN), окно PrintPreview...




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: не работает Clear Events
Михаил С
Большое Вам спасибо за время потраченное на меня!
Я, конечно, понимаю, что выход по ExitProcess-это очень жёстко.
Но, если неисправимая ошибка уже случилась (естественно ошибки я определяю
по их неустранимости, всё-таки не такой дурак как кажусь), то у User'a поздно
уже пить боржоми когда почки отвалились.. Надо просто ошибку фиксировать
и выкидывать из приложения, чтобы не вызывать ему потом скорую
психиатр. помощь заставляя отвечать на всякие непонятные ему вопросы.
Ratings: 0 negative/0 positive
Re: не работает Clear Events
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Михаил С!

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




------------------
WBR, Igor
Ratings: 0 negative/0 positive


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

On-line: 32 Victoriacom Равиль dfr  (Гостей: 29)

© 2000-2024 Fox Club 
Яндекс.Метрика