![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Индекс строки ListView [D7, XP]
Ivanov Ivan © (2008-09-17 08:26:00)Добрый день! У меня имеется ListView(4 столбца и около 100 строк), который заполняется при запуске программы(каждый раз по-разному). Подскажите, plz, можно ли проиндексировать его строки? Т.е. i-тый индекс должен содержать в себе информацию о i-той строке. Индексирование должно происходить при заполнении ListView.
Dennis I. Komarov (2008-09-17 10:23:00) [1]
> Просто нужно пока форма открыта и если происходят изменения
> в базе касательно данных из листвью
это не данные, и с ними не надо ничего делать, просто когда это надо юзеру сделать навый запрос и отобразить результат заного
> Кстати кнопку пробовал, listView тоже ''дергается''
Он не дергается, а перерисовывается при кождом изменении - "спрячь" его на время обновления и все...
Ivanov Ivan (2008-09-17 10:09:00) [2]А данные у меня в нем и не хранятся. ListView заполняется данными при открытии формы. Просто нужно пока форма открыта и если происходят изменения в базе касательно данных из листвью, надо эти изменеия вносить. Кстати кнопку пробовал, listView тоже ''дергается''
Dennis I. Komarov (2008-09-17 09:59:00) [3]1. Компонент TListView предназначен для отображения данных, а не для хранения. Меняй логику.
2. Выкини таймер, поставь кнопку обновить
Ivanov Ivan (2008-09-17 09:49:00) [4]Формировать новый-не катит, т.к. ListView "дергается"-сначала исчезают все данные, потом скролл начинает бешено бегать, потом появляются новые данные. При том если изменения не происходили, то зачем обновлять. Кроме того массивы нужны еще для одной цели.
Smile (2008-09-17 09:40:00) [5]А мне представляется, что правильнее по таймеру не сравнивать массив с содержимым ListView, а формировать новый. И кроме того откуда взялась необходимость в каком-то массиве? Формируй ListView из запроса.
Ivanov Ivan (2008-09-17 09:35:00) [6]
> А каким образом ты узнаешь об изменениях в базе?
При открытии формы заполняется ListView данными из БД.Данные получаем в результате запроса, потом эти данные заносим в массив, а уже данными из массива заполняем ListView.
На форме также есть Timer который через определенные промежутки времени делает запрос к базе, заново заполняются массивы. А вот теперь нужно сравнить данные из массивов с данными в ListView.Я для этого и хотел ирспользовать индекс.
Smile (2008-09-17 09:31:00) [7]А как
> Т.е. если во время работы с ListView в базе произошли изменения
> для данных i-той строки, то мне необходимо внести эти изменения
> в эту строку.
А каким образом ты узнаешь об изменениях в базе?
Думается, что когда ты об этом узнаешь, то тебе необходимо вновь сформировать ListView, а не исправлять какую-то ни было строчку (а если количество строк изменится?)
> который заполняется при запуске программы(каждый раз по-
> разному).
MBo (2008-09-17 09:21:00) [8]еще раз - TListView.Items[i]
Ivanov Ivan (2008-09-17 09:18:00) [9]Всех строк. Это надо для внесения изменений в i-тую строку.
Т.е. если во время работы с ListView в базе произошли изменения для данных i-той строки, то мне необходимо внести эти изменения в эту строку. Вот для этого и нужно знать индекс строки.
Кроме того не подскажите функцию для изменения данных в Listview.
Smile (2008-09-17 09:02:00) [10]> Нужно просто знать номер строки ListView
Какой строки? Выделенной (Selected), чекнутой (Checked) или над которой находится мышь?
MBo (2008-09-17 08:56:00) [11]пока ничего не понятно.
TListView.Items не спасает?
Ivanov Ivan (2008-09-17 08:53:00) [12]прошу прощения, не правильно задал вопрос. Нужно просто знать номер строки ListView, не зависимо от информации, которая в ней содержится
brother (2008-09-17 08:33:00) [13]> Т.е. i-тый индексдолжен содержать в себе информацию о i-
> той строке.
индекс чего? в чем индексы то хранить хош?