| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Как сделать задумчивый курсор? |
| Автор: Kbl4AH 8.12.2008, 16:42 | ||
| Здравствуйте. Подскажите, плиз. У меня по нажатию кнопок в окне программа довольно долго думает. Мне бы хотелось, чтоб во время раздумий был курсор - песочные часики. Делаю:
|
| Автор: CodeMonkey 8.12.2008, 17:40 | ||
Как насчёт:
? |
| Автор: Kbl4AH 10.12.2008, 15:39 | ||
| CodeMonkey, спасибо, все хорошо. А можно пояснить, что это:
|
| Автор: Poseidon 10.12.2008, 15:49 |
| ProcessMessages позволяет выполнить очередь сообщений, которые накапливаются для приложения. |
| Автор: Kbl4AH 10.12.2008, 15:57 | ||
Ага, это я понял.
Только мне не понятен 2-й пример? Почему так? И что, теперь Application.ProcessMessages после каждой конструкции писать нужно? И зачем в примере CodeMonkey вставлен try finally? |
| Автор: Poseidon 10.12.2008, 16:07 |
| В примере просто показывается, что даже когда работает цикл (читай, выполняются ресурсоемкие действия) сообщения для приложения обрабатываются. Т.е. его можно "тягать", жмакать на кнопочки. А если ProcessMessages убрать, то пока цикл не выполнится, приложение не будет отвечать, т.е. появится ощущение что программа зависла. А вдруг у тебя там ошибка времени выполнения. Что тогда будет, без try finally? Курсор обратно кто менять будет? А с try finally есть гарантия, что даже при ошибках курсор будет изменен на crDefault |
| Автор: Kbl4AH 10.12.2008, 16:16 | ||
Что значит вдруг? Я для этого программу и отлаживаю, чтоб их не было... Получается - с одной стороны, везде нужно втыкать Application.ProcessMessages и try..finally, а с другой, они усложняют программу. Нужно искать золотую середину? |
| Автор: CodeMonkey 10.12.2008, 16:16 |
| А книжу в руки не проще взять? Или хотя-бы электронный вариант? http://www.delphikingdom.ru/lyceum/seminar.asp?ID=6-там? |
| Автор: Kbl4AH 10.12.2008, 16:23 | ||
Да я уж почитал про try..except..finally в нете... Только не понял зачем это в конкретном примере? Ведь для того, что бы ситуаций не возникало не нужных, защита от дураков и делается... А то читаю форум и везде на этот try..finally натыкаюсь... Создается чувство, что это какая-то дань модному стилю... Хотя, наверняка, я ошибаюсь... Добавлено через 3 минуты и 54 секунды Отдельное спасибо! |
| Автор: Kbl4AH 10.12.2008, 16:50 |
| Фишка была в том, чтобы написать не Cursor :=; а именно Screen.Cursor. |
| Автор: MetalFan 11.12.2008, 13:23 | ||||
кста, можно наверняка менее ресурсоемко "перерисоваться". например так:
|
| Автор: Poseidon 11.12.2008, 16:34 | ||
|
| Автор: Kbl4AH 11.12.2008, 16:37 | ||
каюсь |