![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как можно получить Item.Data в TListView.OnData? [D6, WinME]
Igor-NN © (2002-02-07 19:14:00)В событие TListView.OnData передаются параметры Sender и Item. Я пытаюсь внутри процедуры события получить Item.Data, но всё время приходит nil, хотя я установил этот параметр, когда добавлял запись в ListView через AddItem. В исходниках VCL стоИт
FTempItem.FData := Pointer(lParam)перед вызовомOwnerDataFetch(FTempItem, Request)т.е. параметр Data по идее должен был бы передаваться. В чём грабли?
Igor-NN (2002-02-08 12:24:00) [1]Не... не грохал :) Оказывается, я ошибся, всё как раз наоборот: если я не присвою значение Item.Data в OnData, то и не получу его в остальных модулях, т.е. значение Data должно присваиваться из обработчика OnData. А жаль, всё было так хорошо задумано :)
Юрий Федоров (2002-02-08 11:04:00) [2]Все должно работать. Посмотри повнимательней, где ты сам грохнул
эту data
Igor-NN (2002-02-08 10:48:00) [3]>...а сам ListView не фига не хранит
Пробовал: если я присвою ListView.Items[...].Data, я могу его потом считать.
>Только Item.Index вполне адекватен - по нему и надо
>ориентироваться.
Нда... только вызов ListView.Items[Item.Index].Data приводит в OnData к переполнению стека. Это хорошо, когда данные хранятся во внешней коллекции, но это неудобно, т.к. например, при перестановке элементов списка приходится переставлять и элементы этой коллекции. Можно ли хранить всё это дело в самом списке, или я много захотел? :)
DMN (2002-02-07 20:31:00) [4]Так OnData - оно для виртуальных списков. И заполняется элемент по запросу в этом самом OnData. А сам ListView не фига не хранит - ни data, ни caption, ни subitems... Только Item.Index вполне адекватен - по нему и надо ориентироваться.