When I create the listview (SysListView32) using only API functions and
macros,
it works equal to the VCL control, so I think it´s not a delphi problem (I
have IE5/W98, and comctl is version 5.8).
Note: the flick in the repaint of the selecfted items is small if you have
a fast CPU, but it´s very noticeable
on low end computers (and worse when you scroll selecting items).
Explorer DOES NOT use a virtual listview (at least it don´t have set the
LVS_OWNERDATA style), and many others programs, like MSICache Explorer or
even Winzip 7 (they works with many thousands of items) don´t use it at all
(but they manage the items data, I think), so the question is, HOW THESE
PROGRAMS tell the listview control that it has N items without adding them
(changing the Items.Count property or sending the corresponding message
doesn't work when you don´t have set LVS_OWNERDATA style), and I´m really
sure they don´t add many (and I mean MANY, example:>6000) thousands of
items (with many subitems) in a fraction of second.
Note: I'm still looking for a comercial program that use a virtual list
view and manage very large amount of items, it seems that nobody uses that,
even Micro$oft .. ;-)
Are there undocumented features ??? Or there is another way (the virtual
list view didn´t exist until comctl 4.7 - IE3, so before it, they use
something diferent)
I´m going to try with SoftIce to see what they use.
Thanks a lot and keep delphing !!! ;-)
Note to everyone who reads this: If you have used a TListview
(SysListview32) to display QUICKLY (virtual list view) many thousands of
item, please, please tell me how to avoid the ugly and slow repaint of the
selected items.
Or if you did this without using a virtual list view (you are probably a
genius of programming), and it worked FAST, please,please tell me how you
did that!!!!!
Explorer uses the notification message and thus only calculates what the
image for an item is on an as needed basis. By using the notification
message, you can defer setting a wide variety of things in the listview and
treeview. For more information on this, see MSDN.
> Note: I'm still looking for a comercial program that use a virtual list
> view and manage very large amount of items, it seems that nobody uses
that,
> even Micro$oft .. ;-)
While it's not commercial, GXExplorer uses it at
http://www.gexperts.com/gxexplorer. I haven't noticed any flicker but
perhaps my CPU is fast.
Cheers,
Gerald