| Автор | Сообщение |
|
|
| |
Пост N: 413
Зарегистрирован: 03.12.08
|
|
Отправлено: 06.04.26 11:28. Заголовок: Странное поведение INKEYGUI()
Странное поведение INKEYGUI() Обновил MiniGui на свою голову . всё- ж работало годами :( Была кнопка "Отменить" при генерации всяких отчётов и обработках файлов . По ней делалась отмена таких операций . Всё как обычно - в цикле обработки по записям ставился INKEYGUI() .... Кликнул мышкой - всё - переменной ESP_PRESSED присваивалось .T. и программа понимала что дальше ничего не делаем и возвращаемся ... Теперь фиг она реагирует на клик мышкой ... Точнее - реагирует (выводит вопрос о прерывании операции) не как раньше - в момент клика , а когда уже завершился цикл (долгая операция обработки) ... Ну и как сейчас реализовать возможность запросы отмены операции - ума не приложу ? UPD: Оказывается , теперь везде нужно ещё использовать DO EVENTS Раньше всё и без этого обрабатывалось ....
|
 |

|
|
Ответов - 4
[только новые]
|
|
|
|
| постоянный участник
|
Пост N: 4879
Зарегистрирован: 17.02.12
|
|
Отправлено: 07.04.26 10:48. Заголовок: Softlog86 пишет тепе..
Softlog86 пишет | цитата: | | теперь везде нужно ещё использовать DO EVENTS |
| k := InkeyGui(...) и DO EVENTS - идентичны, DO EVENTS обрабатывает "условно" все события очереди (и др. приложений тоже), InkeyGui(...) обработку делает на время таймера и обрабатывает его прерывание по мышке и нажатию клавишь | цитата: | | Раньше всё и без этого обрабатывалось .... |
| Возможно это из за windows, код с InkeyGui(...) работает нормально o:Event( 0, {|ow,ky,nn| WaitWindow("... W A I T ...", .T.) FOR nn := 1 TO 10 ky := InkeyGui(500) ? nn, ky IF !Empty(ky) EXIT ENDIF NEXT WaitWindow() ky := ow Return Nil })
|
 |

|
|
|
| |
Пост N: 414
Зарегистрирован: 03.12.08
|
|
Отправлено: 07.04.26 10:54. Заголовок: Раньше так и работал..
Раньше так и работало . Со старым пакетом Harbor Mini Gui и BCC5.5 ( года 3 не обновлялся - уже и не помню что за версия была) ... Как только обновился - сразу полезли косяки ... потихоньку устраняем проблемы перехода . Винда всё та же (семёрка) ... Я понял , что в моих случаях лучше использовать DO EVENTS :) Всем спасибо :)
|
 |

|
|
|
| постоянный участник
|
Пост N: 4880
Зарегистрирован: 17.02.12
|
|
Отправлено: 07.04.26 11:06. Заголовок: Softlog86 пишет Я по..
Softlog86 пишет | цитата: | | Я понял , что в моих случаях лучше использовать DO EVENTS |
| DO EVENTS дает возможность работать GUI интерфейсу InkeyGui(...) приостанавливает работу тек. программы (на min 10 миллисекунд) и дает возможность работать GUI интерфейсу, для больших обработок данных - это большее время работы, возможно не лучший способ ловить отмену операций цикла по базам
|
 |

|
|
|
| |
Пост N: 415
Зарегистрирован: 03.12.08
|
|
Отправлено: 07.04.26 12:07. Заголовок: Экспериментальным пу..
Экспериментальным путём это и было установлено : DO EVENTS не замедляет работы по обработке в циклах и хорошо отлавливает нажатие кнопки "STOP" как в моём случае .... На этом и остановимся :)
|
 |

|
|