Страница: 1 |
Страница: 1 |
Вопрос: Обновление Label3.Caption в цикле.
Добавлено: 11.08.08 06:59
Автор вопроса: Dima78
Есть форма. По нажатию кнопки запускается код, который проводит некие операции. Все работает как надо. Захотел сделать прогресс-бар и под ним надпись, типа, "Обработана строка 1 из 1000". Прогресс-бар работает, но Label не виден. Т.е. он обновляется, если вставить msgbox после каждого MyExportForm.Label3.Caption = "Обработана строка 1 из 1000", но на экране виден, что msgbox подвигать поверх формы. Такое ощущение, что отрисовка не идет во время итераций. Вот пример кода:
For a = 1 To 100000 Step 1
UserForm1.TextBox1.Value = a
Next a
End Sub
Так вот здесь я не увижу в поле TextBox1 значений 1,2,3,4 .....99999. Но увижу 100000 в конце цикла. Как можно сделать так, чтобы видеть текст в момент изменения цикла?
Спасибо.
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #1
Добавлено: 11.08.08 07:10
Я обычно ставлю Label на форму с прогресс-баром, отображаю ее (Show), затем в нужном месте пишу в Caption что нужно и затем перерисовываю форму через Repaint. Все работает. Примерно вот так:
UserForm1.Label.Caption = a
Next a
Номер ответа: 2
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #2
Добавлено: 11.08.08 07:10
UserForm1.Label.Caption = a
UserForm1.Repaint
Next a
Номер ответа: 3
Автор ответа:
Dima78
Вопросов: 2
Ответов: 4
Профиль | | #3
Добавлено: 11.08.08 07:35
О, супер, все работает. Спасибо!!
Номер ответа: 4
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #4
Добавлено: 11.08.08 12:52
For a = 1 To 100000
UserForm1.Label.Caption = a
 oEvents
Next a
лучше так ИМХО
Номер ответа: 5
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #5
Добавлено: 11.08.08 13:00
Тоже можно. Просто я как правило все перерисовки/обновления экрана и т. д. отключаю перед расчетом. А оставляю только эту маленькую форму обновлятся. Чтоб пользователь не дергался нажать что-либо.
Номер ответа: 6
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #6
Добавлено: 11.08.08 13:57
пользователь может захотеть переключится на идущее на фоне любимое порно.
или там просто посерфить инет.
а у него будет все тормозить нещадно.
Номер ответа: 7
Автор ответа:
Dima78
Вопросов: 2
Ответов: 4
Профиль | | #7
Добавлено: 11.08.08 14:52
Прогресс-бар в этом случае (а он тоже обновляется в этом же цикле вместе с Label) выглядит как синяя полоска, т.е. не в утопленном виде с границами, а просто полоса. Как будто ProgressBar1.Appearance = ccFlat, а не ProgressBar1.Appearance = cc3D. Да и код выполняется 2 секунды, порно не успеть посмотреть )
Номер ответа: 8
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #8
Добавлено: 12.08.08 08:21
порно