Автор | Сообщение |
|
| |
Пост N: 113
Зарегистрирован: 05.11.05
|
|
Отправлено: 13.07.17 10:52. Заголовок: Программа не отвечает
Бывает такое - программа занята выполнением каких-то действий. При этом стоит ее свернуть-развернуть или еще как-то мышкой покликать по ней и винда говорит что она не отвечает. При этом перестают показываться изменения в окне программы, которые показываются, если ее не трогать, т.е., видимо, если фокус не уходит. Я знаю, что это стандартное поведение винды, но оно раздражает. Кто-нибудь обходил это? И если да, то как?
|
|
|
Ответов - 7
[только новые]
|
|
|
| постоянный участник
|
Пост N: 1588
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.07.17 11:56. Заголовок: rvu пишет Бывает так..
rvu пишет цитата: | Бывает такое - программа занята выполнением каких-то действий. |
| Разбавляйте свои длительные действия командой DO EVENTS или функцией DoEvents(), т.к. не даете обрабатывать очередь. nDo := 0 DO WHILE ! EOF() nDo++ If nDo > 10 DO EVENTS nDo := 0 EndIf SKIP ENDDO
|
|
|
|
| |
Пост N: 114
Зарегистрирован: 05.11.05
|
|
Отправлено: 13.07.17 12:29. Заголовок: Спасибо!..
Спасибо!
|
|
|
|
| |
Пост N: 198
Зарегистрирован: 05.11.05
|
|
Отправлено: 16.12.19 09:58. Заголовок: SergKis пишет: Разб..
SergKis пишет: цитата: | Разбавляйте свои длительные действия командой DO EVENTS или функцией DoEvents(), т.к. не даете обрабатывать очередь. |
| А что делать, если идет индексация большого файла? Там же команда одна - INDEX ON, а может идти долго. Как-то оформить потоком? Выделить ресурсы? Хотя бы в эту сторону смотреть?
|
|
|
|
| Администратор
|
Пост N: 3903
Зарегистрирован: 23.05.05
|
|
Отправлено: 16.12.19 10:05. Заголовок: rvu пишет: А что де..
rvu пишет: цитата: | А что делать, если идет индексация большого файла? Там же команда одна - INDEX ON, а может идти долго. |
| В команде индекс есть опции Eval и Every. В качестве Eval можно воткнуть вызов DoEvents(), а Every - вызов для каждой ну скажем 100-й записи
|
|
|
|
| |
Пост N: 87
Зарегистрирован: 22.04.15
|
|
Отправлено: 01.01.20 00:42. Заголовок: или покажи прогресс ..
или покажи прогресс выполнения действия через PROGRESSBAR - и наглядно для пользователя + коммент, типа "Подготовка данных...", и самому , я так делаю где требуется некоторое время выполнения - вроде еще нигде не замыкало)
|
|
|
|
| постоянный участник
|
Пост N: 6557
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.01.20 14:27. Заголовок: Нашёл способ вешать ..
Нашёл способ вешать программу с "плавающей" ошибкой: cAdres := ALLTRIM(ALIAS()->ADRESPRN) cFont := GetProperty(cForm, "Label_Adres", "Fontname") nWlbl := GetProperty(cForm, "Label_Adres", "Width") nHlbl := GetProperty(cForm, "Label_Adres", "Height") // функция из MiniGUI\SAMPLES\BASIC\ButtonEx_DynamicMenu nFSize := GetFontSize4Text( cAdres, cFont, , .F. , nWlbl, nHlbl ) SetProperty(cForm, "Label_Adres", "Fontsize" , nFSize) // изменить размер фонта SetProperty(cForm, "Label_Adres", "Value" , cAdres) Если поле пустое, то программа вешается наглухо !
|
|
|
|
| |
Пост N: 1509
Зарегистрирован: 20.02.11
|
|
Отправлено: 10.01.20 18:10. Заголовок: Andrey пишет: Нашёл..
Andrey пишет: цитата: | Нашёл способ вешать программу с "плавающей" ошибкой |
| Надо найти способ проверять значение перед сменой размера шрифта а вообще это самый частый косяк , мне тоже лень везде проверки ставить
|
|
|
|