Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Мерцание TListBox [D7, XP]


Страницы:   1 2 3

kukuikar ©   (2010-07-30 14:32:00) 

Здравствуйте, мастера.
Есть длинный цикл

for i := 0 to 300000 do
 begin
 ...
 ...
 ListBox1.Items[ListBox1.Items.Count - 1] := 'la-la-la - ' + IntToStr(i + 1);
 end;


Можно ли уменьшить или вообще убрать мерцание ListBox?


KilkennyCat   (2010-08-01 21:43:00) [1]

Удалено модератором


Vladimir   (2010-08-01 21:33:00) [2]

Удалено модератором
Примечание: Задай свой вопрос в отдельной ветке


kukuikar   (2010-07-31 15:45:00) [3]

уже можно успокоиться


Плохиш   (2010-07-31 13:57:00) [4]

Achtung, Partizanen. Feuer!!!


kukuikar   (2010-07-31 12:37:00) [5]


> DVM ©   (31.07.10 11:49) [41]

понял, спасибо большое. буду копать дальше сам.


DVM   (2010-07-31 11:49:00) [6]


> kukuikar ©   (31.07.10 09:58) [38]


> я не добавляю в цикле строки, а назначаю последней строчке
> новое значение на каждом шаге цикла

Я примерно понял что у тебя делается, напрное много-много строчек это уже обработанные файлы, да? А в последней строчке текущий обрабатываемый файл и там рядом с его именем типа процента выполнения, угадал?

Если так, то дам простой совет: не обновляй ListBox на каждой итерации цикла, обновляй через 1000 итераций или как то еще, смысла в очень частом обновлении да таком что листбокс перерисовываться не успевает и мерцает нет.

Короче то что я написал выше + двойная буфферизация и еще в идеале виртуальный режим полностью решат твою проблему.


kukuikar   (2010-07-31 10:42:00) [7]


> Игорь Шевченко ©   (31.07.10 10:13) [39]

А.С. Пушкин


Игорь Шевченко   (2010-07-31 10:13:00) [8]


> в данном случае листбокс отображает прогресс выполнения
> парсинга файла


О сколько нам открытий чудных
Готовят просвещенья дух.
И опыт, сын ошибок трудных,
И гений, парадоксов друг.


kukuikar   (2010-07-31 09:58:00) [9]


> DVM ©   (30.07.10 17:58) [21]

дело в том что не будет в листбоксе 300000 строк.
в данном случае листбокс отображает прогресс выполнения парсинга файла, собственно говоря я не добавляю в цикле строки, а назначаю последней строчке новое значение на каждом шаге цикла:
ListBox1.Items[ListBox1.Items.Count - 1] := 'la-la-la - ' + IntToStr(i + 1);


_Юрий   (2010-07-31 09:37:00) [10]

Удалено модератором


Германн   (2010-07-31 03:12:00) [11]

Удалено модератором


Германн   (2010-07-31 01:55:00) [12]

Удалено модератором


Smile   (2010-07-31 00:21:00) [13]

Удалено модератором


KilkennyCat   (2010-07-30 22:12:00) [14]


> Amoeba_   (30.07.10 18:02) [22]
>
>
> > 1) Так ли уж надо иметь в ListBox такое большое число
> элементов.
> >  В них же неудобно ориентироваться будет.
>
> И не только неудобно, а просто невозможно.

ну эт вы напрасно, навигационности можно помочь, да и есть она там, хоть и в зачаточном состоянии.
но в целом да, смысла в визуальности такого громадного списка совершенно нет, если, конечно, не требуется его отобразить весь на громадном мониторе


KilkennyCat   (2010-07-30 21:20:00) [15]

Удалено модератором


KilkennyCat   (2010-07-30 21:19:00) [16]

Удалено модератором


Leonid Troyanovsky   (2010-07-30 18:20:00) [17]


> Palladin ©   (30.07.10 18:16) [28]

> о... второй раз это не я...

Бывает.
А DVM никто не преследовал, IMHO, токмо развили мысль
о хранилище данных.

--
Regards, LVT.


Leonid Troyanovsky   (2010-07-30 18:17:00) [18]

Удалено модератором


Palladin   (2010-07-30 18:16:00) [19]

Удалено модератором


Palladin   (2010-07-30 18:13:00) [20]

Удалено модератором


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо