ListView мерцает при заполнении записями

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

ListView мерцает при заполнении записями

Сообщение Pantalone » 13.01.2006 (Пт) 18:35

Это происходит если при добавлении выполнять DoEvents
Как бы это безобразие прекратить?

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

Сообщение alibek » 13.01.2006 (Пт) 18:57

Не выполнять DoEvents.
Lasciate ogni speranza, voi ch'entrate.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 13.01.2006 (Пт) 19:17

Тогда вообще не видно что он заполняется и прога висит, юзер бесится :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.01.2006 (Пт) 19:32

Показать юзеру окно "Добавляю записи"...

Или прекратить вызывать DoEvents как только количество добавленных записей превысит количество одновременно отображаемых...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 13.01.2006 (Пт) 19:47

Чтобы юзер не бесился, выдавать информацию в Statusbar типа "добавлено 5 записей"

Я не вижу смысла вообще в Doevents, поскольку, раз идёт добавление, работать со списком, по всей видимости, нельзя :?:
Но если очень хочется, можно делать Doevents, но не при каждом добавлении, а, скажем 1 раз за 10 добавлений.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 13.01.2006 (Пт) 19:56

Но если записей много нужно дать возможность юзеру прервать, без DoEvents как это сделать?
И даже если не через одну, а через 10 записей его вызывать, то все равно лист мигает, выглядит очень некузяво.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 13.01.2006 (Пт) 20:41

ListBox.visible=false, а на его место что-нибудь...
Изображение

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 13.01.2006 (Пт) 20:47

мда

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 13.01.2006 (Пт) 21:06

keks-n писал(а):ListBox.visible=false, а на его место что-нибудь...


Что-нибудь - это форма с кнопкой Cancel. Можно вместо visible=False использовать ф-ю LockWindowUpdate.

RUSYA
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 22.07.2005 (Пт) 20:17
Откуда: Харьков

Сообщение RUSYA » 15.01.2006 (Вс) 23:23

юзать API
А как оно на самом деле - Х.З. !

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.01.2006 (Пн) 5:30

Как ие конкретно, не подскажешь?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: ListView мерцает при заполнении записями

Сообщение Andrey Fedorov » 16.01.2006 (Пн) 8:19

Pantalone писал(а):Это происходит если при добавлении выполнять DoEvents
Как бы это безобразие прекратить?


LockWindowUpdate ListView1.hWnd
... Твой цикл
LockWindowUpdate 0

И показывать окошко ожидания, к тут уже советовали.

Еще лучше - разобраться с тормозами и убрать их нафиг.
В большинстве случаев это вполне возможно, поверь.
Тогда и DoEvents писать не придется.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


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

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

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

    TopList  
cron