On-line: гостей 10. Всего: 10 [подробнее..]
АвторСообщение



Пост N: 413
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 06.04.26 11:28. Заголовок: Странное поведение INKEYGUI()


Странное поведение INKEYGUI()

Обновил MiniGui на свою голову . всё- ж работало годами :(

Была кнопка "Отменить" при генерации всяких отчётов и обработках файлов . По ней делалась отмена таких операций .
Всё как обычно - в цикле обработки по записям ставился INKEYGUI() ....

Кликнул мышкой - всё - переменной ESP_PRESSED присваивалось .T. и программа понимала что дальше ничего не делаем и возвращаемся ...


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



UPD:
Оказывается , теперь везде нужно ещё использовать DO EVENTS
Раньше всё и без этого обрабатывалось ....


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 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
})


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 414
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 07.04.26 10:54. Заголовок: Раньше так и работал..


Раньше так и работало . Со старым пакетом Harbor Mini Gui и BCC5.5 ( года 3 не обновлялся - уже и не помню что за версия была) ...
Как только обновился - сразу полезли косяки ... потихоньку устраняем проблемы перехода .
Винда всё та же (семёрка) ...

Я понял , что в моих случаях лучше использовать DO EVENTS :)

Всем спасибо :)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4880
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.04.26 11:06. Заголовок: Softlog86 пишет Я по..


Softlog86 пишет
 цитата:
Я понял , что в моих случаях лучше использовать DO EVENTS


DO EVENTS дает возможность работать GUI интерфейсу
InkeyGui(...) приостанавливает работу тек. программы (на min 10 миллисекунд) и дает возможность работать GUI интерфейсу, для больших обработок данных - это большее время работы, возможно не лучший способ ловить отмену операций цикла по базам

Спасибо: 1 
ПрофильЦитата Ответить



Пост N: 415
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 07.04.26 12:07. Заголовок: Экспериментальным пу..


Экспериментальным путём это и было установлено : DO EVENTS
не замедляет работы по обработке в циклах и хорошо отлавливает нажатие кнопки "STOP" как в моём случае ....
На этом и остановимся :)

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 17
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет