129 / 31 / 3
Регистрация: 03.08.2010
Сообщений: 630
1

Оптимизация ListView

28.02.2011, 21:07. Показов 1275. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть функция, на вход которой подаётся
Delphi
1
var sbItems: arTStrings; var cpItems: arString
Delphi
1
2
type arTStrings = array of TStrings;
type arString = array of string;
В sbItems содержатся SubItem'ы будущих Item'ов. В cpItems содержатся Caption'ы будущих Item'ов.

Вот сама функция:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  with FormMain.ListGame do
  begin
    Clear;
    count := Length(gameList) - 1;
    if count > FormMain.spnMaxCount.value then
      count := FormMain.spnMaxCount.value;
    if count > 0 then
      FormLoadScreen.Showload;
    {На вышеприведенные мусор не обращайте внимание. Это просто подсчёт
     количества Item'ов и вычистку ListView'а}
    for i := 0 to count do
    begin
      FormLoadScreen.SetCount(i, count); //Это чисто техническая. Не обращайте внимания
      li := Items.Add; //Добавляем пустой Item
      li.Data := gameList[i]; //Приписываем ему объект
      li.Caption := cpItems[i]; //Приписываем ему Caption
      li.ImageIndex := -1; //Приписываем пустой значок
      li.SubItems := sbItems[i]; //Приписываем SubItem'ы
      li.SubItemImages[9] := 2; //Одному из SubItem'ов приписываем значок
    end;
  end;
  FormLoadScreen.HideLoad;
Данный метод работает очень медленно. Уже поздно, поэтому зависимость Time(count) пока проводить не буду. Но при count = 13500 заполняет 18 секунд на не самом медленном процессоре! Есть возможность оптимизировать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2011, 21:07
Ответы с готовыми решениями:

Оптимизация записи в БД из ListView
Есть ListView с текстом и CheckBox, при загрузке приложения значения ListView заполняются из БД. ...

ListView и правильность\оптимизация кода
Приветствую всех. Вопросов несколько: 1. Запутался с последовательностью выполнения команд 2....

Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация
Много много лет назад, на заре становления профессии "оптимизатора" в какой то умной книжке был...

Оптимизация методом Ньютона (нахождение точки минимума). Оптимизация кода
MATLAB только начал осваивать. Попытался реализовать нахождение точки минимума методом Ньютона...

3
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
01.03.2011, 11:00 2
Либо штудировать и задействовать методы TListItems.BeginUpdate/EndUpdate
либо задействовать виртуальный режим ListView, что более оправдано при таких объемах данных
0
129 / 31 / 3
Регистрация: 03.08.2010
Сообщений: 630
01.03.2011, 11:41  [ТС] 3
Пытался использовать методы BeginUpdate/EndUpdate, но не сильно помогло. А как использовать виртуальный режим?
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
01.03.2011, 11:53 4
в справке же пример есть ..
0
01.03.2011, 11:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2011, 11:53
Помогаю со студенческими работами здесь

ListView. После добавления кнопки перестал быть доступен сам ListView
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам...

Как правильно скролить ListView который находится внутри другого ListView?
Доброго! Впихнул один ListView во внутрль другого, получил интересный эффект... если жмакнуть по...

Listview вывод данных и переход по нажатию на другой Listview SQLite
Доброго извините за название темы, долго не мог сформировать название, В общем у меня беда с...

Отобразить в ListView подробную информацию об объекте, выбранном в другом ListView
Имеется класс Диск и класс Трек. Класс Диск содержит лист треков. На форме имеется 2 listView'а, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru