вывод текста во время длиной обработки данных

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Real_I
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 23.03.2003 (Вс) 10:55

вывод текста во время длиной обработки данных

Сообщение Real_I » 12.04.2003 (Сб) 17:26

как выводить на форму текст (например какие данные сейчас обрабатываются) когда программа обрабатывает какие нибудь данные
на обычные контролы label и textbox ничерта не выводится.

goro
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 03.12.2002 (Вт) 11:45
Откуда: Украина, Запорожье

Сообщение goro » 12.04.2003 (Сб) 17:36

Перед каким то действием тебе нужно сделать задержку в программе для вывода текста, а потом продолжить загрузку.
ПРЕВЕД

mad_Max
Бывалый
Бывалый
 
Сообщения: 203
Зарегистрирован: 15.09.2002 (Вс) 21:17
Откуда: Russia, Cherepovets

Сообщение mad_Max » 12.04.2003 (Сб) 23:20

Попробуй после присваивания Label.Caption нужного значения сделать Label.Refresh или вставь в цикл обработки данных DoEvents.

Real_I
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 23.03.2003 (Вс) 10:55

Сообщение Real_I » 14.04.2003 (Пн) 18:00

goro писал(а):Перед каким то действием тебе нужно сделать задержку в программе для вывода текста, а потом продолжить загрузку.


И как зделать эту задержку???

Damage
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 06.04.2003 (Вс) 18:31
Откуда: Москва

Сообщение Damage » 14.04.2003 (Пн) 19:31

Просто в тело цикла вставь DoEvents.
У меня всё работает.

moderator
Модератор
Модератор
 
Сообщения: 1896
Зарегистрирован: 10.12.2001 (Пн) 18:11
Откуда: Украина, Харьков

Сообщение moderator » 14.04.2003 (Пн) 20:06

Damage писал(а):Просто в тело цикла вставь DoEvents.
У меня всё работает.


Если смысл писать DoEvents в любом более-менее длинном цикле.

В зависимости от сложности цикла стоит писать DoEvents в начале и в конце цикла.

Некоторые (М.Г. - привет! :wink: ) любят писать нечто такое:
Код: Выделить всё
DoEvents : DoEvents : DoEvents


т.е. кучу DoEvents в одной строчке :wink:
Модератор
http://www.vbstreets.ru / moderator@vbstreets.ru

... Почетные награды: [*], [+], [!]. Все еще впереди...

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 15.04.2003 (Вт) 9:40

Кстати, а что конкретно DoEvents такое?
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Damage
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 06.04.2003 (Вс) 18:31
Откуда: Москва

Сообщение Damage » 15.04.2003 (Вт) 9:46

Цитата из MSDN:
Fields execution so that the operating system can process other events.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.04.2003 (Вт) 9:47

DoEvents указывает, что программа прервется, чтобы выполнить какое-то внешнее прерываение, например перерисовать окно, отработать нажатие клавиши и т.п. Оно незаменимо в случаях, когда (например), на форме есть кнопка Cancel, чтобы отменить какую-то длительную операцию -- если не указать DoEvents, то эта кнопка никогда не нажмется, пока процедура не завершиться.
Метод Refresh отвечает только за перерисовку.

Если твоя процедура не должна прерываться на середине, лучше используй Refresh (Label1.Refresh или, лучше, Me.Refresh). DoEvents трудно прогнозировать.
Lasciate ogni speranza, voi ch'entrate.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 15.04.2003 (Вт) 9:52

Понимаете, я вот почему спрашиваю:
Частенько, когда прога при загрузке что то мощное рисует на форме или делает длительные расчеты, я не могу увидить результат на экране. Прога просто вешается и приходиться её снимать по Ctrl+Break. Значит, я думаю что мне надо DoEvents вставлять в цикл.
Но тут модератор писал что в зависимости от требования этот DoEvents надо вставлять в разные места кода. К чему это ведет?
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Damage
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 06.04.2003 (Вс) 18:31
Откуда: Москва

Сообщение Damage » 15.04.2003 (Вт) 9:54

Ага даст. У меня остеновка происходит по изменению состояния CheckBox'а.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.04.2003 (Вт) 9:55

Где вставишь, там и прервется. Обычно его ставят внутрь самого внутреннего цикла :)
Но если тебе нужно просто видеть результаты, лучше делай Refresh.
Lasciate ogni speranza, voi ch'entrate.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 15.04.2003 (Вт) 9:56

alibek писал(а):Где вставишь, там и прервется. Обычно его ставят внутрь самого внутреннего цикла :)
Но если тебе нужно просто видеть результаты, лучше делай Refresh.


Прервется, в смысле, подождет прерывания, и если нету то продолжит цикл?
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.04.2003 (Вт) 10:00

Нет, выполнение цикла в любом случае продолжиться. Просто в том месте, где стоит DoEvents, будут отработаны события (Events), такие как Click, Paint, Resize и т.п.
Lasciate ogni speranza, voi ch'entrate.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 15.04.2003 (Вт) 10:01

Аа....... сенькс, а то действительно не знал что делать.... :oops:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 59

    TopList