|
|
|
Как сделать красивый выход по Esc
|
|||
|---|---|---|---|
|
#18+
Добрый день господа! Подскажите плиз как сделать красивый выход по Esc в такой ситуации: Есть функция FUN1 в корой работает сложный SELECT. Она может вызываться из других функций, форм и т.д. в разных уровнях вложенности. Если пользователь устал ждать выполнения этого Selecta, то он хочет нажать Esc и выйти в ту форму или программу из которой была вызвана FUN1. Как это сделать красиво, не перебирая при выходе по Esc все уровни вложенности вызывающих программ. И еще вопрос: если Fun1 вызывалась по Form1.Knopka.Click - то как вернуться туда же из Fun1 вариант RETURN TO Form1.Knopka.Click не работает. Vfp6 Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 10:34 |
|
||
|
Как сделать красивый выход по Esc
|
|||
|---|---|---|---|
|
#18+
t03Добрый день господа! Подскажите плиз как сделать красивый выход по Esc в такой ситуации: Есть функция FUN1 в корой работает сложный SELECT. Она может вызываться из других функций, форм и т.д. в разных уровнях вложенности. Если пользователь устал ждать выполнения этого Selecta, то он хочет нажать Esc и выйти в ту форму или программу из которой была вызвана FUN1. Как это сделать красиво, не перебирая при выходе по Esc все уровни вложенности вызывающих программ.Решение не красивое, а ленивое и жутко опасное. Вызывающие программы могут создавать временные ресурсы или изменять состояние системы перед вызовом подпрограмм. "не перебирая при выходе по Esc все уровни вложенности вызывающих программ" в принципе не гарантируется, что система будет возвращена в исходное консистентное состояние. По-хорошему, все подпрогаммы должны уметь принимать в виде результата признак отмены процесса и коректно обрабатывать эту ситуацию - ничего трудного в канализации ошибок нет. И из вашего текста несовсем понятно, как обрывается выполнение оператора в однопоточном-то фоксе. ON ESCAPE чтоле? Тем не менее, можно поднимать исключение при отмене операции пользователем. В этом случае стек действительно будет свернут до первой подпрограммы, в которой есть обработчик ошибок. В поздних версиях есть try..catch, в шестерке придется извращаться с событием Error. Что то вроде: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Надеюсь, принцип понятен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 16:21 |
|
||
|
Как сделать красивый выход по Esc
|
|||
|---|---|---|---|
|
#18+
Спасибо - бум думать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 17:06 |
|
||
|
Как сделать красивый выход по Esc
|
|||
|---|---|---|---|
|
#18+
t03Добрый день господа! Подскажите плиз как сделать красивый выход по Esc в такой ситуации: ... Можно красиво, только переписать все прийдется. Есть так называемый "параноидальный" стиль программирования. Параноидальность состоит в проверке результатов каждой операции. Т.е. каждая процедура/функция возвращает успешность своего завершения. В кратце так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 22:27 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34929555&tid=1588557]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
81ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 406ms |

| 0 / 0 |
