Избавляйтесь от лишних прорисовок, потому что они могут отнимать время. Допустим, что у вас на форме есть компонент ListViewl типа TListView В нем находятся 1000 пиктограмм, необходимо удалить содержимое и загрузить новые 1000 элементов. Процесс достаточно прост, но только на первый взгляд.

Если просто очистить элементы методом ClearCListViewl.Items.Clear) и потом в цикле добавлять новые, то процесс будет долгим и заметным даже невооруженным взглядом. Это связано с тем, что после вставки в список нового элемента автоматически происходит перерисовка экрана. Но зачем ее делать, ведь будет добавлен еще один элемент? Наиболее эффективным будет запретить прорисовку, а осуществить ее только после очистки содержимого и добавления всех элементов. Для данного случая проблема решается с помощью такой записи:

ListViewl.Items BeginUpdate; ListViewl Items.CI ear; // Добавление элементов Li stVi ewl.Items.EndUpdate:

Метод BeginUpdate указывает компоненту, что сейчас начнется массовое обновление и прорисовки компонента не будет. Метод EndUpdate завершает обновление, и после этого компонент автоматически прорисовывается. При следующих добавлениях или изменениях прорисовка также будет происходить автоматически.

Этот пример также работает и с компонентом дерева TTreeView. Обязательно запрещайте автоматическую перерисовку при массовом изменении содержимого, чтобы не тратить лишнее процессорное время.

2.8. Сложные расчеты || Оглавление || 2.10. Буферизация вывода


Delphi в шутку и всерьез: что умеют хакеры



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31