![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
Здравствуйте.
Подскажите, плиз. У меня по нажатию кнопок в окне программа довольно долго думает. Мне бы хотелось, чтоб во время раздумий был курсор - песочные часики. Делаю:
|
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
Как насчёт:
? -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
CodeMonkey, спасибо, все хорошо.
А можно пояснить, что это:
Это сообщение отредактировал(а) Kbl4AH - 10.12.2008, 15:40 |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 9 Всего: 133 |
ProcessMessages позволяет выполнить очередь сообщений, которые накапливаются для приложения.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
Ага, это я понял.
Только мне не понятен 2-й пример? Почему так? И что, теперь Application.ProcessMessages после каждой конструкции писать нужно? И зачем в примере CodeMonkey вставлен try finally? Это сообщение отредактировал(а) Kbl4AH - 10.12.2008, 16:00 |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 9 Всего: 133 |
В примере просто показывается, что даже когда работает цикл (читай, выполняются ресурсоемкие действия) сообщения для приложения обрабатываются. Т.е. его можно "тягать", жмакать на кнопочки. А если ProcessMessages убрать, то пока цикл не выполнится, приложение не будет отвечать, т.е. появится ощущение что программа зависла.
А вдруг у тебя там ошибка времени выполнения. Что тогда будет, без try finally? Курсор обратно кто менять будет? А с try finally есть гарантия, что даже при ошибках курсор будет изменен на crDefault -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
Что значит вдруг? Я для этого программу и отлаживаю, чтоб их не было... Получается - с одной стороны, везде нужно втыкать Application.ProcessMessages и try..finally, а с другой, они усложняют программу. Нужно искать золотую середину? |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
Да я уж почитал про try..except..finally в нете... Только не понял зачем это в конкретном примере? Ведь для того, что бы ситуаций не возникало не нужных, защита от дураков и делается... А то читаю форум и везде на этот try..finally натыкаюсь... Создается чувство, что это какая-то дань модному стилю... Хотя, наверняка, я ошибаюсь... Добавлено через 3 минуты и 54 секунды Отдельное спасибо! |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
Фишка была в том, чтобы написать не Cursor :=;
а именно Screen.Cursor. |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 50 Всего: 372 |
||||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
кста, можно наверняка менее ресурсоемко "перерисоваться". например так:
-------------------- There are always someone smarter than you... |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 9 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
||||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |