2013-10-07 2 views
-1

Привет, у меня есть lisview с большим количеством предметов в нем (10-20k). Это виртуальный (OwnerData). Мне нужно получить что-то вроде AListItem.visible, а не в OnDataEvent. Существует метод MakeVisible, но нет другого свойства, связанного с видимостью :(Идеальный, если есть массив VisibleItems [] (который обновляется по прокрутке, изменению размера и viewStyleChange). Любые идеи о том, как я могу это сделать?Delphi. Как получить видимое свойство ListViewItem?

+0

Как вы собираетесь его использовать? – MBo

+0

Есть тяжелые фоновые работы по загрузке изображений (они динамически создаются из других ресурсов). У меня есть 1 изображение в секунду, поэтому я могу 't делать это по данным – DimDim

ответ

3

Используйте сообщение LVM_ISITEMVISIBLE.

+0

Это работает, спасибо ListItemVisible: = SendMessage (List.Handle, $ 1000 + 182 {LVM_ISITEMVISIBLE}, ListItem.Index, 0) <> 0; – DimDim

+2

Если у вас еще нет константы сообщения 'LVM_ISITEMVISIBLE' определенный в 'CommCtrl.pas', определяют его как' const LVM_ISITEM VISIBLE = LVM_FIRST + 182' вместо использования жестко закодированных магических чисел. – TLama

+0

182 - это тоже волшебство) – DimDim