Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Блокирующее окно?

860
19 марта 2003 года
Abell2000
138 / / 15.01.2003
Hi All.
Есть прога выполняющая много всяких расчетов, хотелось бы на это время вывести окошко сообщающее, что мол идет работа, при этом нужно блокировать лишние телодвижения пользователя. Проблема в том, что если окно выводить через ShowModal, то программа блокируется до его закрытия, а Show не запрещает ввод в основное окно программы???
3
19 марта 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Abell2000
Hi All.
Есть прога выполняющая много всяких расчетов, хотелось бы на это время вывести окошко сообщающее, что мол идет работа, при этом нужно блокировать лишние телодвижения пользователя. Проблема в том, что если окно выводить через ShowModal, то программа блокируется до его закрытия, а Show не запрещает ввод в основное окно программы???



Когда нужно параллельно работать с интерфейсом и вести сложные расчеты, советую создать отдельный поток для расчетов.

860
20 марта 2003 года
Abell2000
138 / / 15.01.2003
Цитата:
Originally posted by Green


Когда нужно параллельно работать с интерфейсом и вести сложные расчеты, советую создать отдельный поток для расчетов.


Поток это конечно хорошо, но уж слишком запарно, особенно когда прога уже готова, может можно как ни будь по другому?

2.0K
20 марта 2003 года
segev
67 / / 19.01.2003
Abell2000
Не совсем ясно, что ты хочешь.
Если нет параллельных потоков и вычисления выполняются внутри ShowModal, то как пользователь может его закрыть ?
Заменить курсор на часики, и вычисляй себе спокойно - пользователь никуда не дернется :)
Разве что Ctrl+Alt+Del или Reset :D
Конечно есть минусы - окно не будет перерисовываться, что не красиво и напрягает юзеров, которым кажется, что прога зависла.
Здесь спасают либо потоки (что правильно), либо периодические вызовы Application->ProcessMessages() (что обычно проще и соответственно быстрее реализовать).
442
21 марта 2003 года
HexoGenus
121 / / 20.03.2000
Цитата:
Originally posted by Abell2000
Hi All.
Есть прога выполняющая много всяких расчетов, хотелось бы на это время вывести окошко сообщающее, что мол идет работа, при этом нужно блокировать лишние телодвижения пользователя. Проблема в том, что если окно выводить через ShowModal, то программа блокируется до его закрытия, а Show не запрещает ввод в основное окно программы???



Извините ... не зная сути программы сложно придумать что-то кроме двух вариантов:

1. Создать функцию которая при необходимости переведет все элементы на экране в состояние Enabled=false, и создать булевую переменную которая будет определять возможность закрытия программы на данный момент. (сложно представить что в такой ситуации сможет сделать пользователь лишнего)

2. В окне которое появляется по ShowModal ты можешь в событии OnActivate прописать все те расчеты что должна программа сделать за время блокировки или вызывать оттуда функцию другого окна которая и выполнит расчеты... по завершении этой функции окно у тебя должно закрыться и все :)

Есть еще варианты но они как мне кажется сложнее...

860
22 марта 2003 года
Abell2000
138 / / 15.01.2003
Уточняю про суть проги. В разные моменты времени прога выполняет РАЗНЫЕ расчеты (поэтому запихнуть все в одну функцию не удастся) и нужно на это время повесить окно, чтоб пользователь не дергался (напр. На 1ой закладке PageControla заносим данные, а на 2ой получаем результат их обработки, на OnChanging производим расчет, и если не показать какого-нибудь сообщения, то выглядит, как будто прога тормозит при переключении закладок). Должно быть, что-то типа: WarnBox->Show(); расчет; WarnBox->Close(); но если в это время кликать по другим кнопкам меню, то как только WarnBox закроется они все сработают и Enabled/Disabled здесь не поможет. Я так думаю, надо как-то запретить этому окну терять фокус, но вот как?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог